预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共57页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第7章单片机的定时器/计数器7.1定时器/计数器概述7.1.1定时/计数器的结构 实质:加1计数器(16位),由高8位(TH)和低8位(TL)两个寄存器组成。 TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。TMOD、TCON与T0、T1的结构框图 7.1.2定时/计数器的工作原理设置为定时器模式时,计数值N=T/Tcy 注:加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。注意:此SFR只能对其进行字节操作,不能进行位操作GATE:门控位。 GATE=0时,只要用软件使TCON中的TR0或TR1置1启动定时/计数器工作; GATE=1时,外部中断请求信号启动定时器。 :定时/计数模式选择位。 =0为定时模式;=1为计数模式。 M1M0:工作方式设置位。门控位GATE具有特殊的作用: 当GATE=0时,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始; 当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号和TR0共同控制。 此时当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。注意:结论二:定时/计数器应用举例 初始化程序应完成如下工作: 对TMOD赋值,以确定T0和T1的工作方式; 计算初值,并将其写入TH0、TL0或TH1、TL1; 中断方式时,则对IE赋值,开放中断; 使TR0或TR1置位,启动定时/计数器定时或计数。例7-1应用定时器T0产生1ms定时(方式0),并使P1.0输出周期为2ms的方波,已知晶振频率为6MHz.请设计程序ORG2000H MOVTMOD,#00H;写入方式控制字 MOVTL0,#0CH;计数初值写入 MOVTH0,#0F0H SETBTR0;启动T0 LOOP:JBCTF0,PE;TF0=1溢出跳转 AJMPLOOP; PE:MOVTL0,#0CH; MOVTH0,#0F0H CPLP1.0;思考? AJMPLOOP END ORG0000H LJMPMAIN;跳转到主程序 ORG000BH;T0的中断入口地址 LJMPDVT0;转向中断服务程序 ORG0100H MAIN:MOVTMOD,#01H;置T0工作于方式1 MOVTH0,#0D8H;装入计数初值 MOVTL0,#0F0H SETBET0;T0开中断 SETBEA;CPU开中断 SETBTR0;启动T0 SJMP$;等待中断 DVT0:CPLP1.0;P1.0取反输出 MOVTH0,#0D8H;重新装入计数值 MOVTL0,#0F0H RETI;中断返回 END方式0、方式1的应用 例:选择T1方式0用于定时,在P1.1输出周期为1ms的方波,晶振fosc=6MHZ。 分析:1、根据题意,只要使P1.1每隔500µs取反一次即可得到1ms方波,因而T1的定时时间为500µs源程序如下:方式2的应用 例:用定时器1方式2计数,要求每计满100次,将P1.0取反。 根据题意,外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。方式2有自动重装初值的功能,初始化后不必再置初值。 初值X=28-100=156D=9CH TH1=TL1=9CH TMOD=60H源程序如下:门控位的应用BEGIN: 7.3定时/计数器及中断系统综合应用3)中断管理:允许T0中断,开放总中断 即:IE应装10000010B。 4)启动定时器T0: SETB TR0 5)设置软件计数器初值: (如使用R7)即R7应装0AH 6)动态停机: SJMP $主程序如下: MAIN:MOVTMOD,#01H;设定T0为方式1 MOVTH0,#3CH;装入定时常数高8位 MOVTL0,#0B0H;装入定时常数低8位 MOVIE,#82H ;开放T0中断 SETBTR0 ;启动T0 MOVR7,#0AH ;设置软件计数器 SJMP$(2)中断服务程序 任务: 1)恢复T0常数; 2)软件计数器减1; 3)判断软件计数器是否为0。为0时,改变P1.0状态,并恢复软件计数器初值;不为0时中断返回。 程序如下: TOINT: MOV TL0,#0B0H ;恢复定时常数 MOV TH0,#3CH ; DJNZ R7,NEXT CPL P1.0 MOV R7,#0AH NEXT: RETI完整程序如下: ORG0000H AJMPMAIN ORG000BH AJMPTOINT ORG0030H MAIN:MOV T