c51单片机c语言编程中定时器和中断的关系,程序如下,坐等!!!
tmod=1(工作方式1)tr0=1()ea=1(闭合总中断开关)ex0=1(闭合定时器开关)th0=(65536-50000)/256(存放预备置数高8位)tl0=(6...
tmod=1(工作方式1)
tr0=1()
ea=1(闭合总中断开关)
ex0=1(闭合定时器开关)
th0=(65536-50000)/256(存放预备置数高8位)
tl0=(65536-50000)%256(存放预置数低8位)
以上的的程序是初始化状态,我想问的是为什么没有编写gtae和int0,它们两个也应该控制定时器的啊!
接下来的程序是void timer interrupt1
{th0=(65536-50000)/256
tl0=(65536-50000)%256
}
我想问的是以上这段程序中void timer interrut1为什么要用到interrupt1既然用上了为什么又没有编写中断程序去控制定时器? 展开
tr0=1()
ea=1(闭合总中断开关)
ex0=1(闭合定时器开关)
th0=(65536-50000)/256(存放预备置数高8位)
tl0=(65536-50000)%256(存放预置数低8位)
以上的的程序是初始化状态,我想问的是为什么没有编写gtae和int0,它们两个也应该控制定时器的啊!
接下来的程序是void timer interrupt1
{th0=(65536-50000)/256
tl0=(65536-50000)%256
}
我想问的是以上这段程序中void timer interrut1为什么要用到interrupt1既然用上了为什么又没有编写中断程序去控制定时器? 展开
展开全部
你的定时器中断进不了吧, 因为你没开定时器中断允许位ET0=1
另: 定时器模式设置好后TMOD=0x01, 打开定时器中断允许ET0=1, 然后TR0=1启动定时器就可以了
另: 定时器模式设置好后TMOD=0x01, 打开定时器中断允许ET0=1, 然后TR0=1启动定时器就可以了
更多追问追答
追问
开启定时器为什么gate和int0没有编写, 难道只要编写tr0=1就说明定时器开启了 码?
追答
gate 作什用, 你知道吗? 如果gate=1, TR0=1时, 这时不是叫定时器, 叫计数器, 由外部引脚P3.4来控制, P3.4引脚高电平时, 才开始计数
至于int0, 你上面不是写了它们中断函数了吗
下面这个就是定时时间到中断处理
void timer interrupt1
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
}
展开全部
中断服务程序就是往定时器里面装入初值,让定时器从这个值开始计数一直到到65535,再次触发中断进入中断服务程序
追问
开启定时器为什么gate和int0没有编写,难道只要编写tr0=1就说明定时器开启了码?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void timer interrupt1 这个就是中断服务程序,控制定时器的就 TCON, 跟TMOD阿 ,你说的int0是外部中断0? gtae是什么。。。是不是定时器2的?我记得好像 TCON,TMOD可以配置2个定时器,定时器0跟定时器1,定时器2是其它的寄存器配置的。。。
追问
void timer interrupt1 这个就是中断服务程序,可里面编写的是定时器程序,哪来的的中断程序啊!难道只要编写个tro=1就说明定时器开启了吗?
追答
void timer interrupt1 这个里面的程序就叫做定时器0的中断服务程序,当时间到的时候就会触发中断,就会执行这个里面的程序,tr0 = 1就是开启定时器没错。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询