单片机第六章定时器、计数器及应用.ppt
文本预览下载声明
第6章 定时器/计数器及应用 6.1 定时器/计数器的结构 6.2 定时器/计数器的工作方式 6.1 定时器/计数器的结构 6.1.1 定时器/计数器的结构 定时器/计数器的结构如图6-1所示。 6.1.2 定时器/计数器的工作方式寄存器TMOD 定时器/计数器是一种可编程部件,在工作之前必须通过软件设定它的工作方式,即对工作方式寄存器TMOD中每位进行设定。下面介绍每位的含义: TMOD(89H) 其中,低4位用于决定T0的工作方式,高4位用于决定T1的工作方式。 1、M1和M0工作方式控制位 M0和M1为工作方式控制位,确定4种工作方式,如表7-1所示。 2、C/T定时器/计数器方式选择位 C/T=0,设置为定时方式,对机器周期进行计数; C/T=1,设定为计数方式,对外部信号进行计数, 外部信号接至T0(P3.4)或T1(P3.5)引脚。 3、GATE门控位 GATE=0时,只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1); GATE=1时,只有在INT0(或INT1)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器T0(或T1)工作。 6.1.3 定时器/计数器的控制寄存器TCON 设定好了定时器/计数器的工作方式后,它还不能进入工作状态,必须通过设置控制寄存器TCON中的某些位来启动它工。要使定时器/计数器停止运行,也必须通过设置TCON中的某些位来实现。当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。下面介绍控制寄存器TCON每位的含义: TF1:定时器T1溢出标志位。当定时器T1溢出时,由硬件自动使TF1置1,并向CPU申请中断。CPU响应中断后,自动对TF1清零。TF1也可以用软件清零。 TR1:定时器T 1运行控制位。可由软件置1(或清零)来启动(或关闭)定时器T1,使定时器T1开始计数。用指令SETB TR1(或CLR TR1)使TR1置1(或清零)。 TF0:定时器T0溢出标志位。其功能与TF1相同。 TR0:定时器T0运行控制位。其功能与TR1相同。 IE1:外部中断1请求标志位。 IT1:外部中断1触发方式控制位。 IE0:外部中断0请求标志位。 IT0:外部中断0触发方式控制位。 IE1、IT1、IE0、IT0这4位将在第3节讲述。 控制寄存器TCON的位地址是88H,可以对它进行位寻址。 6.2 定时器/计数器的工作方式 6.2.1 工作方式0 定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和TL0的低5位,组成一个13位定时器/计数器。 1、工作在定时方式 2、工作在计数方式 【例6-1】利用定时器T0产生定时脉冲。每隔2ms产生宽度为2个机器周期的正脉冲,由P1.0输出此定时序列脉冲信号(设时钟频率为6MHZ)。 解:首先求出定时器T0初值。由于时钟频率为6MHZ,所以,机器周期为2μs。 因为:t=(213-T0初值)? 机器周期 所以,当t=2ms时,则:(213-T0初值)? 2?10-6=2?10-3 解得:T0初值=709611000B,其中将高8B=DDH赋给TH0,低5位11000B=18H赋给TL0。 方法一: 采用查询工作方式,编程如下: ORG 0000H AJMP MAIN ORG 0100H MAIN: CLR P1.0 MOV TMOD , #00H ;设定T0的工作方式 MOV TH0 , #0DDH ;给定时器T0送初值 MOV TL0 , #18H SETB TR0 ;启动T0工作 LOOP: JNB TF0 , $ ;$为当前指令指针地址 CLR TF0 SETB P1.0 ;产生2μs正脉冲 CLR P1.0 MOV TH0 , #0DDH ;重装载TH0和TL0 MOV TL0 , #18H SJMP LOOP END 方法二: 采用中断工作方式,编程如下: ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: CLR P1.0 MOV TH0 , #0DDH ;给定时器T0送初值 MOV TL0 , #18H MOV IE , #82H ;允许T0中断 SETB TR0 ;启动T0 SJMP $ 中断服务程序: ORG 0300H T0
显示全部