51单片机关键寄存器小结
IDL:空闲方式控制位,置 1 后单片机进入空闲方式,电流为 1.7-5mA。 PD:掉电方式控制位,置 1 后单片机,时钟信号停止,单片机停止工作,掉电 方式。 GF0:通用标志位。 GF1:通用标志位。 SMOD:串行口波特率倍率控制位,为 1 时,波特率加倍。
⑩ T2CON: 定时/计数器 2 控制寄存器, 字节地址 0C8H, 可位寻址。
位序号 符号位 DB7 TF2 DB6 EXF2 DB5 DB4 DB3 DB2 TR2 DB1 C/������2 DB0 CP/������������2
RCLK TCLK EXEN2
TF2:T2 溢出标记。 当 T2 溢出时 TF2=1, TD2 只能用软件清除; 当 RCLK=1 或 TCLK=1 时, TF2 将不置位。 EXF2:T2 外部标记。 当 EXEN2=1 时,T2EX/P1.1 引脚上的负跳变引起 T2 的捕捉/重装操作, 此时 EXF2=1。在 T2 中断允许时,EXF2=1 将引起中断,EXF2 只能用 软件清除。在 T2 的向上、向下计数模式下(DCEN=1)EXF2 的置位将 不引起中断。 RCLK:接收时钟允许。 当 RCLK=1 时,T2 的溢出脉冲可用作串行口的接收时钟信号,适于串 行口模式 1、 3 当 RCLK=0 时, T1 的溢出脉冲用作串行口接收时钟信号。 TCLK:发送时钟允许。 EXEN2:T2 外部事件(引起捕捉/重装的外部信号)允许。 当 EXEN2=1 时, 如果 T2 没有作串行时钟输出 (即 RCLK+TCLK=0) ,
7
上开始加 1 计数,若在程序开始时,我们没有设置 TH0 和 TL0,它们的默认值 都是 0,假设时钟频率为 12MHz,12 个时钟周期为一个机器周期,那么此时机 器周期为 1us,记满 TH0 和 TL0 就需要 216 -1 个数,再来一个脉冲计数器溢出, 随即向 CPU 申请中断。因此溢出一次共需 65536us,约等于 65.6ms,如果我们要 定时 50ms 的话,那么就需要先给 TH0 和 TL0 装一个初值,在这个初值的基础 上记 50000 个数后,定时器溢出,此时刚好就是 50ms 中断一次,当需要定时 1s 时,我们写程序时当产生 20 次 50ms 的定时器中断后便认为是 1s,这样便可精 确控制定时时间啦。要计 50000 个数时, TH0 和 TL0 中应该装入的总数是 65536-50000=15536., 把 15536 对 256 求模: 15536/256=60 装入 TH0 中, 把 15536 对 256 求余:15536/256=176 装入 TL0 中。 以上就是定时器初值的计算法,总结后得出如下结论:当用定时器的方式 1 时,设机器周期为 TCY,定时器产生一次中断的时间为 t,那么需要计数的个数 为 N=t/TCY ,装入 THX 和 TLX 中的数分别为: THX=(65536-N)/256, TLX=(65536-N)%256 中断服务程序的写法 void 函数名()interrupt 中断号 using 工作组 { 中断服务程序内容 } 在写单片机的定时器程序时, 在程序开始处需要对定时器及中断寄存器做初始化 设置,通常定时器初始化过程如下: (1)对 TMOD 赋值,以确定 T0 和 T1 的工作方式。 (2)计算初值,并将初值写入 TH0、TL0 或 TH1、TL1。 (3)中断方式时,则对 IE 赋值,开放中断。 (4)使 TR0 和 TR1 置位,启动定时器/计数器定时或计数。
2
④TCON:定时/计数器控制寄存器(Timer/Counter Control Register), 字节地址:88H,可位寻址。
位序号 符号位 DB7 TF1 DB6 TR1 DB5 TF0 DB4 TR0 DB3 IE1 DB2别为定时/计数器 T1 和定时/计数器 T0 的溢出标志。溢出后由硬 件置“ 1” ,并向 CPU 申请中断,进入中断服务程序后,由硬件自 动清 0。需要注意的是,如果使用定时器中断,那么该位完全不用人 为去操作, 但是如果使用软件查询方式的话, 当查询到该位置 1 后, 就需要用软件清 0。 TR1、 TR0: 分别为定时器 1 和定时器 0 的启停控制位。 置 “ 1” 启动, 清 “ 0” 停止。 IE1、IE0:外部中断请求标志位。外部中断有中断请求时,由硬件置“ 1”响 应中断后由硬件清“0” 。 IT1、IT0:外部中断触发方式位。 “0”时为电平触发, “ 1”时为边沿触发。
⑦IP:中断优先级寄存器(Interrupt Priority),字节地址:B8H,可 位寻址。
位序号 位地址 DB7 --DB6 --DB5 --DB4 PS DB3 PT1 DB2 PX1 DB1 PT0 DB0 PX0
4
PS:串行口中断优先级设定位。置 1 时为高优先级。 PT1、PT0:定时器优先级设定位。置 1 时为高优先级。 PX1、PX0:外部中断优先级设定位。置 1 时为高优先级。
⑤SCON:串行通信控制寄存器(Serial Port Control Register),字节 地址:98H,可位寻址。
位序号 符号位 DB7 SM0 DB6 SM1 DB5 SM2 DB4 REN DB3 TB8 DB2 RB8 DB1 TI DB0 RI
SM0 SM1: 串行口方式选择位 SM0 SM1 0 0 1 1 0 1 0 1 工作方式 0 1 2 3 说 明
51 系列单片机关键控制寄存器小结
①PSW: 程序状态字寄存器(Program Status Word), 字节地址: D0H, 可位寻址。
位序号 符号位 DB7 CY DB6 AC DB5 F0 DB4 RS1 DB3 RS0 DB2 OV DB1 F1 DB0 P
CY:高位进位标志位。有进借位时,CY 被置“1”,否则置“0”。 AC:辅助进位标志位。低 4 位向高四位有进借位时,AC 被置“1”,否则置“0”。 F0:用户标志位。可自定义使用。 RS1、RS0:工作寄存器选择: RS1 0 0 1 1 RS0 0 1 0 1 寄存器组 0组 1组 2组 3组 R0 ~ R7 的物理地址 00H ~ 07H 08H ~ 0FH 10H ~ 17H 18H ~ 1FH
OV:溢出标志位。 P: 奇偶校验标志位。 串口通信时“ 1”的个数为奇数时, P 被置“1”, 否则置“ 0”。
1
②5 个中断源:2 个外部中断请求INT0和INT1、
2 个片内定时/计数器 T0 和 T1 的溢出中断请求 串行口中断请求 TI 或 RI(合为一个中断源)
③51 单片机中断级别
中断源 INIT0---外部中断 0 T0---定时/计数器 0 中断 INIT1---外部中断 1 T1----定时/计数器 1 中断 TI/RI---串行口中断 T2---定时/计数器 2 中断 中断入 口地址 0003H 000BH 0013H 001BH 0023H 002BH 默认中 断级别 最高 第2 第3 第4 第5 最低 C 语言用序号 0 1 2 3 4 5 中断请求标 志位及取值 IE0 = 1 TF0 = 1 IE1 = 1 TF1 = 1 TI = 1/RI = 1 TF2 = 1
移位寄存器方式(用于 I/O 口扩展) 8 位 UART,波特率可变(由定时 T1 溢出率控制) 9 位 UART,波特率为 fOSC/64 或 fOSC/32 9 位 UART, 波特率可变(由定时 T1 溢出率控制)
3
SM2:方式 2 和方式 3 的多机通信控制位,在方式 0 中,SM2 不起作用,一般 置为 0。 REN:允许串行接收位,由软件置 1 时,允许接收。清 0 时,禁止接收。 TB8:方式 2 和方式 3 中,发送的第 9 位数据,需要时由软件置位或复位。 RB8:方式 2 和方式 3 中,接收到的第 9 位数据,在方式 1 时,RB 是接收到停止 位,在方式 0 时,不使用 RB8。一般设置为 0。 TI:发送中断标志,由硬件置 1,在方式 0 时,串行发送到第 8 位结束时置 1; 在其他方式,串行口发送停止位时置 1。TI 必须由软件清 0。 RI:接收中断标志,由硬件置 1。在方式 0 时(SM2 应置 0) ,接收到第 8 位结 束时置 1, 当 SM2=0 的其他方式 (方式 0, 1, 3) 时, 接收到停止位置位“1”, 当 SM2=1 时,若串口工作在方式 2 和 3,接收到的第 9 位数据(RB8)为 1 时,才激活 RI。在方式 1 时,只有接收到有效的停止位时才会激活 RI。 RI 必须由软件清 0。
6
则在 T2EX/P1.1 引脚跳变将引起 T2 的捕捉/重装操作;当 EXEN2=0 时,在 T2EX 引脚的负跳变将不起作用。 TR2:T2 的启动/停止控制。 C/T2:计数定时。 CP/RL2:捕捉/重装选择。 当 CP/RL2=1 且 EXEN2=1 时,T2EX/P1.1 引脚的负跳变将引起捕捉 操作;当 CP/RL2=0 且 EXEN2=1 时,T2EX/P1.1 引脚的负跳变将引 起重装操作;当 CP/RL2=0 且 EXEN2=0 时,T2 的溢出将引起 T2 的 自动重装操作;当 RCLK+TCLK=1 时,CP/RL2 控制位不起作用,T2 被强制工作于重装方式。重装方式发生于 T2 溢出时,常用来作波特率 发生器。
控制定时器 T1
控制定时器 T0
5
⑨ PCON:电源控制寄存器(Power Control Register),(电压控制及 波特率选择) 字节地址:87H, 不可位寻址。
位序号 符号位 DB7 SMOD DB6 --DB5 --DB4 --DB3 GF1 DB2 GF0 DB1 PD DB0 IDL
⑧ TMOD :定时器 / 计数器工作模式寄存器 (timer/counter mode control register),字节地址:89H,不可位寻址,只能 以字节配置。
位序号 位符号 功能 GATE:门控制位。 GATE=0:定时器/计数器启动与停止仅受 TCON 寄存器中 TRX(X=0,1)来控制。 GATE=1:定时器计数器启动与停止由 TCON 寄存器中 TRX(X=0,1)和外部中断 引脚(INT0 或 INT1)上的电平状态来共同控制。 C/T:定时器和计数器模式选择位。 C/T=1,为计数器模式;C/T=0,为定时器模式。 M1M0---工作模式选择位。 M1 M0 0 0 1 1 0 1 0 1 工作模式 方式 0,为 13 位定时器/计数器 方式 1,为 16 位定时器/计数器 方式 2,8 位初值自动重装的 8 位定时器/计数器 方式 3,仅适用于 T0,分成两个 8 位计数器,T1 停止工作 DB7 GATE DB6 C/T DB5 M1 DB4 M0 DB3 GATE DB2 C/T\ DB1 M1 DB0 M0