51单片机的定时器T0和T1是可以同时使用的,但是在编程的时候需要注意一下,防止寄存器的设置被覆盖以及定时溢出问题。详细介绍如下:

1.注意事项之一:寄存器设置

在使用单片机的定时器寄存器时,有两个寄存器非常重要,是TMOD和TCON,TMOD寄存器包含寄存器的工作模式、定时模式等,TCON包含了中断允许、定时器启动、中断标志等的设置。

80c52单片机T0和T1同时使用时要注意什么

在设置TMOD时建议直接操作TMOD,防止T0和T1单独按位操作引起,防止寄存器的设置被覆盖。比如T0和T1都是用作定时器,且工作在方式1,则TMOD=0x11;中断总开关EA=1;定时器中断允许ET0=1;ET1=1;定时器启动TR0=1;TR1=1等。

2.注意事项之二:定时器初值的计算

51单片机的定时器是加法寄存器,在设置定时器初值时需要计算一下。以16位定时方式举例,最大可以计数65535,假设采用f=12M的时钟频率,那么单片机的机器周期为:T=1/f=1us。如果计时50ms的话,需要50000/1=50000个机器周期,则定时50ms需要的初值为(65536-50000),所以初值如下:

TH = (65536-50000)/256;

TL = (65536-50000)%256;

3.注意事项之三:定时器防溢出

定时器的寄存器设置好之后,可以设置定时器使用过程中的定时变量,必须要注意定时变量的数据类型,我在编程时多次犯过这种错误,比如变量的类型是char型,但是在定时器判断时,却和1000进行比较。因为char型最大值是255,这样就永远到不了1000,所以永远等不到定时器的触发。

4.注意事项之四:中断优先级

定时器T0和定时器T1在同时使用时,不会同时触发定时器中断,中断只有一个,哪一个先触发,会涉及到中断优先级的问题,需要配置IP寄存器,默认的中断优先级如下:

外部中断0>定时器T0>外部中断1>定时器T1>串口中断。

如果没有特殊优先级要求,则可以选择默认设置。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查