51单片机(STC89C52)的中断和定时器

STC89C51/STC89C52 Timer

  • 内部不带振荡源, 必须外接晶振
  • 采用11.0592MHz,或22.1184MHz,可方便得到串口通讯的标准时钟.

STC89和STC90系列为12T, STC11/STC12系列为1T, 也就是一个指令一个机器周期, 这些都需要外置晶振; STC15系列有内置晶振.

中断

中断允许控制寄存器 IE
字节地址A8H, CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的

D7 D6 D5 D4 D3 D2 D1 D0
EA ET2 ES ET1 EX1 ET0 EX0
  • (IE.7): 整体中断允许位, 1:允许
  • (IE.5): T2中断允许位, 1:允许(for C52)
  • (IE.4): 串口中断允许位, 1:允许
  • (IE.3): T1中断允许位, 1:允许
  • (IE.2): 外部中断INT1允许位, 1:允许
  • (IE.1): T0中断允许位, 1:允许
  • (IE.0): 外部中断INT0允许位, 1:允许

52单片机一共有6个中断源, 它们的符号, 名称以及各产生的条件分别如下

  1. INT0 – 外部中断0, 由P3.2端口线引入, 低电平或下降沿引起
  2. INT1 – 外部中断1, 由P3.3端口线引入, 低电平或下降沿引起
  3. T0 – 定时器/计数器0中断, 由T0计数器计满回零引起
  4. T1 – 定时器/计数器1中断, 由T1计数器计满回零引起
  5. T2 – 定时器/计数器2中断, 由T2计数器计满回零引起 <–这个是52特有的
  6. TI/RI – 串行口中断, 串行端口完成一帧字符发送/接收后引起

定时器中断
51单片机内部共有两个16位可编程的定时器,即定时器T0和定时器T1, 52单片机内部多一个T2定时器. 它们既有定时功能,也有计数功能。可通过设置与它们相关的特殊功能寄存器选择启用定时功能还是计数功能. 这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时功能后,定时器便在晶振的作用下自动开始计时,但定时器的计数器计满后,会产生中断。
定时器/计数器的实质是加1计数器(16位), 由高8位和低8位两个寄存器组成.

  • TMOD: 定时器的工作方式寄存器,确定工作方式和功能
  • TCON: 控制寄存器,控制T0,T1的启动和停止及设置溢出标志

代码例子

代码例子二

定时器

89C51有两个计数器T0和T1, 89C52还有一个定时器T2

定时器T0和T1

控制寄存器TCON
字节地址, 位寻址

位地址 8F 8E 8D 8C 8B 8A 89 88
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
  • , : 计数溢出标志位, 当计数溢出时产生中断, 由硬件置1, 当转向中断服务时, 再由硬件自动清0. 计数溢出的标志位的使用有两种情况: 采用中断方式时作为中断请求标志位来使用; 采用查询方式时作为查询状态位来使用.
  • , : 定时器运行控制位, 0:停止, 1:启动
  • , : 外部中断请求标志位. 当CPU采样到和出现有效中断请求时, 此位由硬件置1, 在中断响应完成后转向中断服务时, 再由硬件自动清0.
  • , : 外部中断请求信号方式控制位. 1:脉冲方式(后沿负跳有效), 0:电平方式(低电平有效), 此位由软件置1或0.
    TF0(TF1)——计数溢出标志位

模式控制寄存器 TMOD
逐位定义的8位寄存器, 只能使用字节寻址, 字节地址为89H

D7 D6 D5 D4 D3 D2 D1 D0
GATE C/T M1 M0 GATE C/T M1 M0
  • : 门控位
    • GATE=0时, 仅用TCON中的或为1, 就可以启动T0, T1
    • GATE=1时, 不仅TCON中的或为1, 且需要INT0/INT1也为高电平,才能工作. Enable Timer/Counter only when the INT0/INT1 pin is high and TR0/TR1 is set.
  • , , , : 为T0的设置
  • , , , : 为T1的设置
  • : 模式选择, 0:定时模式, 1:计数模式. 计数模式用于外部输入计数
  • ,: 工作方式选择, 一般使用都是采用16位的计时计数器
M1 M0 工作方式 计数器模式
0 0 TMOD=0x00 13位计数器 (8192) 13-bit timer/counter, 8-bit of THx & 5-bit of TLx
0 1 TMOD=0x01 16位计数器 (65536) 16-bi

来源:IOsetting

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月8日
下一篇 2021年6月8日

相关推荐