PIC单片机同时用两个定时器。一个定时十分钟 一个定时一分钟。那么是不是不能用定时器中断???
PIC中断入口地址就一个?那么是不是只能用查询方法了?查询方法的话TM0没有使能是不是上电就开始计时?(比如灯亮十分钟灭一分钟)定时器0先工作定时器1在工作。我自己都说蒙...
PIC中断入口地址就一个?那么是不是只能用查询方法了?查询方法的话 TM0没有使能 是不是上电就开始计时?(比如灯亮十分钟 灭一分钟)定时器0先工作 定时器1在工作。我自己都说蒙了
展开
1个回答
展开全部
当然可以用定时器中断!
显然你要定的时间超出了单片机定时器的溢出时间,但可以用中断次数累加的办法。
其实只要用一个定时器也可以实现你的二个定时的功能。
假设用TMR0,基本的溢出时间设为10ms,即10ms中断一次,因此中断10次是1秒,十分钟要中断10*60*10=6000,一分钟要中断600次,因要用二个整型变量来累计中断次数。如一个为T0A,一个为T0B。每个TMR0中断时T0A和T0B均加1,并判断,当T0A>=6000,说明定时10分钟到,此时先清T0A,接着你想让它做啥就做啥。同样,在TMR0中断时,判断,当T0B>=600,说明定时1分钟到,此时先清T0B,接着你想让它做啥还做啥。
至于让TMR0延时10ms,这个你应该会吧?!
显然你要定的时间超出了单片机定时器的溢出时间,但可以用中断次数累加的办法。
其实只要用一个定时器也可以实现你的二个定时的功能。
假设用TMR0,基本的溢出时间设为10ms,即10ms中断一次,因此中断10次是1秒,十分钟要中断10*60*10=6000,一分钟要中断600次,因要用二个整型变量来累计中断次数。如一个为T0A,一个为T0B。每个TMR0中断时T0A和T0B均加1,并判断,当T0A>=6000,说明定时10分钟到,此时先清T0A,接着你想让它做啥就做啥。同样,在TMR0中断时,判断,当T0B>=600,说明定时1分钟到,此时先清T0B,接着你想让它做啥还做啥。
至于让TMR0延时10ms,这个你应该会吧?!
更多追问追答
追问
延时多少时间这个没问题。你说的(同样,在TMR0中断时,判断,当T0B>=600)这个 之前T0A,T0B一直同时加 他俩值不是一样的么?我要的是 灯先亮十分钟 在灭一分钟 然后在亮十分钟 在灭一分钟 这个样子 ,能在判断一分钟那 细说一下么 谢谢
追答
不一样了,T0B是负责处理延时1分钟的事,处理后它被清0,以后就不一样。而T0A为600时并不处理任何事。
你再想一下就知道了,10ms的延时只是个基础,实际上是各做各的事,二个延时用不同的变量,互不干扰。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询