问一个51单片机定时器0中断的问题。假如T0中断,然后蜂鸣器报警。请老师大侠们帮帮忙说说这个过程是

问一个51单片机定时器0中断的问题。假如T0中断,然后蜂鸣器报警。请老师大侠们帮帮忙说说这个过程是如何实现的谢谢。

过程很简单呀,首先是初始化定时器,比如工作模式,我们可以设为模式1,赋初值,比如在12M晶振情况下,我们可以选最经典的50毫秒定时,初值为:65536-50000;确定需要定时多长时间,比如10分钟,那么需要中断次数是20*60*10=12000,一个整型变量就可以搞定了,如果再长些,比如是1小时,那么为了方便,可以设置三个变量,时分秒。最后就是等待了,当时间到了的时候,发一个报警信号。追问

非常感谢,那我比如定时10ms,是不是每10ms就响应一次中断去判断是否报警,如果一直符合报警的条件就不跳出中断服务程序,直到不满足蜂鸣器报警条件了就跳出中断程序重新定时?

追答

那更好办了,10毫秒定时,在中断服务程序里报警就可以了。

追问

谢谢啊。我还有个疑问,比如说当温度值超限了,蜂鸣器就报警。我总感觉没必要使用定时器中断似的,我直接用if语句判断温度值是否超过限定值,如果超过就使蜂鸣器端口不断取反就响了啊。当没超过限定值了,就不响呗。总感觉没必要用定时器中断似的。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-10-26
首先得写个初始化定时器T0的函数,要设定定时时间;
下来需要写T0中断函数,在中断里面对一个标记赋值;
还需要一个蜂鸣器函数;
在main函数里面做一个主循环函数(while),在里面做一个查询标记的语句,如果标记有效,就运行蜂鸣器函数;
至于T0定时器是一直循环,还是用按键控制开启,就要根据你的要求具体实现。