单片机概念及其原理
定时器0方式1:16位定时器/计数器模式
定时器方式0:13位定时器/计数器模式
计算初值:当使用定时器的方式0时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为
THX=(8192-N)/32, TLX=(8192-N)%32
定时器方式2:8位初值自动重装的8位定时器/计数器。
C/T—定时器模式和计数器模式选择位
C/T=1,为计数器模式;C/T=0,为定时器模式。
M0M1—工作方式选择位
M1
M0
工作方式
0
0
方式0,为13位定时器/计数器
0
1
方式1,为16位定时器/计数器
1
0
方式2,8位初值自动重装的8位定时器/计数器
1
1
方式3,仅适用于T0,分成两个8位计数器,T1停止计数
当定时器2配置为计数方式时,外部时钟信号由T2引脚进入,当工作于模式1和模式3时,波特率由下面给出的公式所决定:
模式1和模式3的波特率=定时器2的溢出率/16
当定时器2作为波特率发生器时,它以1/2震荡器频率递增。计算公式:模式1和3=振荡器频率/32×【65536-(RCAP2H,RCAP2L)】
自动重装模式(递增/递减计数器)
当DCEN=0时,定时器2默认为向上计数,当DCEN为1时,定时器2 可通过T2EX确定递增或递减计数。当EXEN=0时,定时器2递增计数到0FFFFH,并在溢出后将RCAP2L和RCAP2H中的16位值作为重新装载值装入定时器2。RCAP2L和RCAP2H的值是通过软件预设的。
INT0—外部中断0,由P3.2端口线引入,低电平或下降沿引起
INT1—外部中断1,由P3.3端口线引入,低电平或下降沿引起
T0—定时器/计数器0中断,由T0计数器计满回零引起
T1—定时器/计数器1中断,由T1计数器计满回零引起
T2—定时器/计数器2中断,由T2计数器计满回零引起
TI/RI—串行口中断,串行端口完成一帧字符发送/接收后引起
IT1—外部中断1触发方式选择位
IT1=0,为电平触发方式,引脚INT1上低电平有效。
IT1=1,为跳边沿触发方式,引脚INT1上的电平从高到低的负跳变有效。
定时器初始化:
对TMOD赋值,以确定T0和T1工作方式
计算初值,并将初值写入TH0、TL0或TH1、TL1
中断方式时,对IE赋值,开放中断
使TR0或TR1置位,启动定时器/计数器定时或计数。
表4定时器/计数器工作方式寄存器TMOD
位序号
D7
D6
D5
D4
D3
D2
D1
D0
位符号
GATE
C/T
M1
M0
GATE
C/T
M1
M0
定时器1
定时器0
GATE—门控制位
GATE=0,定时器/计数器启动与停止仅受TCON寄存器中TRX来控制
GATE=1,定时器/计数器启动与停止由TCON寄存器TRX和外部中断引脚上的电平状态来共同控制。
设置为计数器模式时,外部计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一个周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间转入计数器。由于检测一个从1~0的下降沿需要两个机器周期,因此要求被采样的电平至少要维持一个机器周期。当晶振频率为12MHz时,最高计数频率不超过1/2MHz,即计数脉冲的周期要大于2us。
中断:是指CPU在处理某一事件A时,发生了事件B,请求CPU迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B(中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。
图单片机中断过程
52单片机一共有6个中断源,它们的符号、名称及产生的条件分别解释如下:
当DCED=1时,定时器2递增或递减计数,此模式允许T2EX控制计数方向。当T2EX置1时,定时器2递增计数,计数到0FFFFH后溢出并置位TF2,还产生中断。定时器2的溢出将使RCAP2L和RCAP2H中的16位值作为重新装载值放入TL2和TH2。当T2EX清0时,将使定时器2递减计数。当TL2和TH2计数到等于RCAP2L和RCAP2H时,定时器产生中断。
ET1
EX1
ET0
EX0
位地址
AFH
—
ADH
ACH
ABH
AAH
A9H
A8H
EA—全局中断允许位
EA=1,打开全局中断控制,在此条件下,由各个中断控制位确定相应中断的打开或关闭。
EA=0,关闭全部中断
—无效位
ET2—定时器/计数器2中断允许位
串行口中断允许位
ET1—定时器/计数器1中断允许位
EX1—外部中断1中断允许位
装载值:溢出时计数器减去计数器初值就是加1计数器的计数值。
设置为计数器模式时,加1计数器是对内部机器周期计数(一个机器周期等于12个震荡周期,即计数频率(机器周期)为晶振频率的1/12)。定时时间t为计数值乘以机器周期Tcy
总结:当使用定时器方式1时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为:THX=(65536-N)/256 TLX=(65536-N)%256其中机器周期Tcy=晶振/12。
PT0—定时器0/计数器0中断优先级控制位
PX0—外部中断0中断优先级控制位
为1时,定义为高优先级中断;为0时,定义为低优先级中断
51系列中,高优先级中断能够打断低优先级中断以形成中断嵌套。
单片机的定时器中断
单片机定时器/计数器的实质:加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时器/计数器的工作方式寄存器,确定工作方式和功能。TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
表5定时器/计数器控制寄存器TCON
位序号
D7
D6
D5
D4
D3
D2
D1
D0
位符号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
TF1—定时器1溢出标志位
当定时器1溢出时,由硬件使TF1置1,并且申请中断。注意:若使用定时器中断,该位不用人为操作;若用软件查询方式,当查询到该位置1,就需要软件清0.
定时器中断原理:加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;另一种是T0或T1引脚输入的外部脉冲源,每来一个脉冲计数器加1,当加到计数器全为1时(即65536),再输入一个脉冲就使计数器回零,且计数器的溢出使TCON控制寄存器中TF0或TF1置1,向CPU发出中断请求(定时器/计数器中断允许时)。若定时器/计数器工作于定时模式,则表示定时时间到;若工作于计数模式,则表示计数值已满。
表为52单片机中断级别
中断源
默认中断级别
序号(C语言用)
入口地址(汇编用)
INT0
最高
0
0003H
T0
第2
1
000BH
INT1
第3
2
0013H
T1
第4
3
001BH
TI/TR
第5
4
0023H
T2
最低
5
002BH
表2中断允许寄存器IE(可位寻址)
位序号
D7
D6
D5
D4
D3
D2
D1
D0
位标号
EA
—
ET2
ES
TR1—定时器1运行控制位
软件清零关闭定时器1.当GATE=1且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器1.
IE1—外部中断1请求标志
当IT1=0时,为电平触发方式。每个机器周期的S5P2采样INT1引脚,若INT1脚为低电平,则置1,否则IE1清0.
当IT1=1时,为跳边沿触发方式。当第一个机器周期采样到INT1为低电平时,则IE1置1.IE1=1,表示外部中断1正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,该位由硬件清0.
ET0—定时器/计数器0中断允许位
EX0—外部中断0中断允许位
表3中断优先级寄存器IP(可位寻址)
位序号
D7
D6
D5
D4
D3
D2
D1
D0
位符号
PS
PT1
PX1
PT0
PX0
位地址
BCH
BBH
BAH
B9H
B8H
PS—串行口中断优先级控制位
PT1—定时器1/计数器1中断优先级控制位
PX1—外部中断1中断优先级控制位
CP/RL2
TR2
模式
0
0
1
16位自动重装
0
1
1
16位捕获
1
×
1
波特率发生器
×
×
0
关闭
捕获模式
通过T2CON中的EXEN2设置两个选项。
当EXEN2=0,由T2CON中C/T2位选择定时器2是16位定时器或计数器,溢出时置位TF2(定时器2溢出标志位)。该位可用于产生中断。
当EXEN2=1时,外部输入T2EX由1变0(下降沿)时,将定时器2中TL2和TH2的当前值各自捕获到RCAP2L和RCAP2H。T2EX的负跳变使T2CON中EXF2置位,EXF2也像TF2一样产生中断。