第十八讲 计数/定时器的应用 教学方法: 讲授法 授课时数: 2学时 教学目的: 1、GATE的用法 2、掌握定时/计数参数的计算方法 3、掌握定时/计数器工作模式的确定 教学重点: 定时/计数器的初 教学难点: GATE的用法 教学环节: 组织教学:(5分钟) 检查学生人数,强调课堂纪律和要求,自我介绍 组织教学:检查学生人数,进入上课状态。 复习旧课:1、定时 / 计数器的控制位有哪些?分别在何处? 2、计数初值如何计算? 讲授新课: §4-2 定时 / 计数器应用 TMOD GATE C//T M1 M0 GATE C//T M1 M0 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 例2、设fosc = 6MHz,利用单片机内定时/计数器及P10口线输出1000个脉冲,脉冲周期为2ms,试编程。 解: P10 · T1 2ms T = 12×1/fosc = 2us 选取T0定时;T1计数。 设T0采用中断方式产生周期为2ms方波,T1对该方波计数,当输出至第1000个脉冲时,使TF1置1。 在主程序中用查询方法,检测到TF1变1时,关掉T0,停止输出方波。 T0、T1参数的确定: T0模式0、定时:脉宽为脉冲周期的一半 所以,X = 213-1ms / 2us = 0001 1110 0000 1100B TH0 = 0F0H TL0 = 0CH T1模式1、计数:N = 1000 则 X = 65536-1000 = 64536 = 0FC18H (若选模式0也可以,此时X = 7192=1C18H) 程序: ORG 0000H LJMP MAIN ORG 000BH LJMP TOS ORG 1000H MAIN: MOV TMOD,#50H;T0定时,模式0;T1计数,模式1 MOV TL0,#0CH MOV TH0,#0F0H MOV TL1,#18H MOV TH1,#0FCH SETB TR1 SETB TR0 SETB ET0 SETB EA WAIT: JNB TF1,WAIT;查询1000个脉冲计够没有?没有等待。 CLR EA CLR ET0 ANL TCON,#0FH ; 停T0、T1 SJMP $ TOS:MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI END 例3、脉冲参数测量——GATE功能的使用。 电路连接如下图所示。 脉冲高电平(计数)长度值存于21H、20H中, 脉冲低电平长度存于23H、22H中。 解: 复习GATE的用法: GATE = 0时,TRi = 1,即可启动Ti定时 / 计数 GATE = 1时,TRi = 1,且/INTi =1,才启动定时 / 计数。 ORG 0000H LJMP MAIN ORG 2000H MAIN:MOV TMOD,#99H ;T0、T1均工作在定时, ; 模式1,GATE=1 MOV A,#00H ;T0、T1赋计数初值00H,定时最长时间 ;为0000 ~ 65536 MOV TL0,A MOV TH0,A MOV TL1,A MOV TH1,A TEST0:JB P32,TEST0 ;检测是否到a点 SETB TR0 ;到a点,TR0 = 1,做好取计时值准备。 TEST1:JNB P32,TEST1 ;检测是否到1点 SETB TR1 ;到1点T0计时;TR1 = 1,做好T1计时准备。 TEST2:JB P32,TEST2 ;检测是否到2点 CLR TR0 ;到2点,停止T0计时,T1开始计时。 MOV 20H,TH0 ;保存T0计时结果 MOV 21H,TL0 TEST3:JB P33,TEST3 ;检测是否到3点 CLR TR1 ;到3点,停止T1计数 MOV 22H,TH1 ;保存T1计数结果 MOV 23H,TL1 LCALL DISP SJMP $ 小结:1、定时/计数的四种方式是怎样的? 2、如何计算计数初值?如何编程送入计数初值? 3、GATE的用法是怎样的? 布置作业:P141 10、 11 一、例1 1、…….. 2、…….. 3、…….. 二、例2 1、…….. 2、…….. 3、…….. . 三、例3 1、…….. 2、…….. 3、…….. 小结. 作业:  版书设计