80C52、AT89C52的定时/计数器2
来源:互联网 发布:淘宝开鲜花店 编辑:程序博客网 时间:2024/05/22 11:54
- 80C52、AT89C52的定时/计数器2
- 作者:佚名 发布时间:2009-10-30 阅读次数:1325 字体大小: 【小】 【中】【大】
80C52、AT89C52、80C51FA/FB等单片机增加了一个16位定时/计数器T2,可用于定时或外部事件计数。它有三种工作方式:16位自动重装初值的定时/计数器、捕捉事件、串行口波特率发生器。与T2有关的外部引脚是:P1。0-外部计数脉冲输入端T2,P1。1-外部控制端T2EX。
8052、AT89C52、80C51FA/FB等单片机增加了一个16位定时/计数器T2,可用于定时或外部事件计数。它有三种工作方式:16位自动重装初值的定时/计数器、捕捉事件、串行口波特率发生器。与T2有关的外部引脚是:P1。0-外部计数脉冲输入端T2,P1。1-外部控制端T2EX。
1、 T2的特殊功能寄存器
1) 控制寄存器T2CON(C8H)
位:TF2 EXF2 RCLK TCLK EXEN2 TR2 C//T2 CP//RL2
TF2:T2溢出中断标志,在捕捉方式和自动重装初值方式中计数溢出时置1,对应中断入口002BH,但中断响应后,必须由软件清0。在串行口波特率发生器方式中TF2不会置1。
EXF2:T2外部中断标志。当EXEN2=1(T2外部中断允许)时,引脚T2EX(P1。1)的负跳变使EXF2=1,CPU响应中断,入口地址002BH;EXF2也必须由软件清0。
EXEN2:T2外部中断允许标志。使EXEN2=1,当T2工作在捕捉方式时,引脚T2EX上出现的负跳变使EXF2=1,申请中断,同时TH2、TL2的当前值自动送入RCAP2H、RCAP2L寄存器;如果T2工作在重载初值方式,那么T2EX的负跳变将RCAP2H和RCAP2L的内容自动装入TH2、TL2,同时EXF2=1,申请中断。EXEN2=0时,T2EX引脚上的变化对T2工作无影响。
RCLK、TCLK:选择串行口波特率发生器方式。RCLK=1和TCLK=1时,T2的溢出率是串行口发送和接收的时钟;当只有RCLK=1时,T2只是串口的接收时钟;只有 TCLK=1时,T2只是串口的发送时钟。此时忽略CP//RL2位。
CP//RL2:自动重装方式和捕捉方式选择(此时RCLK和TCLK应为0)。为0-自动重装方式,为1-捕捉方式。
2) TH2、TL2、RCAP2H、RCAP2L。
2、T2的工作方式
1) 初值自动重装入方式
寄存器TH2、TL2是16位加1的计数器,RCAP2H、RCAP2L是存放初值的寄存器。
此方式中,CP//RL2=0,打开了RCAP2H、RCAP2L 通向TH2、TL2的三态门,而关闭反方向的门。
当C//T2=0,TR2=1时,T2以定时器方式工作,12/fosc为计数最小单元。16位定时精度要比T0、T1高。
当C//T2=1,TR2=1时,T2以计数器方式工作,引脚P1。0上输入的脉冲为计数信号(负跳变)。
当T2计数溢出时,使TF2=1,同时把RCAP2H、RCAP2L的内容自动装入TH2、TL2并开始重新计数。
在此方式中,若置EXEN2=1时,除上述功能外,引脚P1。1上的负跳变将RCAP2H、RCAP2L的内容自动装入TH2、TL2使之提前开始重新计数,同时置EXF2=1,申请中断。
2) 捕捉方式
此方式中,CP//RL2=0,关闭了RCAP2H、RCAP2L 通向TH2、TL2的三态门,而打开反方向的门。因此不管是工作在定时器还是计数器方式,当T2溢出时,仅使EXF2=1,但计数初值不会自动重装,而须用软件装入。此方式的主要用途是,当EXEN2=1时,引脚T2EX(P1。1)上的电平负跳变会将TH2、TL2的当前数值锁存到RCAP2H、RCAP2L,并置EXF2=1,申请中断。这是‘捕捉方式’的含义,它可用于测试外部事件的发生时间。
在RCLK或TCLK为1时,T2就成为波特率发生器。它可以对内部或外部时钟脉冲计数(由C//T2决定)。
寄存器TH2、TL2是16位加1的计数器,RCAP2H、RCAP2L是存放初值的寄存器。
当C//T2=0时,T2是对频率为fosc/2的时钟脉冲计数,而不是fosc/12。计数溢出时,RCAP2H、RCAP2L的内容自动装入TH2、TL2并开始重新计数,但不会使EXF2=1,即不会产生中断。它的溢出脉冲经16分频成为串行口的发送或接收脉冲(由RCLK、TCLK决定)。
既然此方式不会引起中断,而且当EXEN2=1时,T2EX(P1。1)引脚上的负跳变对T2工作无任何影响,但又能使EXF2=1,申请中断。因此,T2EX可作为一个外部中断源使用。
1、 T2的特殊功能寄存器
1) 控制寄存器T2CON(C8H)
位:TF2 EXF2 RCLK TCLK EXEN2 TR2 C//T2 CP//RL2
TF2:T2溢出中断标志,在捕捉方式和自动重装初值方式中计数溢出时置1,对应中断入口002BH,但中断响应后,必须由软件清0。在串行口波特率发生器方式中TF2不会置1。
EXF2:T2外部中断标志。当EXEN2=1(T2外部中断允许)时,引脚T2EX(P1。1)的负跳变使EXF2=1,CPU响应中断,入口地址002BH;EXF2也必须由软件清0。
EXEN2:T2外部中断允许标志。使EXEN2=1,当T2工作在捕捉方式时,引脚T2EX上出现的负跳变使EXF2=1,申请中断,同时TH2、TL2的当前值自动送入RCAP2H、RCAP2L寄存器;如果T2工作在重载初值方式,那么T2EX的负跳变将RCAP2H和RCAP2L的内容自动装入TH2、TL2,同时EXF2=1,申请中断。EXEN2=0时,T2EX引脚上的变化对T2工作无影响。
RCLK、TCLK:选择串行口波特率发生器方式。RCLK=1和TCLK=1时,T2的溢出率是串行口发送和接收的时钟;当只有RCLK=1时,T2只是串口的接收时钟;只有 TCLK=1时,T2只是串口的发送时钟。此时忽略CP//RL2位。
CP//RL2:自动重装方式和捕捉方式选择(此时RCLK和TCLK应为0)。为0-自动重装方式,为1-捕捉方式。
2) TH2、TL2、RCAP2H、RCAP2L。
2、T2的工作方式
1) 初值自动重装入方式
寄存器TH2、TL2是16位加1的计数器,RCAP2H、RCAP2L是存放初值的寄存器。
此方式中,CP//RL2=0,打开了RCAP2H、RCAP2L 通向TH2、TL2的三态门,而关闭反方向的门。
当C//T2=0,TR2=1时,T2以定时器方式工作,12/fosc为计数最小单元。16位定时精度要比T0、T1高。
当C//T2=1,TR2=1时,T2以计数器方式工作,引脚P1。0上输入的脉冲为计数信号(负跳变)。
当T2计数溢出时,使TF2=1,同时把RCAP2H、RCAP2L的内容自动装入TH2、TL2并开始重新计数。
在此方式中,若置EXEN2=1时,除上述功能外,引脚P1。1上的负跳变将RCAP2H、RCAP2L的内容自动装入TH2、TL2使之提前开始重新计数,同时置EXF2=1,申请中断。
2) 捕捉方式
此方式中,CP//RL2=0,关闭了RCAP2H、RCAP2L 通向TH2、TL2的三态门,而打开反方向的门。因此不管是工作在定时器还是计数器方式,当T2溢出时,仅使EXF2=1,但计数初值不会自动重装,而须用软件装入。此方式的主要用途是,当EXEN2=1时,引脚T2EX(P1。1)上的电平负跳变会将TH2、TL2的当前数值锁存到RCAP2H、RCAP2L,并置EXF2=1,申请中断。这是‘捕捉方式’的含义,它可用于测试外部事件的发生时间。
在RCLK或TCLK为1时,T2就成为波特率发生器。它可以对内部或外部时钟脉冲计数(由C//T2决定)。
寄存器TH2、TL2是16位加1的计数器,RCAP2H、RCAP2L是存放初值的寄存器。
当C//T2=0时,T2是对频率为fosc/2的时钟脉冲计数,而不是fosc/12。计数溢出时,RCAP2H、RCAP2L的内容自动装入TH2、TL2并开始重新计数,但不会使EXF2=1,即不会产生中断。它的溢出脉冲经16分频成为串行口的发送或接收脉冲(由RCLK、TCLK决定)。
既然此方式不会引起中断,而且当EXEN2=1时,T2EX(P1。1)引脚上的负跳变对T2工作无任何影响,但又能使EXF2=1,申请中断。因此,T2EX可作为一个外部中断源使用。
在此方式工作进程中,CPU不要对TH2、TL2、RCAP2H、RCAP2L进行写的操作,否则使波特率不稳定。
- 80C52、AT89C52的定时/计数器2
- 单片机的定时/计数器
- STM8 定时计数器2
- Proteus仿真AT89C52——计数器
- 基于80c52的时钟程序
- 51单片机的定时/计数器
- MCS-51的定时/计数器
- 定时/计数器的verilog代码
- 52单片机中定时/计数器2的研究
- 52单片机中定时/计数器2的研究 .
- Arduino定时计数器 0、1、2的灵活使用
- AT89C52实现的计时器
- 定时器/计数器的定时或计数范围
- 三菱PlC计数器与定时的使用
- 51单片机定时/计数器的功能实现
- 80c52中基于中断的两个程序模块
- AT89C52实现的DA输出
- AT89C52实现的DA输出
- [SSH]关于cglib 2.1.3.jar
- 利用TESLA GPU和MATLAB实现大规模型数据并行处理
- oracle中级联删除
- Hibernate构建映射文件时。表中要有主键
- 谈AMF和AMF Message
- 80C52、AT89C52的定时/计数器2
- ubuntu 搭建LAMP(Apache+PHP+MYSQL)开发环境
- 再留恋也留不住,再坚强也强不过命!
- 一些简单面试题
- 关于Extjs2.0日期控件(DateField)在FireFox3下
- ORACLE ERP 的前世今生
- ubuntu 禁用触摸板
- IE9在windows 7最优选择
- jQuery+PHP实战实现浏览更多内容