C51单片机时钟中断及主要问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C51单片机时钟中断及主要问题

一. 中断一般概念

51单片机一共设有5个中断源. 引起CPU中断根源, 成为中断源. 中断嵌套, 也即单片机在处理一个中断时又发生了一个中断, 单片机中断当前中断程序, 转而去处理新的中断程序. 中断优先级, 通过中断优先级寄存器设置.

1. 中断源及其默认优先级

52单片机共有6个中断源, 如下:

符号名称产生条件

INT0 外部中断0 由P3.2端口线引入, 低电平或下降沿引起

INT1 外部中断1 由P3.3端口线引入, 低电平或下降沿引起

T0 定时器/计数器0 由T0计数器计满回零引起

T1 定时器/计数器1 由T1计数器计满回零引起

T2 定时器/计数器2 由T2计数器计满回零引起

TI/RI 串行口中断串行端口完成一帧字符发送/接受后引起

其中, T2是52单片机独有的.

其默认中断优先级别如下:

中断源默认优先级别序号(C语言用) 入口地址(汇编)

INT0 最高0 0003H

T0 第2 1 000BH

INT1 第3 2 0013H

T1 第4 3 001BH

TI/RI 第5 4 0023H

T2 最低 5 002BH

2.中断控制中的特殊功能寄存器SFR

(1). 中断允许寄存器IE(Interrupt Enable)

位序号位符号位地址说明

D7(高位) EA 0xAF 全局中断允许位

D6 -- -- 无效位

D5 ET2 0xAD Timer2中断允许位

D4 ES 0xAC 串行口中断允许位

D3 ET1 0xAB Timer1中断允许位

D2 EX1 0xAA 外部中断1中断允许位

D1 ET0 0xA9 Timer0中断允许位

D0(低位) EX0 0xA8 外部中断0中断允许位

备注对于上述所有中断允许位:

1: 打开该中断

0: 关闭该中断

(2). 中断优先级寄存器IP(Interrupt Priority)

位序号位符号位地址说明

D7(高位) -- -- 无效位

D6 -- -- 无效位

D5 -- -- 无效位

D4 PS 0xBC 串行口中断优先级控制位

D3 PT1 0xBB Timer1中断优先级控制位

D2 PX1 0xBA 外部中断1中断优先级控制位

D1 PT0 0xB9 Timer0中断优先级控制位

D0(低位) PX0 0xB8 外部中断0中断优先级控制位

备注对于上述所有中断优先级控制位:

1: 设置对应的中断为高优先级

0: 设置对应的中断为低优先级

二. 单片机的定时器中断

定时器/计数器实质是一个16位的加1计数器, 由高8位(THx)和低8位(TLx)两个寄存器组成. TMOD是定时器/计数器的工作方式寄存器, 确定工作方式和功能; TCON是控制寄存器, 控制T0, T1的启动和停止及设置溢出标志.

1. 定时器/计数器工作方式寄存器TMOD

定时器/计数器工作方式寄存器在特殊功能寄存器中, 字节地址为0x89, 不能位寻址, TMOD 用来确定定时器的工作方式及功能选择. 单片机复位时TMOD全部被清0. 各位的含义如下:

位序号控制位符号说明

D7(高位) Timer1 GA TE 门控制位. 0表示Timer启动与停止仅受TCON寄存

器TRx(x=0, 1)控制

1表示Timer启动与停止由TCON寄存器中TRx(x=0,

1)和外部中断引脚(INT0或INT1)上的电平状态共同

控制

D6 C/T___定时器和计数器模式选择位, 0:定时器, 1:计数器

D5 M1 工作方式选择位. 见下表.

D4 M0

D3 Timer0 GA TE

D2 C/T___

D1 M1

D0(低位) M0

备注

M1 M0 工作方式

0 0 方式0, 为13位定时器/计数器

0 1 方式1, 为16位定时器/计数器

1 0 方式2, 8位初值自动重装的8位定时器/计数器

1 1 方式3, 仅适用于T0, 分成两个8位计数器, T1停止计数

2. 定时器/计数器控制寄存器TCON

位序号位符号位地址说明

D7(高位) TF1 0x8F Timer1溢出标志位. 计满溢出后, 由硬件使TF1置1,

并且申请中断. 进入中断处理程序后, 由硬件自动清

0. 注意: 使用定时器中断, 该位不需要人为操作, 但

如果使用软件查询方式的话, 必须使用软件清0.

D6 TR1 0x8E Timer1运行控制位. 由软件清0关闭定时器 1. 当

GA TE=1, 且INT1为高电平是, TR1置1启动定时器

1; 当GA TE=0时, TR1置1启动定时器1.

D5 TF0 0x8D Timer0溢出标志位. 其它同TF1.

D4 TR0 0x8C Timer0运行控制位. 其它同TR1.

D3 IE1 0x8B 外部中断1请求标志

D2 IT1 0x8A 外部中断1触发方式选择位

D1 IE0 0x89 外部中断0请求标志

D0(低位) IT0 0x88 外部中断0触发方式选择位

备注

三、中断服务程序的C语言写法

1、中断响应条件

●中断源有中断请求;

●此中断源的中断允许位为1;

●CPU 开中断(即EA=1)。

以上三条同时满足时,CPU 才有可能响应中断

2、2、C51的中断函数格式如下:

void func_name() interrupt 中断号[using 工作组]

{

//中断服务程序内容

}

●中断号: 指单片机中几个中断源的序号. 是编译器识别不同中断的唯一符号.

5个中断源排序:

0代表外部中断0中断;

1代表定时器/计数器0中断;

2代表外部中断1中断;

3代表定时器/计数器1中断;

4代表串口中断。

●工作组: 可选部分. 指这个中断函数使用单片机内存中4组工作寄存器中的哪一组, C51

编译器在编译时会自动分配工作组, 故通常省略.

3、3、P3.2 口的外部中断

EA=1; //开总中断

EX0=1; //开外部中断0

//IT0=1; 当IT=1 时位跳变沿外部中断触发方式

//当IT=0 时为电平的外部中断触发方式

TCON=0x01; 这是对寄存器将IT 置1,和IT0=1 的效果是一样的。

因为TCON 的地址是可以被8 整除,所以可以对其进行位操作4、4、定时/计数器应用举例

初始化程序应完成如下工作:

相关文档
最新文档