单片机怎么处理相同时间的两个定时中断

如题所述

单片机怎么处理相同时间的两个定时中断
么单片机??
51单片机有一个默认(此时的IP寄存器不做设置)的中断优先级
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断;
优先级是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。
可以通过更改中断优先级寄存器IP的值改变优先级顺序
如下
中断优先级控制器:IP
(IP.7:保留)
(IP.6:保留)
PT2(IP.5):若=1,定时器2中断设为高优先级(只适用于8052及其增强型)
PS(IP.4):若=1,串行中断设为高优先级
PT1(IP.3):若=1,定时器1中断设为高优先级
PX1(IP.2):若=1,外部中断1设为高优先级
PT0(IP.1):若=1,定时器0中断设为高优先级
PX0(IP.0):若=1,外部中断0设为高优先级

一年四季春常在 万紫千红永开花 喜迎新春
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-21

么单片机??
51单片机有一个默认(此时的IP寄存器不做设置)的中断优先级
外部中断0 > 定时/计数器0 > 外部中断1 > 定时/计数器1 > 串行中断;
优先级是逻辑上的优先级,当同时有几种中断到达时,高优先级中断会先得到服务。
可以通过更改中断优先级寄存器IP的值改变优先级顺序
如下
中断优先级控制器:IP
(IP.7:保留)
(IP.6:保留)
PT2(IP.5):若=1,定时器2中断设为高优先级(只适用于8052及其增强型)
PS(IP.4):若=1,串行中断设为高优先级
PT1(IP.3):若=1,定时器1中断设为高优先级
PX1(IP.2):若=1,外部中断1设为高优先级
PT0(IP.1):若=1,定时器0中断设为高优先级
PX0(IP.0):若=1,外部中断0设为高优先级

顺一门有百福 平安二字值千金 万象更新
第2个回答  2011-06-21
可以有3个办法,一个是设定中断优先级,响应一个中断后会响应另一个中断。
另一个是用一个中断用程序写出不同的响应代码,顺序执行两段程序。
第三个是用中断标志位,将两个中断标志,然后马上退出程序,在主程序检查标志位响应相应代码。

单片机怎么处理相同时间的两个定时中断
可以通过更改中断优先级寄存器IP的值改变优先级顺序 如下 中断优先级控制器:IP (IP.7:保留)(IP.6:保留)PT2(IP.5):若=1,定时器2中断设为高优先级(只适用于8052及其增强型)PS(IP.4):若=1,串行中断设为高优先级 PT1(IP.3):若=1,定时器1中断设为高优先级 PX1(IP.2):若=1,...

单片机如何用一个定时器设置两个定时
所以时间要求特别严格的程序,一般建议使用方式2自动载入。可以同时运行,但存在优先级问题,即如果中断同时发生,先执行优先级的。如果有一个中断已经在执行,则其他中断发生时也不会执行。可以 通过设置中断优先寄存器IP,使选的中断可以在其他中断还没完成时,发生二次中断。

51单片机怎么同时开启两个中断的问题?
中断使能,中断允许即此中断已开启。但CPU不可以同时执行两个中断。所以中断分优先级。要优先于高级中断,再开低级中断。当系统有个定时中断。比如定时采集温度值,然后通过串口发送到上位机。这样程序里要用到定时中断和串口中断。处理了定时中断后,再处理的串口中断。

51 单片机 2个定时器 同时工作
你的两个定时器的时间都设成一样的了,当两个定时器到了点后,单片机到底该进行处理那一个啊,所以要么你修改时间,要么你把IP优先寄存器设施下PT0或者PT1等于1,就行了。

关于单片机两个定时器同时工作时的设置情况?
肯定优先级高的定时器0先执行,定时器1在B点执行 如果定时器0的中断程序执行时,肯定会影响定时器1的定时,但不会很严重,并不是每50ms两个中断就重合一次,定时器1的第5次中断被耽误了,后面第10次第15次...就不会再有这个问题了,也可能偶尔会发生,也可能永远不发生了,就好象你跟别人跑,起步晚一...

单片机AT89S52中一个定时计数器能同时做两次定时吗
既然是同时,那还要两次定时干什么呢?你是不是想定两个不同的时间,很明显单靠单片机硬件寄存器是不能的,可通过软件设计完成。例如当第一个定时中断请求来时,通过定时器中断程序定时第二次定时时间。

请问51单片机能不能暂停中断程序并跳转至其它程序中、执行完后跳回中断...
这个是可以做到的。实事上,嵌入式的操作系统的时间片轮转,就是用定时中断,进入定时中断判断并切换上下文,切换到别的任务,执行一段时间再返回原来的流程继续执行。但请注意,正常设计程序时,不要这么做。如果遇到程序中需要用到这种流程控制,有两个办法,重新设计流程,使用嵌入式操作系统。

单片机的多个延时用定时器如何处理?
用定时器,定时1ms,每当到了、中断,就把 n1、n2、n3,分别加一,然后退出中断。在主函数中,分别检测n1、n2、n3是否到了50、30、60,到了,就该干什么就干什么去。用一个定时器,基本就可以满足所有的定时需求。

关于51单片机使用两个定时器进行控制的问题
{ aa=0;D1=1;\/\/LED亮,持续亮两秒,TF1=0;TF0=1;} if(bb==40){ bb=0;D1=0;\/\/LED灭一秒 TF0=0;TF1=1;} } 并且在程序开始处开启定时器1(也就是先执行的定时器),但是要注意,你现在是两个定时器同时工作,应该在if中关闭当前的定时器,并打开另一个定时器 ...

单片机中同时用到同一个中断源怎么办?比如说两次都用到定时器0
在定时器内设置一个计数器。比如定时1s一次中断。int count;count=10时,flag1=1;count=20时,flag2=1;

相似回答