单片微型计算机原理及其应用_1.ppt

单片微型计算机原理及其应用_1

5.2 定时/计数器的工作方式 一、 方式0 当M1M0两位为00时,定时/计数器被选为工作方式0,其逻辑结构如图 5?3 所示。 图 5?3 T0(或T1)方式0结构 二、 方式1 图 5?4 T0(或T1)方式1结构 三、 方式2 图 5?5 T0(或T1)方式1结构 三、 方式2 图 5?6 T0(或T1)方式2结构 四、 方式3 图 5?7 T0方式3下和T1结构 一、 方式0、方式1的应用 例5-1 选择T1方式0用于定时,在P1。1输出周期为1ms的方波,晶振fosc=6MHZ。 根据题意,只要使P1。1每隔500μs取反一次即可得到1ms方波,因而T1的定时时间为 500μs。 将T1设为定时方式0:GATE=0,C/T(—)=0,M1M0=00;T0不用可为任意,只要不使其进入方式3,一般取0即可。故TMOD=00H。系统复位后TMOD为0,所以不必对TMOD置初值。下面计算500μs定时T1的初值: 机器周期 T=12/fosc=12/6×106=2μs 设初值为X则: (213-X)×2×10-6 s =500×10-6 s X=7942D=1111100000110B=1F06H 因为在作13位计数器用时,TL1高3位未用,应写0,X的低5位装入TL1的低5位,所以TL1=06H;X的高8位应装入TH1,所以TH1=F8H。 源程序如下: ? ? ? ? ? MOV TL1,#06H ;给TL1置初值 ? MOV TH1,#F8H ;给TH1置初值 ? SETB TR1 ;启动T1 LP1: JBC TF1,LP2 ;查询计数溢出否 ? AJMP LP1 ? LP2: MOV TL1,06H ;重装初值 ? MOV TH1,F8H ? ? CPL P1。1 ;输出取反 ? AJMP LP1 ;重复循环 二、 方式2的应用 例5-2 用定时器1方式2计数,要求每计满100次,将P1。0取反。 根据题意,外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。方式2有自动重装初值的功能,初始化后不必再置初值。 初值 X=28-100=156D=9CH TH1=TL1=9CH TMOD=60H 源程序如下: ? MOV TMOD,#60H ;设置T1为方式2 ? MOV TL1,#9CH ;置初值 ? MOV TH1,#9CH ? ? SETB TR1 ;启动T1 DEL: JBC TF1,REP ;查询计数溢出 ? AJMP DEL ? REP: CPL P1。0 ;输出取反 ? AJMP DEL ? 三、 门控位的应用 图 5?8 外部正脉冲宽度测量 例5-3 利用T0门控位测试INT0引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。 根据要求可这样设计程序:将T0设定为方式1,GATE设为1,置TR0为1。一旦INT0(P3。2) 引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取T0的计数值并显示。 测试过程如下: 源程序如下: BEGIN: MOV TMOD,# O9H ;T0工作于方式1,GATE置1 ? MOV TL0,#00H ? ? MOV TH0;#00H ? WAIT1: JB P3。2,WAIT1 ;等待INT0变低 ? SETB TR0 ;启动T0 WAIT2: JNB P3。2,WAIT2 ;等待正脉冲到 WAIT3: JB P3。2,WAIT3 ;等待INT0变低 ? CLR TR0 ;停止T0计数 ? MOV R0,#DISBUF ;显示缓冲区首地址送R0 ? MOV A,TL0 ;机器周期的存放格式为低位占低地址,高位占高地址,连续4个显示缓冲单元 ? XCHD A,@R0 ? ? INC R0 ? ? SWAP A ? ? XCHD A,@R0 ? ? INC R0 ? ? MOV A,TH0 ? ? XCHD A,@R0 ? ? INC R0 ? ? SWAP A ? ? XCHD A,@R0 ? DIS: LCALL DISUP ;长调用显示子程序 ? AJMP DIS ;重复显示机器周期数 由于定时方式1的16位计数长度有限,被测脉冲

文档评论(0)

1亿VIP精品文档

相关文档