嵌入式学习笔记(10)——51单片机之中断(定时器中断)
2013-05-19 22:30
555 查看
1. CPU时序的有关知识
(1)振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。
(2)状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。
(3)机器周期:1个机器周期含6个状态周期,12个振荡周期(使用计时器时,每隔一个机器周期计时器加1)。
(4)指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。
2. 学习定时器前须明白:
(1)51单片机有2组定时器/计数器(52单片机有三组),可定时或计数。
(2)定时器/计数器和单片机的CPU是相互独立的,定时器/计数器工作的过程是自动完成的,不需要CPU的参与。
(3)51单片机中的定时器/计数器是根据机器内部的时钟或者外部的脉冲信号对寄存器(即TH0、TL0和TH1、TL1)中的数据加1。
3. TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标识。
GATE:门控位,用于控制定时器的启动是否受外部中断源信号的影响。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作。 GATE=1时,用软件置TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。
C/T:C/T=0为定时模式;C/T=1为计数模式。
M1M0:工作方式设置位,共四种工作方式。
00——13位定时/计数器【TL0或TL1的低5位(高3位未用)和TH0或TH1的8位组成,TL0或TL1的低5位溢出时向TH0或TH1进位,TH0或TH1溢出时,置位TCON中的TF0或TF1标志,向CPU发出中断请求,CPU响应中断后,TF0或TF1自动清0。初始值=2^13 - 定的时间或计的数】
01——16位定时/计数器【初始值=2^16 - 定的时间或计的数】
10——8位自动重装定时/计数器【TH0、TH1保存初始值,TL0、TL1从初始值开始加1,溢出后TH0、TH1中的初始值又重新装入TL0、TL1。初始值=2^8 - 定的时间或计的数,特别适用于较精确的脉冲信号发生器。】
11—— T0分成两个独立的8位定时/计数器;T1此方式停止计数。【TL0溢出时TF0置1,TH0溢出时TF1置1。】
TF0、TF1:T0、T1溢出时,由硬件自动将TF0、TF1置1,CPU响应中断后TF0、TF1由硬件自动清0;也可用软件将TF0、TF1置1或清0,效果同硬件一样。
4. 使用定时器,该做哪些工作?
(1)对TMOD赋值,以确定T0和T1的工作方式,TMOD各位如上面的图片所示;
(2)计算初值,并将其写入TH0、TL0或TH1、TL1【如晶振12MHz,定时50ms,TH0=(65536-50000)/256,TL0=(65536-50000)%256 】;
(3)开EA,开放定时器中断(IE寄存器如下图)。
(4)使TR0或TR1置位,启动定时/计数器定时或计数(在 TCON寄存器中)。
(5)写中断服务程序,注意对应的中断号。
(1)振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)。
(2)状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。
(3)机器周期:1个机器周期含6个状态周期,12个振荡周期(使用计时器时,每隔一个机器周期计时器加1)。
(4)指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。
2. 学习定时器前须明白:
(1)51单片机有2组定时器/计数器(52单片机有三组),可定时或计数。
(2)定时器/计数器和单片机的CPU是相互独立的,定时器/计数器工作的过程是自动完成的,不需要CPU的参与。
(3)51单片机中的定时器/计数器是根据机器内部的时钟或者外部的脉冲信号对寄存器(即TH0、TL0和TH1、TL1)中的数据加1。
3. TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标识。
GATE:门控位,用于控制定时器的启动是否受外部中断源信号的影响。GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作。 GATE=1时,用软件置TR0或TR1为1,同时外部中断引脚INT0/1也为高电平时,才能启动定时/计数器工作。
C/T:C/T=0为定时模式;C/T=1为计数模式。
M1M0:工作方式设置位,共四种工作方式。
00——13位定时/计数器【TL0或TL1的低5位(高3位未用)和TH0或TH1的8位组成,TL0或TL1的低5位溢出时向TH0或TH1进位,TH0或TH1溢出时,置位TCON中的TF0或TF1标志,向CPU发出中断请求,CPU响应中断后,TF0或TF1自动清0。初始值=2^13 - 定的时间或计的数】
01——16位定时/计数器【初始值=2^16 - 定的时间或计的数】
10——8位自动重装定时/计数器【TH0、TH1保存初始值,TL0、TL1从初始值开始加1,溢出后TH0、TH1中的初始值又重新装入TL0、TL1。初始值=2^8 - 定的时间或计的数,特别适用于较精确的脉冲信号发生器。】
11—— T0分成两个独立的8位定时/计数器;T1此方式停止计数。【TL0溢出时TF0置1,TH0溢出时TF1置1。】
TF0、TF1:T0、T1溢出时,由硬件自动将TF0、TF1置1,CPU响应中断后TF0、TF1由硬件自动清0;也可用软件将TF0、TF1置1或清0,效果同硬件一样。
4. 使用定时器,该做哪些工作?
(1)对TMOD赋值,以确定T0和T1的工作方式,TMOD各位如上面的图片所示;
(2)计算初值,并将其写入TH0、TL0或TH1、TL1【如晶振12MHz,定时50ms,TH0=(65536-50000)/256,TL0=(65536-50000)%256 】;
(3)开EA,开放定时器中断(IE寄存器如下图)。
(4)使TR0或TR1置位,启动定时/计数器定时或计数(在 TCON寄存器中)。
(5)写中断服务程序,注意对应的中断号。
相关文章推荐
- 嵌入式学习笔记(9)——51单片机之中断(外部中断)
- 嵌入式学习笔记(11)——51单片机之中断(串口通信)
- 嵌入式学习笔记(2)——51单片机之开发环境搭建
- cortex_m3_stm32嵌入式学习笔记(八):定时器中断实验(定时器的更新中断)
- 单片机学习笔记--外部中断,定时器,串口中断
- 嵌入式学习笔记(20)——AVR单片机之中断
- 嵌入式学习笔记(3)——51单片机之闪烁灯设计
- 嵌入式学习笔记(13)——51单片机之D/A转换器
- STM32学习笔记——定时器中断(向原子哥学习)
- 嵌入式学习笔记(16)——AVR单片机之优势
- 嵌入式开发之C基础学习笔记10--总结
- 学习笔记 从零开始学单片机(3) 定时器
- cortex_m3_stm32嵌入式学习笔记(四):外部中断实验
- 嵌入式学习--step12 外部中断与定时器中断学习
- cortex_m3_stm32嵌入式学习笔记(十四):RTC实时时钟(秒中断)
- TQ2440 学习笔记—— 10、嵌入式编程基础知识【arm-linux-ld 选项】
- 51学习之定时器中断的两种方式——查询和中断
- arm中断与定时器学习笔记
- 用Proteus学习51单片机之中断
- 嵌入式学习笔记(19)——AVR单片机之C51向ICCAVR的移植