单片机第4章 定时与中断
Single Chip Microcomputer 定时/计数器的结构 组成:80C51定时/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON四部分组成 定时器0(T0)和定时器1(T1): (1)80C51单片机内部有两个16位的可编程定时/计数器,称为定时器0(简称T0)和定时器1(简称T1),可编程选择其作为定时器用或作为计数器用。 (2)16位的定时/计数器分别由两个8位寄存器组成,即:T0由TH0和TL0构成,T1由TH1和TL1构成,TL0、TL1、TH0、TH1的访问地址依次为8AH?8DH。每个寄存器均可单独访问,这些寄存器是用于存放定时初值或计数初值的。 3、定时器/计数器工作方式控制寄存器(TMOD) 4、定时器/计数器控制寄存器(TCON) 5、定时器/计数器的初始化 1). 定时/计数器的初始化步骤 由于定时/计数器的功能是由软件编程确定的,所以,一般在使用定时器/计数前都要对其进行初始化。初始化骤如下: (1) 确定定时/计数器的工作方式,确定方式控制字,并写入TMOD。 (2) 预置定时初值或计数初值,根据定时时间或计数次数,计算定时初值或计数初值,并写入TH0、TL0或TH1、TL1。 (3) 根据需要开启定时/计数器的中断,直接对IE寄存器中的相应位(EA、EX0、EX1、ET0、ET1)赋值。 (4) 启动定时/计数器工作,将TCON中的TR1或TR0置1。 2). 定时或计数初值的计算 定时/计数器的初值因工作方式的不同而不同,其定时或计数初值的计算见表4-2。 注:对表4-2作如下说明: ●表中T表示定时时间,T机表示机器周期(T机=12×1/fosc); ●计数初值公式中的计数值为脉冲个数; ●在方式3中只讨论T0。T0被分为两个独立的8位计数器TL0和TH0。而TL0可定时亦可计数;而TH0只能用作简单的内部定时,不能用作对外部脉冲进行计数。 【例4-1】:定时器1(T1)采用方式1来定时,要求每50ms溢出一次,如采用12 MHz晶振,则计数周期T机=1 ?s,求定时初值X。 解:根据定时初值X 的计算公式可得: 【例4-2】: 要求定时器1(T1)采用方式0、方式1和方式2来计100个脉冲的计数初值X。 解:根据计数初值X 的计算公式可得: 方式0: X=213-计数值=8192-100=8092=1F9CH 方式1:X=216-计数值 =65536-100=65436=FF9CH 方式2:X=28-计数值=256-100=156=9CH 3).定时或计数初值的装入 现以【例4-2】的计数初值X为例,来介绍定时/计数器在不同工作方式下初值的装入方法。 ① 方式0是13位定时/计数器,若采用定时/计数器T1,则计数初值X的高八位装入TH1,而低五位装入TL1的低五位(TL1的高三位无效,可填补0)。所以要装入1F9CH初值,应按照如下方法进行。 1F9CH=0001 1111 1001 1100B 把13位中的高八位1111 1100B装入TH1,而把13位中的低五位xxx1 1100B装入TL1(xxx用“0”填入)。用指令来装入计数初值为: MOV TH1,#0FCH ;#FCH→TH1 MOV TL1,#1CH ;#1CH→TL1 ② 方式1是16位定时/计数器,若采用定时/计数器T1,则计数初值X的高八位装入TH1,而低八位装入TL1,用指令来装入计数初值为: MOV TH1,#0FFH ;#0FFH→TH1 MOV TL1,#9CH ;#9CH→TL1 ③ 方式2是自动重装入初值8位定时/计数器,只要装入一次,以后就自动装入初值。若采用定时/计数器T1,则计数初值X既要装入TH1,也要装入TL1,用指令来装入计数初值为: MOV TH1,#9CH ;#9CH→TH1 MOV TL1,#9CH ;#9CH→TL1 工作方式0(M1M0=00) 特点: 13位的计数器结构(由TH和TL的低五位构成) 计数范围:1~213 定时时间:(8192-初值)*T机器周期 工作方式0的逻辑结构图及工作过程 工作方式1(M1M0=01) 特点: 16位的计数器结构(由TH和TL的全部构成) 计数范围:1~216 定时时间:(65536-初值)*T机器周期 工作方式2(M1M0=10) 特点: 为8位的计数器结构(由TL的全部构成,TH作为预置寄
原创力文档

文档评论(0)