感悟网 导航

单片机定时器,中断的问题

作者&投稿:始琬 (若有异议请与网页底部的电邮联系)
单片机定时器中断的问题~

这个程序你要明白几个知识点
1、这个中断函数是每1毫秒(12M晶振下)执行一次。
2、return:执行return之后,整个函数返回了,return之后的代码不在执行。

看你的代码

beep=-beep;应该是个喇叭什么的吧,只要中断函数执行,喇叭就会响。

如果L_LED等于0的时候,t会自加到150,在没有达到150之前,都会运行return,所以,这段时间是不会运行t=0;DelayMS(20);的,所以这段时间里中断美毫秒执行一次,DEEP也就每毫秒取反,输出方波,驱动喇叭

同理 L_LED等于1的时候,也是一样的原理

当达到条件运行DelayMS(20);的时候,程序中断会再这里空耗20毫秒,这20毫秒时间里,DEEP没有输出方波,喇叭就不响了。

应该看懂了吧,好好想想,想不通再联系我

把while(1)里面的去掉

在timer0里面把 P10=0;改成

P10 = ~ P10;

如果还看不出来,把定时的时间加长。


=================
因为你这样,定时器中断刚刚把LED置0,while里面就把LED置1了。太快了,肉眼看不见

1、中断源
IE0/1 外部中断0/1请求标志
IT0/1 外部中断源0/1触发方式控制
TF0/1 定时器T0/1溢出中断标志
RI 串口的接收中断
TI 串口的发送中断
2、中断时能控制
EA CPU中断开放标志
ET0/1/2 定时器T0/1/2中断允许位
ES 串口中断允许位
EX0/1 外部中断0/1允许位
3、中断优先级控制
PT0/1/2 定时器T0/1/2中断优先级控制
PS 串口中断优先级控制
PX0/1 外部中断0/1优先级控制

你是初学者吧,你可以到我文库里看一本叫 “教你初学单片机”的文档,看完以后你自己就会明白了哈

这个程序你要明白几个知识点
1、这个中断函数是每1毫秒(12M晶振下)执行一次。
2、return:执行return之后,整个函数返回了,return之后的代码不在执行。
看你的代码
beep=-beep;应该是个喇叭什么的吧,只要中断函数执行,喇叭就会响。
如果L_LED等于0的时候,t会自加到150,在没有达到150之前,都会运行return,所以,这段时间是不会运行t=0;DelayMS(20);的,所以这段时间里中断美毫秒执行一次,DEEP也就每毫秒取反,输出方波,驱动喇叭
同理
L_LED等于1的时候,也是一样的原理
当达到条件运行DelayMS(20);的时候,程序中断会再这里空耗20毫秒,这20毫秒时间里,DEEP没有输出方波,喇叭就不响了。
应该看懂了吧,好好想想,想不通再联系我

《关于51单片机定时器中断的几个问题,》
答:只要TRX为1计数不会停止?不会停。执行中断服务程序后,各定时器是否继续计数?不受影响。在执行T0中断服务程序时,T1定时器溢出,由于优先级,不能执行T1中断服务程序,此时T1定时器各位如何变化?继续。定时器溢出后是否自动清零?清。

《定时器中断溢出的原因及处理办法?》
答:单片机中的定时器溢出时申请的中断,达到计时或计数的目的。并使用定时控制寄存器控制它。其中的:TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。

《单片机定时器,中断的问题》
答:1、中断源 IE0/1 外部中断0/1请求标志 IT0/1 外部中断源0/1触发方式控制 TF0/1 定时器T0/1溢出中断标志 RI 串口的接收中断 TI 串口的发送中断 2、中断时能控制 EA CPU中断开放标志 ET0/1/2 定时器T0/1/2中断允许位 ES 串口中断允许位 EX0/1 外部中断0/1允许位 3...

《单片机实验“定时/计数器及中断”的一些问题》
答:1.2)void Timer0_Int(void)是定时器0中断函数,每行作用如下:第一行:重新设定定时器高位寄存器初值 第二行:重新设置定时器低位寄存器初值 第三行:如果P1_0 IO口是高电平则改为低电平,如是低电平改为高电平 整体实现的功能:P1_0 IO口高低电平1秒切换一次 妈呀,这么多问题,网上找找,应该...

《51单片机定时器中断不准确,怎么解决》
答:任何器件都会有偏差,晶振有偏差很正常。不过这显示出来的偏差也离谱了点。按目前的制造工艺一般的晶振精度都很容易做到数十ppm,偏移到数百ppm要么是环境太差要么是器件有问题,或者是测量不准^_^ 这个显示值应该只是软件根据波特率估算出来的,本身并不严格。如果人类都能感觉到定时器时间不准确了,那...

《我是单片机初学者,定时器中断问题不太明白! 请》
答:2.中断都是这样执行的 3.你想实现的目的是让单片机等待,这种情况就是让单片机这段时间什么都不做,可以通过软件延时比如for(i=0;i<1000;i++);循环 让程序一直在数数 数完了 往下执行 你想延时多久 就让它数多久,还有一种比较好的办法就是定时器延时,因为不占用cpu资源,在延时的同时可以做...

《单片机中的中断问题,》
答:回到while(1),等待下一次中断,定时器继续计数;定时器产生中断,...反复20次,P10取反。所以你的问题:1.中断函数是只执行一次吗 不是,每次执行完之后,由于中断未关,并且T0继续计数,所以后面一直会有中断;2.还有中断函数对TH0,TL0的赋值是不是多余?不是。每次产生中断后T0的值已经是0了,...

《单片机的定时器中断问题,希望大神帮我解答我的问题。我不太懂中断的条 ...》
答:启动定时器,主程序就 可以等待了,时间到自动进入中断程序,中断程序完成后又回到 主程序 但主程序仍是空等待 ET0=1是使能中断,并且要开总中断,这是必须的,所有中断都 要使能才能用 一般先使能中断再开定时器,但有时晚一步使能中断关系也不大,定时时间不会那么短 ...

《STC89C52单片机中断和定时器问题:TMOD/TH0/TL0/EA/ET0/TR0它们之间的...》
答:这些寄存器实际试几次就能深刻明白他们的用途了,说的话担心你可能还是不能完全理解。EA是总中断开关,当EA=0时,单片机不执行任何中断,因此如果想要单片机进入中断,EA必须赋值为1。ET0、ET1是定时/计数器T0、T1的中断开关,其值为0时对应的中断失效(有争议)TR0、TR1是定时/计数器T0、T1的运行...

《51单片机定时器中断程序怎么办?》
答:再次重新启动。用C语言实现的,先要定义好定时器的初值,不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期,机器周期=12/n(n指晶振频率),假设你要定时的时间为M,那么定时的初值为:M/机器周期=初值;TH0=(65536-初值)%256;TL0=(65536-初值)/256;将(...

   

返回顶部
本页内容来自于网友发表,若有相关事宜请照下面的电邮联系
感悟网