系列单片机定时器计数器.ppt

上传人:小飞机 文档编号:5811526 上传时间:2023-08-22 格式:PPT 页数:63 大小:874.50KB
返回 下载 相关 举报
系列单片机定时器计数器.ppt_第1页
第1页 / 共63页
系列单片机定时器计数器.ppt_第2页
第2页 / 共63页
系列单片机定时器计数器.ppt_第3页
第3页 / 共63页
系列单片机定时器计数器.ppt_第4页
第4页 / 共63页
系列单片机定时器计数器.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《系列单片机定时器计数器.ppt》由会员分享,可在线阅读,更多相关《系列单片机定时器计数器.ppt(63页珍藏版)》请在三一办公上搜索。

1、第七章 51系列单片机的定时器/计数器,71 定时器/计数器概述,711 定时方法,在单片机控制系统中,定时的方法有:1.软件定时 靠执行一个循环程序以进行时间延迟。特点是:时间精确,且不需外加硬件电路。缺点是:定时时要占用CPU,增加CPU的开销。2硬件定时 使用硬件电路来完成。方法是:定时功能全部由硬件电路完成,不占CPU的时间。缺点是:定时参数一旦设定,修改比较困难。适用于:时间较长的定时3可编程定时器 通过系统对时钟脉冲的计数来实现。通过程序可以改变计数值,也就改变了定时时间。同时可编程定时器具有定时和计数功能。,7.1.2 定时器/计数器的结构,MCS-51系列单片机有两个16位的定

2、时器,分别为T0和T1。它们都有定时和事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。,T0由两个8位特殊功能寄存器TH0和TL0构成;T1由TH1和TL1构成。T0、T1由软件设置为定时器工作方式或计数方式及其他灵活多样的可控功能方式。T0、T1的功能都由特殊功能寄存器TMOD和TCON所控制。,AT89C51定时器结构:,定时器工作方式:每个机器周期使定时器(T0或T1)的数值加1直至计数溢出。,计数器工作方式:在每个机器周期的S5P2期间采样T0和T1引脚,若某一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。最高计数频率为振荡频率的1/24。,8位寄存器

3、TMOD和TCON,用来设置T0和T1的操作模式和控制功能。当系统复位时,两个寄存器所有位被清0。,72 定时器/计数器的控制,GATE C/T M1 M0 GATE C/T M1 M0,1.工作模式寄存器TMOD(89H,不能位寻址只能由字节设置定时器工作模式),定时器T0工作模式定义,M1、M0:工作模式控制位(定义4 种方式):,0 0:模式0 13位定时器作用不大0 1:模式1 16位定时器经常用到1 0:模式2 可自动重装的8位定时器经常用到1 1:模式3 T0分为2个8位定时器;T1不工作几乎无用,定时器T1工作模式定义,C/T:计数器/定时器选择位 0 片内时钟定时器。对机器周期

4、脉冲计数定时 1 外部事件计数器。对T0(T1)引脚的负脉冲计数;,GATE C/T M1 M0 GATE C/T M1 M0,T1,T0,GATE门控位:定时器可由软件与硬件两者控制 GATE=0 普通用法 定时器的启/停由软件对TR0(TR1)位写“1”/“0”控制,不管INT0、INT1的电平。,(89H),GATE=1 门控用法 INT0或INT1引脚为高电平且由软件使TR0或TR1置1时,才能启动定时器工作。,2.定时器控制寄存器TCON(88H,可位寻址),TF0(TF1):定时器0/1计数溢出标志位。=1 计数溢出;=0 计数未满 TF0(TF1)可用于申请中断或供CPU查询。在

5、进入中断服务程序时会自动清零;但在查询方式时必须软件清零。,TR0(TR1):定时器0/1运行控制位。=1 启动计数;=0 停止计数 在程序中用指令“SETB TR1”使TR1位置1,定时器T1便开始计数。,IT0,IE0,IT1,IE1,TR0,TF0,TR1,TF1,88H,89H,8AH,8BH,8CH,8DH,8EH,8FH,定时器T0/T1 中断申请过程,在已经开放T0/T1中断允许且已被启动的前提下:T0/T1加满溢出时 TF0/TF1标志位自动置“1”检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序,TF0/T

6、F1标志位会自动清“0”,以备下次中断申请。,定时/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数,7.3 定时器计数器的四种工作模式及应用,1.模式0及应用(以T0为例),振荡器,12,TL0 TH0(5位)(8位),TF0,申请中断,TR0,GATE,INT0端,1,&,C/T=0,C/T=1,控制=1开关接通,或门,与门,T0引脚,M0(0),M1(0),C/T,定时器(T0或T1)的高8位和低5位(其余三位为0)组成一个13位定时器/计数器。当TL0的低5位溢出时,向TH0进位;TH0溢出时,向中断标志位TF0进位(硬件置TF0),并申请中断。,C/T=0

7、时定时器工作方式,控制开关接通振荡器12分频输出端,T0对机器周期计数。其定时时间为:t=(213T0初值)X振荡周期X 12 当C/T=1时作外部事件计数器,控制开关使引脚T0(P3.4)与13位计数器相连,外部计数脉冲下降沿使计数器加1。,0,1,1,GATE=0时,INT0信号无效。B点电位取决于TR0的状态,于是,由TR0一位就可控制计数开关K,开启或关断T0。若软件使TR0置1,便接通计数开关K,启动T0在原值上加1计数,直至溢出。若TR0=0,则关断计数开关K,停止计数。,GATE=1时,必须 INT0=1且TR0=1时,B点才是高电平,计数开关K闭合,T0开始计数。INT0由1变

8、0时,T0停止计数。,设定时器T0工作于模式0,定时时间为1ms,fosc=6MHZ。试确定T0的初值,计算最大定时时间T。解:当T0为工作模式0时,加1计数器为13位。设T0的初值为X。则(213X)1/(6106)12=110-3S(213X)12/6=1000 X=7692转换为二进制数:X=1111000001100B T0的低5位:01100B=0CH T0的高 8位:11110000B=F0HT0的最大定时时间应于13位计数器各位全为1,即(TH0)=FFH,(TL0)=1FH。即X=0。则 T=21312/6MHZ=16.384ms,例1:,利用T0工作于模式0产生1ms的定时,

9、在P1.0引脚上输出周期为2ms的方波。设单片机晶振频率fosc=12MHZ。解:(1)选择工作模式 要在P1.0引脚上输出周期为2ms的方波,只要使P1.0每隔1ms取反一次即可。T0模式字为TMOD=00H,即T0模式0,为定时状态,不受INT0控制,TR0作为开关。(2)计算1ms定时时T0的值 设T0的计数初值为X,则(213X)110-6s=1 X 10-3 X=7192D=11100000 11000B=E018H TH0初值为E0H,TL0初值为18H。,例2:,(3)查询方式 查询方式在定时器计数过程中,CPU要不断查询溢出标志位TF0的状态。这就占用了很多CPU的工作时间,使

10、CPU的效率下降。程序清单:MOV TMOD,#00H;设置T0为模式0 MOV TL0,#18H;送初值 MOV TH0,#0E0H;SETB TR0;启动T0LOOP:JBC TF0,NEXT;查询定时时间到期否?SJMP LOOPNEXT:MOV TL0,#18H;重装时间常数 MOV TH0,#0E0H;CPL P1.0;输出取反 SJMP LOOP;重复循环,#includemain()P1_0=0;TMOD=0X00;TL0=0X18;TH0=0XE0;TR0=1;while(1)if(TF0=1)TF0=0;TL0=0X18;TH0=0XE0;P1_0=P1_0;,(4)定时器溢

11、出中断程序程序清单如下:主程序:MAIN:MOV TMOD,#00H;设置T0模式0 MOV TL0,#18H;送初值 MOV TH0,#0E0H;SETB EA;CPU开中断 SETB ET0;T0中断允许 SETB TR0;启动T0HERE:SJMP HERE;等待中断,返回主程序中断服务程序:ORG 000BH;T0中断的入口 AJMP CTC0;跳转CTC0:MOV TL0,#18H;重装初值 MOV TH0,#0E0H;CPL P1.0;输出方波 RETI;中断返回,#includemain()P1_0=0;TMOD=0X00;TL0=0X18;TH0=0XE0;EA=1;ET0=1

12、;TR0=1;while(1);void inte_T0()interrupt 1TL0=0X18;TH0=0XE0;P1_0=P1_0;,振荡器,12,TL0 TH0(8位)(8位),TF0,申请中断,TR0,GATE,INT0端,1,&,C/T=0,C/T=1,控制=1开关接通,或门,与门,T0引脚,M0(1),M1(0),C/T,2、模式1及其应用(以T0为例),TH0/TL0赋初值:TH0赋高8位,TL0赋低8位,TMOD选方式:写“M1,M0”=01 选方式1,若不用门控位,直接用软件写TR0控制T0计数启/停 若使用门控位,先置位TR0,然后由INT0端的高/低电平来控制其启/停,

13、若要允许中断,还须先置位ET0、EA等中断允许控制位,并编写中断服务程序 若不用中断,可查询“计数溢出标志TF0”的方式工作,但溢出标志TF0须软件清0,与模式0唯一的差别是:在模式1中,寄存器TH0和TL0是以全部16位参与操作。用于定时工作方式时,定时时间为:t=(216T0初值)X 振荡周期X 12用于计数方式时,计数长度为:216=65536(个外部脉冲),例3:用定时器T1产生一个50HZ的方波,由P1.1输出的方波波形如图7.3-3所示。仍使用程序查询方式,fosc=12MHZ。,解:方波周期T=1/50HZ=0.02s=20ms,用T1定时10ms。计数初值X为:X=21612

14、X 10 X 1000/12=6553610000=55536=0D8F0H源程序如下:MOV TMOD,#10H;T1模式1,定时 SETB TR1;启动T1LOOP:MOV TH1,#0D8H;装入T1计数初值 MOV TL1,#0F0H JNB TF1,$;T1没有溢出等待 CLR TF1;产生溢出清标志位 CPL P1.1;P1.1取反 SJMP LOOP;循环,#includemain()P1_1=1;TMOD=0 x10;TH1=0XD8;TL1=0XF0;TR1=1;while(1)if(TF1)TR1=0;TF1=0;TH1=0XD8;TL1=0XF0;P1_1=P1_1;TR

15、1=1;,分析:已知fosc=6MHz 则:(振荡周期)1Tc=1/6MHz(机器周期)1Tm=12Tc=12/6MHz=2S 粗略地说:Tmin 2S 16位定时器最大数值为:216=65536=0FFFFH+1 故选择方式 1 工作可以得到:Tmax=655362=131072S131.072mS,若晶振频率为6MHz,计算单片机的最小与最大定时时间:,附录:,振荡器,12,TR0,GATE,INT0端,1,&,C/T=0,C/T=1,控制=1开关接通,或门,与门,T0引脚,M0(0),M1(1),C/T,TL0(8位),TF0,申请中断,TH0(8位),溢出位,门开,三、模式2及应用(以

16、T0为例),16位计数器被拆成两个,TL0作8位计数器,TH0用以保存初值。TL0计数溢出量,不仅使TF0置1,而且还把TH0中的内容重新装入TL0中,继续计数,循环重复。在程序初始化时,TL0和TH0由软件赋予相同的初值。在定时器工作方式时,其定时时间(TF0溢出周期)为:t=(28TH0初值)X 振荡周期X 12 在计数方式时,最大的计数长度为28=256(个外部脉冲)。这种工作模式可省去用户软件中重装常数的语句,并可产生相当准确的定时时间,特别适用于串行口波特率发生器。,例4:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500s的同步脉冲。请编写程序实现该功能。,解:(1)模式

17、选择 选T0为模式2,对外部事件计数方式。当P3.4引脚上出现负脉冲,T0计数器加1,TF0置1;使T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0恢复高电平,T0恢复外部事件计数方式。,如图7.3-5所示。,(2)计算初值 T0工作在外部事件计数方式,当计数器初值为0FFH时,再加1计数器就会溢出。T0工作在定时器方式时,设晶体振荡频率为6MHZ,500s相当于250个机器周期。因此,初值X为(28X)2s=500sX=28250=6=06H,(3)程序清单START:MOV TMOD,#06H;设置T0为模式2,外部计数方式 MOV TH0,#0FFH

18、;T0计数初值 MOV TL0,#0FFH SETB TR0;启动T0计数LOOP1:JBC TF0,PTF01;查询T0溢出标志,TF0=1时转移 JMP LOOP1;TF0=0等待PTF01:CLR TR0;停止计数 MOV TMOD,#02H;设置T0模式2,定时器方式 MOV TH0,#06H;T0定时500s初值 MOV TLO,#06H CLR P1.0;P1.0清0 SETB TR0;启动定时500sLOOP2:JBC TF0,PTF02;查询溢出标志,定时到TF0=1转移 SJMP LOOP2;TF0=0等待PTF02:SETB P1.0;P1.0置 1(到了第一个500s)C

19、LR TR0;停止计数 SJMP START,#includemain()P1_0=1;while(1)TMOD=0X06;TH0=0XFF;TL0=0XFF;TR0=1;if(TF0)TR0=0;TF0=0;TMOD=0X02;TH0=0X06;TL0=0X06;,P1_0=0;TR0=1;while(!TF0);/if(TF0)TF0=0;P1_0=1;/TR0=0;,分析:fosc=6MHz 1机器周期=2 S 1KHz方波周期=1 mS 半个方波周期=500S 500uS2 uS=250 定时器最大若选择方式2 工作,8位数值为:28=256=0FFH+1 可以满足要求。计算初值:25

20、6250=6,从P1.0 脚输出频率=1KHz方波。设:晶振=6MHz。利用T1定时中断。,Th:半周期,T:周期,附录:,ORG 0000H AJMP MAIN ORG 001BH;T1的中断矢量 CPL P1.0;中断服务:P1.0取非 RETI;中断返回MAIN:MOV TMOD,#20H MOV TH0,#6 MOV TL0,#6 SETB ET1 SETB EA SETB TR1 HERE:AJMP HERE;原地等待中断 END,初始化,;选T1方式2;赋重装值;赋初值;开T1中断;开总中断;启动T1,#includemain()P1_0=1;TMOD=0X20;TH1=0X06;

21、TL1=0X06;EA=1;ET1=1;TR1=1;while(1);void inre_T1(void)interrupt 3P1_0=P1_0;,振荡器,12,TL0(8位),TF0,申请中断,T0端,C/T=0,C/T=1,控制=1开关接通,TH0(8位),TF1,申请中断,TR1位,控制=1,四、模式3及应用,GATE,M0(0),M1(0),C/T,INT0端,1,&,或门,与门,TR0,TL0用原来的C/T,TF0和T0引脚,INT0引脚。功能和操作与模式0、模式1完全相同。TH0只作简单的内部定时功能,占用定时器T1的TR1和TF1。定时器T1无模式3。,T0成为双8位定时器 T

22、1不再有定时器功能 TF1,TR1出借给TH0,振荡器,12,TL0(8位),TF0,申请中断,T0端,C/T=0,C/T=1,控制=1开关接通,TH0(8位),TF1,申请中断,TR1位,控制=1,GATE,M0(0),M1(0),C/T,INT0端,1,&,或门,与门,TR0,在定时器T0模式3时,T1仍可设置为模式02。计数开关K已被接通,C/T切换其定时器或计数器工作方式就可使T1运行。寄存器溢出时,只能将输出送入串行口或用于不需要中断的场合。,一般情况下,当定时器T1设置为模式2,用作串行口波特率发生器时,定时器T0才设置为工作模式3。,例5:设某用户系统中已使用了两个外部中断源,并

23、置定时器T1为模式2,作串行口波特率发生器用。现要求再增加一个外部中断源,并由P1.0引脚上输出一个5KHZ的方波。fosc=12MHZ。,解:设T0工作模式3计数方式,把T0的引脚作附加的外部中断源输入,TL0的计数初值为FFH,当检测到T0引脚电平出现由1到0的负跳变时,TL0产生溢出,申请中断。这相当于边沿触发的外部中断源。T0模式3下,TL0作计数用,而TH0可作为8位的定时器,定时控制P1.0引脚输出5KHZ的方波信号如图7.3-7所示。,TL0的计数初值为FFH。TH0的计数初值X计算如下:方波为5KHZ,故周期T=1/(5KHZ)=0.2ms=200s 所以用TH0定时100s时

24、,TH0的初值X计算如下:(28-X)1s=100sX=256-100=156=9CH,程序如下:MOV TMOD,#27H;T0为模式3,计数方式;T1为模式2,定时方式 MOV TL0,#0FFH;置TL0计数初值 MOV TH0,#156(9CH);置TH0计数初值 MOV TH1,#data;dataJ是根据波特率要求设置的常数 MOV TL1,#data MOV TCON,#55H;外中断0、1边沿触发,启动T0,T1 MOV IE,#9FH;开放全部中断 TL0溢出中断服务程序(由000B转来)TL0INT:MOV TL0,#0FFH;TL0重赋初值(中断处理)RETITH0溢出中

25、断服务程序(由001B转来)TH0INT:MOV TH0,#156(9CH);TH0重赋初值 CPL P1.0;P1.0取反输出 RETI,计算计数器的计数初值:编程时将计数初值送THi、TLi;,可编程器件在使用前需要进行初始化:,确定TMOD控制字:编程时将控制字送TMOD;,开中断(如果使用中断方式):编程实置位EA、ETi,TRi位置位控制定时器的启动和停止。,例题1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500s的方波脉冲,并由P1.0 输出。试以中断方式实现。,TMOD确定,T1控制,T0控制,控制字10H,要产生500s 的方波脉冲,只需在P1.0端以250

26、s为间隔,交替输出高低电平即可实现。为此,定时间应为250s。使用6z晶振,则一个机器周期为2s,设待求计数初值为,则:,计算计数器的计数初值;,(216X)210-6=25010-6 即216X=125 X210FF83H所以,初值为:TH1=0FFH,TL1=83H6-125=10000H-7DH,采用中断方式:编程时打开全局和局部中断。,由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。TR11,启动;TR10,停止。,程序设计,ORG 0000H LJMP MAIN;主程序入口 ORG 001BH LJMP INTT1;T1中断入口,INTT1:MOV TH1,#0FFH;

27、重新设置初值 MOV TL1,#83H CPL P1.0;输出取反 RETI,ORG 1000HMAIN:MOV TMOD,#10H;T1为方式1 MOV TH1,#0FFH MOV TL1,#83H;初值 SETB EA;允许中断 SETB ET1 SETB TR1;启动定时 SJMP$;等待中断,主程序:,中断处理程序:,#includemain()TMOD=0 x00;TL0=0X18;TH0=0XE0;P1_0=0;EA=1;ET0=1;TR0=1;while(1);void inter_T0()interrupt 1 TL0=0X18;TH0=0XE0;P1_0=P1_0;,例题2:

28、设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定时时间。,解:1.由fOSC=6MHz可知,MC=2us;2.由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。所以此时有:方式0:(2130)2us=214us=16384us=16.384ms,方式1:(2160)2us=217us=131.072ms,方式2、3(280)2us=29us=0.512ms,注意:以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。,第五章上机实验(1),1.分别用2种定时方式使P1口输出信号,轮流点亮8个LED,每个

29、LED点亮时间为50ms。方式1:利用调用延时子程序方式;方式2:利用定时器定时50ms,设晶振频率为12MHz;参考习题13。2.每个LED点亮时间为2s。参考P9596 接口实训(一)一.定时器/计数器应用实训。,T1控制,T0控制,控制字02H,3.题目中没有指明用T0还是T1,可任意,我 们用T0。,确定TMOD控制字,计算计数器的计数初值;,(28X)210-6=50010-6 即28X=250 X28-250=100H-FAH 06H所以,初值为:TH0=06H,TL0=06H,采用中断方式:编程时打开全局中断:置位EA 局部中断:置位ET0。,置位TR0位控制定时器的启动。,程序

30、设计,ORG 0000H LJMP MAIN;主程序入口 ORG 000BH LJMP INTT0;T0中断入口,INTT0:CPL P1.1;输出取反 RETI,ORG 1000HMAIN:MOV TMOD,#02H;T0为方式2 MOV TH0,#06H MOV TL0,#06H;初值 SETB EA;允许中断 SETB ET0 SETB TR0;启动定时 SJMP$;等待中断,主程序:,中断处理程序:,8051,P1.0,P1.7,R,LED7,.,R,LED0,.,题13 思路:1.通过P1.0P1.7分别送“1”给8个灯;,2.每次持续时间20分之一秒,即50ms,,由定时器T0来定

31、时,又知fOSC=6MHz,由例题2可知可用方式1。,T1控制,T0控制,控制字01H,确定TMOD控制字,计算计数器的计数初值;,(216X)210-6=5010-3 即216X=25000 X216-25000=10000H-61A8H 9E58H所以,初值为:TH1=9EH,TL1=58H,采用中断方式:编程时打开全局中断:置位EA 局部中断:置位ET0。,置位TR0位控制定时器的启动。,程序设计,ORG 0000H LJMP MAIN;主程序入口 ORG 000BH LJMP INTT0;T0中断入口,ORG 1000HMAIN:MOV TMOD,#01H;T0为方式1 MOV TH0

32、,#9EH MOV TL0,#58H;初值 SETB EA;允许中断 SETB ET0 SETB TR0;启动定时 MOV A,#01H;LED0先亮 MOV P1,A;SJMP$;等待中断,主程序:,中断处理程序:,INTT0:MOV TH0,#9EH;重新设置初值 MOV TL0,#58H RL A;依次点亮 RETI,P1.0,P1.7,R,LED3,R,LED0,R,LED1,R,LED2,R,LED4,R,LED5,R,LED6,R,LED7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,8051,上机实验1:方法1.调用50ms延时子程序。设晶振频率为12MHz,则机

33、器周期为1us。下面为延时子程序清单:,DEL:MOV R7,#200;1MCDEL1:MOV R6,#123;1MC NOP;1MC DJNZ R6,$;2MC DJNZ R7,DEL1;2MC RET;2MC,延时时间:t=1+200(1+1+2*123+2)+2 50000us=50ms,程序清单:,ORG 1000H MOV A,#01HLOOP:MOV P1,A LCALL DEL RL A SJMP LOOP,ORG 1100HDEL:MOV R7,#200DEL1:MOV R6,#123 NOP DJNZ R6,$DJNZ R7,DEL1 RET,主程序,子程序,上机实验2:P9

34、596 接口实训,1.定时器/计数器应用实训,实训内容:利用T0定时,产生2s定时,使得P1口输出信号,控制8个发光二极管循环点亮,设fOSC=12MHz,。,难点:P1口输出信号,控制8个发光二极管循环点亮的解题思路见习题5-13,但此处由于定时时间长达2s,所以单靠一个定时器不能解决问题。可以采取硬件定时和软件计数(或硬件计数)结合方式。,方法2:见习题13,但时间常数为3CB0H,硬件定时与软件计数结合方式解题思路:让T0作定时器用,如T0可以定时50ms,每当定时时间到,在T0中断处理程序中一个寄存器内容加1,同时判断是否加到2000/50=40,如果不到40,则直接返回,如果计到40

35、,说明2s时间到,使P1口循环点亮8个发光二极管后再返回。T0工作在方式1,控制字01H,计数初值:,(216X)110-6=5010-3 即216X=50000 X216-50000=10000H-C350H 3CB0H所以,初值为:TH1=3CH,TL1=B0H,程序设计,ORG 0000H LJMP MAIN;主程序入口 ORG 000BH LJMP INTT0;T0中断入口,ORG 1000HMAIN:MOV TMOD,#01H;T0为方式1 MOV TH0,#3CH MOV TL0,#B0H;初值 SETB EA;允许中断 SETB ET0 SETB TR0;启动定时 MOV A,#

36、01H;LED0先亮 MOV P1,A;MOV R0,#0 SJMP$;等待中断,主程序:,中断处理程序:,INTT0:MOV TH0,#3CH;重新设置初值 MOV TL0,#B0H INC R0 CJNE R0,#40,NEXT;不等直接返回 MOV R0,#0;2s到 RL A;依次点亮 NEXT:RETI,*硬件定时与硬件计数结合方式解题思路:将引脚P3.0与引脚P3.5即T1脚连接起来。让T0作定时器用,T1座计数器用,如T0可以定时50ms,每当定时时间到,在T0中断处理程序中通过P3.0给T1脚输入负脉冲,使T1计数,当计数到2000/50=40时,说明2s时间到,在T1的中断处理程序中使P1口循环点亮8个发光二极管。*,第五章上机实验(2),交通灯控制(定时器延时法)-详见指导书,第五章上机实验(3),中断控制应用-参考教材p9596一级中断部分。,8051,P1.7,P1.4,R,LED7,.,R,LED0,.,P1.3,P1.0,.,INT0,每当INT0引脚输入的中断请求(边沿触发)被响应后,P1.0P1.3的状态取反后从P1.4P1.7输出。,第五章上机实验(4),外部中断实验(急救车与交通灯)-详见指导书,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号