一、中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
二、51单片机中断级别
中断号
优先级
中断源
中断入口地址
0
1(最高)
INT0
外部中断0
0003H
1
2
T0
定时器/计数器0中断
000BH
2
3
INT1
外部中断1
0013H
3
4
T1
定时器/计数器1中断
0018H
4
5(最低)
TX/RX
串行口中断
0023H
三、中断结构图
四、中断寄存器
1、 中断允许控制寄存器IE
位地址
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H
位序号
7
6
5
4
3
2
1
0
位名称
EA
-
-
ES
ET1
EX1
ET0
EX0
EX0/EX1:外部中断允许控制位
EX0=1 外部中断0开关闭合 //开外部0中断
EX0=0 外部中断0开关断开
ET0/ET1:定时中断允许控制位
ET0=1 定时器中断0开关闭合 //开内部中断0
ET0=0 定时器中断0开关断开
ES:串口中断允许控制位
ES=1 串口中断开关闭合 //开串口中断
ES=0 串口中断开关断开
2、 定时器控制寄存器TCON
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
位序号
7
6
5
4
3
2
1
0
位名称
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
外部中断:
IE0/IE1:外部中断请求标志位
当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,
CPU开始响应,处理中断,而当入中断程序后由单片机自动置0.
IT0/IT1:外部中断触发方式控制位 //选择有效信号
IT0/IT1=1:脉冲触发方式,下降沿有效。
IT0/IT1=0:电平触发方式,低电平有效。
内部中断:
TF0/TF1:内部定时器/计数器溢出中断标志位
当定时器、计数器计数溢出的时候,此位由单片机自动置1,
cup开始响应,处理中断,而当进入中断程序后由单片机自动置0.
//内部中断实际上就是利用内部的计数器,
只不过提供计数的脉冲来自单片机自身。
TR0(TR1):定时器/计数器启动位 //启动定时器
TR0/TR1=1;启动定时器/计数器0
TR0/TR1=0;关闭定时器/计数器0
3、 串口控制寄存器SCON
位地址
9FH
9EH
9DH
9CH
9BH
9AH
99H
98H
位序号
7
6
5
4
3
2
1
0
位名称
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
TI:串行口发送中断标志位
当单片机串口发送完一帧数据后,此位由单片机自动置1,
而当进入中断服务程序后是不会自动清0的,
必须由用户在中断服务中用软件清0.
RI:串行口接收中断标志位
当单片机串口接收完一帧数据后,此位由单片机自动置1,
而当进入中断服务程序后是不会自动清0的,
必须由用户在中断服务软件中用软件清0.
4、 中断优先控制寄存器IP
位序号
7
6
5
4
3
2
1
0
位名称
-
-
-
PS
PT1
PX1
PT0
PX0
PS---串行口中断优先级控制位。
PS=1,串行口中断定义为高优先级中断。
PS=0,串行口中断定义为低优先级中断。
PT1---定时器/计数器1中断优先级控制位。
PT1=1,定时器/计数器1中断定义为高优先级中断。
PT1=0,定时器/计数器1中断定义为低优先级中断。
PX1---外部中断1中断优先级控制位。
PX1=1,外部中断1中断定义为高优先级中断。
PX1=0,外部中断1中断定义为低优先级中断。
PT0---定时器/计数器0中断优先级控制位。
PT0=1,定时器/计数器0中断定义为高优先级中断。
PT0=0,定时器/计数器0中断定义为低优先级中断。
PX0---外部中断0中断优先级控制位。
PX0=1,外部中断0中断定义为高优先级中断。
PX0=0,外部中断0中断定义为低优先级中断。
5、 定时器工作方式控制寄存器TMOD
位序号
7
6
5
4
3
2
1
0
定时器
定时器/计数器1(ET1)
定时器/计数器0(ET0)
位名称
GATE
C/T
M1
MO
GATE
C/T
M1
M0
GATE——门控制。
GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。
当INT0引脚为高电平时TR0置位,启动定时器T0;
当INT1引脚为高电平时TR1置位,启动定时器T1。
GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。
C/T——功能选择位
C/T=0时为定时功能,
C/T=1时为计数功能。
M0、M1——方式选择功能
M1
M0
工作方式
功 能
0
0
工作方式0
13位计数器
0
1
工作方式1
16位计数器
1
0
工作方式2
自动再装入8位计数器
1
1
工作方式3
定时器0:分成两个8位计数器
定时器1:停止计数
6、 定时器初值赋予寄存器(TH0/TH1,TL0/TL1)
五、定时器、计数器
1、 工作方式
2、 定时器初值计算
1.计数器初值的计算
设计数器的最大计数值为M(根据不同工作方式,M可以是2^13、2^16或2^8),则计算初值X的公式如下:
X=M-要求的计数值
2.定时器初值的计算
在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。因此,定时器定时初值计算公式:
X=M-(要求的定时值)/(12/fosc)
式中,M为定时器模值(根据不同工作方式,M可以是213、216或28)
关于如何确定定时器T0的初值问题。定时器一但启动,它便在原来的数值上开始加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
设置为计数器模式时,外部计数脉冲由T0或T1引脚输入到计数器。在每个机器周期S5P2期间采样T0,T1引脚电平,当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计时器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要两个机器周期,因此要求被采样的电平至少维持一个机器周期。当晶振频率位12MHz时,最高计数频率不超过1/2MHz,即技术脉冲的周期要大于2us。
补充,
定时计数器2: MCS-52单片机新增的定时计数器。
特点:
--16位定时计数器
--具有捕捉、自动重装、波特率发生器3种工作模式
--可作为编程时钟发生器
寄存器:
T2CON-定时器2控制寄存器
T2MOD定时器2方式寄存器
TH2,TL2定时计数寄存器
RCAP2H,RCAP2L-捕获/重装寄存器
引脚:
T2(P1.0):定时器2外部时钟输入/时钟输出
T2EXP(P1.1):定时器2重装/捕获/方向控制
IE, IP, IPH中有定时器2的中断允许,终端优先控制位。
T2CON 寄存器
地址:0C8H 复位值:00000000B
7
6
5
4
3
2
1
0
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/T2
CP/RL2
位
符号
功能
T2CON.7
TF2
定时器2溢出标志位。
RCLK或TCLK=1时不置位。
T2CON.6
EXF2
定时器2外部标志。
当EXEN2=1时,T2EX的负跳变产生捕获或重装时,EXF2=1.
T2CON.5
RCLK
接受时钟标志
T2CON.4
TCLK
发送时钟标志
T2CON.3
EXEN2
定时器2外部使能标志。
T2CON.2
TR2
定时器2启动/停止控制位。0停止,1启动。
T2CON.1
C/T2
定时器计数器选择:0定时,1计数。
T2CON.0
CP/RL2
捕获重装标志,1捕获,0重装。
定时器2可以产生2个中断请求信号,分别是TF2和EXF2,这2中断请求信号通过逻辑“或”的关系共享一个终端请求通道。
定时器2溢出时,TF2置1,向CPU申请中断。若在定时器2工作在重装模式时候,使RCAP2H,RCAP2L的值自动装入TH2,TL2。
当EXEN2=1时,T2EX引脚的负跳变使EX2F置1,这个信号除了向CPU申请中断外,根据定时器2的工作方式,还有2个作用:一是将TH2,TL2的值装入RCAP2H,RCAP2L,称为捕获;二是将RCAP2H,RCAP2L的值装入TH2,TL2,称为重装。
TF2,EXF2必须由软件清除。
RCLK:当该位置1时,定时器2做串口接受波特率发生器,即接受时钟。否则使用定时器1做波特率发生器。
TCLK:当该位置1时,定时2做串口波特率发生器,即发送时钟。否则使用定时器1做波特率发生器。
TR2:置1时允许T2计数,置0时禁止T2计数
C/T2:置1时定时器2对T2引脚输入的脉冲计数。置0时定时器2对内部震荡信号的12分频或6分频计数。
CP/RL2:捕获/重装标志,置1时捕获,置0时重装。当定时器2做波特率发生器时,强制自动重装,不管该位状态。
捕获模式:
CKCON的X2位控制内部振荡信号是12分频还是6分频。
T2CON的C/T2位控制T2对内部脉冲计数还是对外部脉冲计数。
T2CON的TR2位启动或停止计数
T2CON的CP/RL位置1,使T2工作在捕获模式
T2CON的EXEN2置1,连接T2EX引脚到捕获控制端。
在T2EX引脚的负跳变时刻,使TH2的值捕获到RCAP2H,TL2的值捕获到RCAP2L,同时使T2CON的EXF2置1,向CPU申请中断。
当T2溢出时,T2CON的TF2置1向CPU申请中断。
捕获方式可以用来测量外部脉冲的周期。
自动重装模式
自动重装模式下定时器的初值由硬件自动恢复。这个特性降低了软件开销。
T2的工作在自动重装模式时计数方向可变,即定时器2即可工作在增量式计数方式,也可工作在减量式计数方式。计数方式的选择由T2MOD寄存器的DCEN位控制使能,由T2EX引脚控制计数方向。
定时器2也可以在T2(P1.0)引脚输出可编程时钟。
通过配置T2MOD寄存器选择以上功能。
T2MOD寄存器
地址0C9H 复位值:XXXXXX00B
7
6
5
4
3
2
1
0
-
-
-
-
-
-
T2OE
DCEN
位
符号
功能
T2CON.1
T2OE
定时器2输出使能
T2CON.0
DCEN
向下计数使能位,置1使能。
其他不用的位在编程时不要置1.
自动重装载模式
自动重装模式(DCEN=0)说明
CKCON的X2位控制内部振荡信号是12分频还是6分频。
T2CON的C/T2位控制T2对内部脉冲计数还是对外部脉冲计数。
T2CON的TR2位启动或停止计数
T2CON的CP/RL位置0,使T2工作在自动重装模式
T2CON的EXEN2置1,连接T2EX引脚到重装控制端。
在T2EX引脚的负跳变时刻,使RCAP2H 的值重装到TH2 , RCAP2L 的值重装到TL2 ,同时使T2CON的EXF2置1,向CPU申请中断。
当T2溢出时,T2CON的TF2置1,使RCAP2H 的值重装到TH2 , RCAP2L 的值重装到TL2 ,同时向CPU申请中断。
在DCEN=0时,定时器2增量式计数。
自动重装模式(DCEN=1)
自动重装模式(DCEN=1)说明
CKCON的X2位控制内部振荡信号是12分频还是6分频。
T2CON的C/T2位控制T2对内部脉冲计数还是对外部脉冲计数。
T2CON的TR2位启动或停止计数
T2CON的CP/RL位置0,使T2工作在自动重装模式
T2CON的EXEN2置1,连接T2EX引脚到重装控制端。
在定时器2溢出时,自动装入初值。
当T2EX=0时,定时器2减量方式计数,FFH自动装入TH2和TL2。
当T2EX=1时,定时器2增量方式计数,RCAP2H自动装入TH2,RCAP2L自动装入TL2。
波特率发生器模式
当T2CON的RCLK=1,或TCLK=1,或RCLK=TCLK=1时,定时器2做波特率发生器。
这时定时器2强制自动重装。
T2CON的C/T2=0时,定时器2对内部振荡脉冲的2分频计数。
T2CON的TR2位启动或停止T2计数
定时器2溢出时不向CPU申请中断,溢出信号16分频后做串口的发送或接收时钟。由RCLK,TCLK的状态决定。
当T2CON的EXEB2=1时,T2EX引脚可做为外部中断源,该引脚的负跳变使EXF2=1向CPU申请中断
可编程时钟输出
通过对定时器2的设置,可在T2(P10)引脚上输出频率可编程的时钟脉冲。
T2CON的设置
RCLK=TCLK=0
C/T2=0
CP/RL=0
TMOD2的T2OE=1
RCAPH2,RCAPL2的值控制输出时钟频率。
输出时钟频率=
振荡器频率/4*[65536-(RCAP2H,RCAP2H)]
一、中断
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
二、51单片机中断级别
中断号
优先级
中断源
中断入口地址
0
1(最高)
INT0
外部中断0
0003H
1
2
T0
定时器/计数器0中断
000BH
2
3
INT1
外部中断1
0013H
3
4
T1
定时器/计数器1中断
0018H
4
5(最低)
TX/RX
串行口中断
0023H
三、中断结构图
四、中断寄存器
1、 中断允许控制寄存器IE
位地址
AFH
AEH
ADH
ACH
ABH
AAH
A9H
A8H
位序号
7
6
5
4
3
2
1
0
位名称
EA
-
-
ES
ET1
EX1
ET0
EX0
EX0/EX1:外部中断允许控制位
EX0=1 外部中断0开关闭合 //开外部0中断
EX0=0 外部中断0开关断开
ET0/ET1:定时中断允许控制位
ET0=1 定时器中断0开关闭合 //开内部中断0
ET0=0 定时器中断0开关断开
ES:串口中断允许控制位
ES=1 串口中断开关闭合 //开串口中断
ES=0 串口中断开关断开
2、 定时器控制寄存器TCON
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
位序号
7
6
5
4
3
2
1
0
位名称
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
外部中断:
IE0/IE1:外部中断请求标志位
当INT0(INT1)引脚出现有效的请求信号,此位由单片机自动置1,
CPU开始响应,处理中断,而当入中断程序后由单片机自动置0.
IT0/IT1:外部中断触发方式控制位 //选择有效信号
IT0/IT1=1:脉冲触发方式,下降沿有效。
IT0/IT1=0:电平触发方式,低电平有效。
内部中断:
TF0/TF1:内部定时器/计数器溢出中断标志位
当定时器、计数器计数溢出的时候,此位由单片机自动置1,
cup开始响应,处理中断,而当进入中断程序后由单片机自动置0.
//内部中断实际上就是利用内部的计数器,
只不过提供计数的脉冲来自单片机自身。
TR0(TR1):定时器/计数器启动位 //启动定时器
TR0/TR1=1;启动定时器/计数器0
TR0/TR1=0;关闭定时器/计数器0
3、 串口控制寄存器SCON
位地址
9FH
9EH
9DH
9CH
9BH
9AH
99H
98H
位序号
7
6
5
4
3
2
1
0
位名称
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
TI:串行口发送中断标志位
当单片机串口发送完一帧数据后,此位由单片机自动置1,
而当进入中断服务程序后是不会自动清0的,
必须由用户在中断服务中用软件清0.
RI:串行口接收中断标志位
当单片机串口接收完一帧数据后,此位由单片机自动置1,
而当进入中断服务程序后是不会自动清0的,
必须由用户在中断服务软件中用软件清0.
4、 中断优先控制寄存器IP
位序号
7
6
5
4
3
2
1
0
位名称
-
-
-
PS
PT1
PX1
PT0
PX0
PS---串行口中断优先级控制位。
PS=1,串行口中断定义为高优先级中断。
PS=0,串行口中断定义为低优先级中断。
PT1---定时器/计数器1中断优先级控制位。
PT1=1,定时器/计数器1中断定义为高优先级中断。
PT1=0,定时器/计数器1中断定义为低优先级中断。
PX1---外部中断1中断优先级控制位。
PX1=1,外部中断1中断定义为高优先级中断。
PX1=0,外部中断1中断定义为低优先级中断。
PT0---定时器/计数器0中断优先级控制位。
PT0=1,定时器/计数器0中断定义为高优先级中断。
PT0=0,定时器/计数器0中断定义为低优先级中断。
PX0---外部中断0中断优先级控制位。
PX0=1,外部中断0中断定义为高优先级中断。
PX0=0,外部中断0中断定义为低优先级中断。
5、 定时器工作方式控制寄存器TMOD
位序号
7
6
5
4
3
2
1
0
定时器
定时器/计数器1(ET1)
定时器/计数器0(ET0)
位名称
GATE
C/T
M1
MO
GATE
C/T
M1
M0
GATE——门控制。
GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1。
当INT0引脚为高电平时TR0置位,启动定时器T0;
当INT1引脚为高电平时TR1置位,启动定时器T1。
GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。
C/T——功能选择位
C/T=0时为定时功能,
C/T=1时为计数功能。
M0、M1——方式选择功能
M1
M0
工作方式
功 能
0
0
工作方式0
13位计数器
0
1
工作方式1
16位计数器
1
0
工作方式2
自动再装入8位计数器
1
1
工作方式3
定时器0:分成两个8位计数器
定时器1:停止计数
6、 定时器初值赋予寄存器(TH0/TH1,TL0/TL1)
五、定时器、计数器
1、 工作方式
2、 定时器初值计算
1.计数器初值的计算
设计数器的最大计数值为M(根据不同工作方式,M可以是2^13、2^16或2^8),则计算初值X的公式如下:
X=M-要求的计数值
2.定时器初值的计算
在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。因此,定时器定时初值计算公式:
X=M-(要求的定时值)/(12/fosc)
式中,M为定时器模值(根据不同工作方式,M可以是213、216或28)
关于如何确定定时器T0的初值问题。定时器一但启动,它便在原来的数值上开始加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
设置为计数器模式时,外部计数脉冲由T0或T1引脚输入到计数器。在每个机器周期S5P2期间采样T0,T1引脚电平,当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计时器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。由于检测一个从1到0的下降沿需要两个机器周期,因此要求被采样的电平至少维持一个机器周期。当晶振频率位12MHz时,最高计数频率不超过1/2MHz,即技术脉冲的周期要大于2us。
补充,
定时计数器2: MCS-52单片机新增的定时计数器。
特点:
--16位定时计数器
--具有捕捉、自动重装、波特率发生器3种工作模式
--可作为编程时钟发生器
寄存器:
T2CON-定时器2控制寄存器
T2MOD定时器2方式寄存器
TH2,TL2定时计数寄存器
RCAP2H,RCAP2L-捕获/重装寄存器
引脚:
T2(P1.0):定时器2外部时钟输入/时钟输出
T2EXP(P1.1):定时器2重装/捕获/方向控制
IE, IP, IPH中有定时器2的中断允许,终端优先控制位。
T2CON 寄存器
地址:0C8H 复位值:00000000B
7
6
5
4
3
2
1
0
TF2
EXF2
RCLK
TCLK
EXEN2
TR2
C/T2
CP/RL2
位
符号
功能
T2CON.7
TF2
定时器2溢出标志位。
RCLK或TCLK=1时不置位。
T2CON.6
EXF2
定时器2外部标志。
当EXEN2=1时,T2EX的负跳变产生捕获或重装时,EXF2=1.
T2CON.5
RCLK
接受时钟标志
T2CON.4
TCLK
发送时钟标志
T2CON.3
EXEN2
定时器2外部使能标志。
T2CON.2
TR2
定时器2启动/停止控制位。0停止,1启动。
T2CON.1
C/T2
定时器计数器选择:0定时,1计数。
T2CON.0
CP/RL2
捕获重装标志,1捕获,0重装。
定时器2可以产生2个中断请求信号,分别是TF2和EXF2,这2中断请求信号通过逻辑“或”的关系共享一个终端请求通道。
定时器2溢出时,TF2置1,向CPU申请中断。若在定时器2工作在重装模式时候,使RCAP2H,RCAP2L的值自动装入TH2,TL2。
当EXEN2=1时,T2EX引脚的负跳变使EX2F置1,这个信号除了向CPU申请中断外,根据定时器2的工作方式,还有2个作用:一是将TH2,TL2的值装入RCAP2H,RCAP2L,称为捕获;二是将RCAP2H,RCAP2L的值装入TH2,TL2,称为重装。
TF2,EXF2必须由软件清除。
RCLK:当该位置1时,定时器2做串口接受波特率发生器,即接受时钟。否则使用定时器1做波特率发生器。
TCLK:当该位置1时,定时2做串口波特率发生器,即发送时钟。否则使用定时器1做波特率发生器。
TR2:置1时允许T2计数,置0时禁止T2计数
C/T2:置1时定时器2对T2引脚输入的脉冲计数。置0时定时器2对内部震荡信号的12分频或6分频计数。
CP/RL2:捕获/重装标志,置1时捕获,置0时重装。当定时器2做波特率发生器时,强制自动重装,不管该位状态。
捕获模式:
CKCON的X2位控制内部振荡信号是12分频还是6分频。
T2CON的C/T2位控制T2对内部脉冲计数还是对外部脉冲计数。
T2CON的TR2位启动或停止计数
T2CON的CP/RL位置1,使T2工作在捕获模式
T2CON的EXEN2置1,连接T2EX引脚到捕获控制端。
在T2EX引脚的负跳变时刻,使TH2的值捕获到RCAP2H,TL2的值捕获到RCAP2L,同时使T2CON的EXF2置1,向CPU申请中断。
当T2溢出时,T2CON的TF2置1向CPU申请中断。
捕获方式可以用来测量外部脉冲的周期。
自动重装模式
自动重装模式下定时器的初值由硬件自动恢复。这个特性降低了软件开销。
T2的工作在自动重装模式时计数方向可变,即定时器2即可工作在增量式计数方式,也可工作在减量式计数方式。计数方式的选择由T2MOD寄存器的DCEN位控制使能,由T2EX引脚控制计数方向。
定时器2也可以在T2(P1.0)引脚输出可编程时钟。
通过配置T2MOD寄存器选择以上功能。
T2MOD寄存器
地址0C9H 复位值:XXXXXX00B
7
6
5
4
3
2
1
0
-
-
-
-
-
-
T2OE
DCEN
位
符号
功能
T2CON.1
T2OE
定时器2输出使能
T2CON.0
DCEN
向下计数使能位,置1使能。
其他不用的位在编程时不要置1.
自动重装载模式
自动重装模式(DCEN=0)说明
CKCON的X2位控制内部振荡信号是12分频还是6分频。
T2CON的C/T2位控制T2对内部脉冲计数还是对外部脉冲计数。
T2CON的TR2位启动或停止计数
T2CON的CP/RL位置0,使T2工作在自动重装模式
T2CON的EXEN2置1,连接T2EX引脚到重装控制端。
在T2EX引脚的负跳变时刻,使RCAP2H 的值重装到TH2 , RCAP2L 的值重装到TL2 ,同时使T2CON的EXF2置1,向CPU申请中断。
当T2溢出时,T2CON的TF2置1,使RCAP2H 的值重装到TH2 , RCAP2L 的值重装到TL2 ,同时向CPU申请中断。
在DCEN=0时,定时器2增量式计数。
自动重装模式(DCEN=1)
自动重装模式(DCEN=1)说明
CKCON的X2位控制内部振荡信号是12分频还是6分频。
T2CON的C/T2位控制T2对内部脉冲计数还是对外部脉冲计数。
T2CON的TR2位启动或停止计数
T2CON的CP/RL位置0,使T2工作在自动重装模式
T2CON的EXEN2置1,连接T2EX引脚到重装控制端。
在定时器2溢出时,自动装入初值。
当T2EX=0时,定时器2减量方式计数,FFH自动装入TH2和TL2。
当T2EX=1时,定时器2增量方式计数,RCAP2H自动装入TH2,RCAP2L自动装入TL2。
波特率发生器模式
当T2CON的RCLK=1,或TCLK=1,或RCLK=TCLK=1时,定时器2做波特率发生器。
这时定时器2强制自动重装。
T2CON的C/T2=0时,定时器2对内部振荡脉冲的2分频计数。
T2CON的TR2位启动或停止T2计数
定时器2溢出时不向CPU申请中断,溢出信号16分频后做串口的发送或接收时钟。由RCLK,TCLK的状态决定。
当T2CON的EXEB2=1时,T2EX引脚可做为外部中断源,该引脚的负跳变使EXF2=1向CPU申请中断
可编程时钟输出
通过对定时器2的设置,可在T2(P10)引脚上输出频率可编程的时钟脉冲。
T2CON的设置
RCLK=TCLK=0
C/T2=0
CP/RL=0
TMOD2的T2OE=1
RCAPH2,RCAPL2的值控制输出时钟频率。
输出时钟频率=
振荡器频率/4*[65536-(RCAP2H,RCAP2H)]
举报