真正理解单片机定时器中断控制位
时间:10-02
整理:3721RD
点击:
更多51单片机定时器知识请进入专题:http://bbs.elecfans.com/topic-dingshiqi.html
可能大家学习单片机时大部分都用的是郭天祥的教程吧,最近我在学串口通信时发现一个问题,想问问各路高人,何谓定时器/计数器0(1)中断允许位? 对于定时器/计数器1 如果只开了EA=1;TR1=1;初值设定好之后,不管ET1是否置1,定时器/计数器1也能工作呢?是否还能定时溢出呢? 在郭天祥的串口通信那章中,我们用了定时器/计数器1设定波特率,但其中的ET1也就是定时器/计数器1中断允许位没有置1,结果仍然正确,所以我就想所谓的中断允许位就是是否允许中断服务程序运行的标志,而不是像TR1那样控制是否开启定时器工作。
望高人指点迷津。
中断
你在串口通信中定时器就是起个通信速率定义的作用,定时溢出后即使中断内有其他动作也不会执行,只是单纯地计时。就好像串口收发不开中断也可以收发。
个人猜测之言O(∩_∩)O
也就是说ET1不影响定时器内部是否开始计时,只是影响开不开中断服务么?
中断分为5种,定时中断是其中一种。定时溢出是定时中断的中断方式。但是,定时中断并不一定是定时溢出的结果。也就是说,定时溢出实现程序,有两种方式:查询、中断。这里不开中断位,是用的查询的方式来进行循环。
ET不是单纯的允许许了中端么?那就是说,ET1开了,这个定时器中断才有的用,那可以理解为开关,为1时,打开;TR1的意思是,定时器的中断允许标记,那就是计数产生溢出的时候,硬件置位它,响应中断后,硬件清零。
波特率就是靠这个来设置的,但要注意使用的晶振频率 以免算错了初值 导致无法通信
还有一些常规的通信设置都不能错的 不然也是无法通信的
建议你看看小宋老师的视频课程,在串口通信讲解的很详细。我看了郭天祥老师的课程,看了后我对被弄晕了。他讲解的太纠结了。
C51单片机自学交流群 162397882 加入暗号是:“方丈,给我剃个光头吧!”
楼上 你那个暗号太毒了
嗯。正好我这几天正在为中断的问题困惑着呢