单片机定时概念精选PPT.ppt
单片机定时概念第1页,此课件共47页哦l上图为定时器结构框图l80C51单片机内部有两个定时/计数器T0和T1,其核心是计数器,基本功能是加1(加1计数)。l对外部事件脉冲(下降沿)计数,是计数器;对片内机器脉冲计数,是定时器。l计数器由二个8位计数器组成。第2页,此课件共47页哦 定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加1计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。定时器均采用加一定时定时器均采用加一定时l2 2、定时定时/计数器的控制寄存器计数器的控制寄存器lTMODTMOD:设定定时器设定定时器/计数器计数器T0T0、T1T1的工作模式和的工作模式和 l 工作方式。工作方式。lTCONTCON:控制控制T0T0、T1T1的启动和停止计数,同时包的启动和停止计数,同时包l 含了含了T0T0、T1T1的状态,即各定时计数器是的状态,即各定时计数器是l 否计数时间到(即是否需要服务)。否计数时间到(即是否需要服务)。第3页,此课件共47页哦lTCON低4位与外中断INT有关,已在中断中叙述。l 高4位与定时/计数器T0、T1有关。lTF1:定时/计数器T1溢出标志。l TF0:定时/计数器T0溢出标志。lTR1:定时/计数器T1运行控制位。l TR1=1,T1运行;TR1=0,T1停。l TR0:定时/计数器T0运行控制位。l TR0=1,T0运行;TR0=0,T0停。第4页,此课件共47页哦2、定时/计数器工作方式控制寄存器TMODTMOD用于设定定时/计数器的工作方式低4位用于控制T0,高4位用于控制T1。l M1M0 工作方式选择位第5页,此课件共47页哦l C/T 计数/定时方式选择位l C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。l C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。l GATE 门控位,见下图l GATE=0,运行只受TCON中运行控制位TR0/TR1的控制。l GATE=1,运行同时受TR0/TR1和外中断输入信号的双重控制。l 只有当INT0/INT1=1且TR0/TR1=1,T0/T1才能运行。l 当GATE=1且 TR0/TR1=1时,用做对INT0/INT1输入脉冲高l 电平长度的测量lTMOD字节地址字节地址89H,不能位操作不能位操作,设置设置TMOD须用字节操作指令。须用字节操作指令。第6页,此课件共47页哦3、定时/计数器工作方式l(1)工作方式0 13位计数器,由TL0低5位和TH0 8位组成,TL0低5位计数满时不向TL0第6位进位,而是向TH0进位,13位计满溢出,TF0置“1”。最大计数值213=8192。l所有工作方式0计数都可以用方式1代替,因此,方式0比较少用l(2)工作方式1:16位定时计数器 第7页,此课件共47页哦 THx/TLxTHx/TLx赋初值:赋初值:THxTHx赋高赋高8 8位,位,TLxTLx赋低赋低8 8位位工作方式工作方式1 1 的编程要点:的编程要点:TMODTMOD选方式:选方式:写写“M1,M0M1,M0”=01 b =01 b 选方式选方式1 1 若不用门控位若不用门控位,直接用软件写直接用软件写TRxTRx控制启控制启/停停 若使用门控位,先置位若使用门控位,先置位TRxTRx,然后由,然后由INTxINTx端端 的高的高/低电平来控制其启低电平来控制其启/停停第8页,此课件共47页哦 定时器(方式1)应用程序举例:分析分析:已知:已知foscfosc =6MHz=6MHz 则:则:(振荡周期)(振荡周期)1Tc=1/6MHz1Tc=1/6MHz (机器周期)(机器周期)1Tm=12Tc=12/6MHz=21Tm=12Tc=12/6MHz=2 S S 粗略地说:粗略地说:Tmin Tmin 2 2 S S 16 16位定时器最大数值为:位定时器最大数值为:2 21616=65536=0FFFFH+1=65536=0FFFFH+1 故选择方式故选择方式 1 1 工作可以得到:工作可以得到:Tmax=65536Tmax=65536 2=1310722=131072 S S131.072mS131.072mS若晶振频率为若晶振频率为6MHz6MHz,计算单片机的最小与最大定时时间:,计算单片机的最小与最大定时时间:第9页,此课件共47页哦分析分析:已知:已知foscfosc =6MHz=6MHz 则:则:(机器周期)(机器周期)1Tm=12Tc=12/6MHz=21Tm=12Tc=12/6MHz=2 S S 100mS2 100mS2 S=50000S=50000 16 16位定时器最大数值为:位定时器最大数值为:2 216 16=65536(=0FFFFH+1)=65536(=0FFFFH+1)故选择方式故选择方式1 1工作可以满足要求。工作可以满足要求。计算初值计算初值:655366553650000=15536=3CB0H50000=15536=3CB0H要求对要求对T0T0产生产生100mS100mS定时进行初始化。定时进行初始化。(晶振晶振=6MHz)=6MHz)第10页,此课件共47页哦GATE C/T M1 M0 GATE C/T M1 M0由分析得知:由分析得知:T0T0选择方式选择方式1 1,初值,初值=3CB0H=3CB0H X X X X 0 0 X X X X 0 0 0 10 1初始化:初始化:MOV TMODMOV TMOD,#01H ;#01H ;选选 T0 T0 方式方式 1 1 MOV TH0 MOV TH0,#3CH ;#3CH ;赋初值高赋初值高8 8位位 MOV TL0MOV TL0,#0B0H;#0B0H;赋初值低赋初值低8 8位位 若需要定时器若需要定时器0 0产生中断还应当写如下语句:产生中断还应当写如下语句:SETB ET0 ;SETB ET0 ;开开T0T0中断允许中断允许 SETB EA ;SETB EA ;开总中断允许开总中断允许 SETB TR0 ;SETB TR0 ;启动启动 T0T0定时定时以及相应的中断服务程序。以及相应的中断服务程序。第11页,此课件共47页哦(3)工作方式)工作方式2:8 位自动重装的定时位自动重装的定时/计数器计数器 THx/TLx THx/TLx赋相同初值(赋相同初值(X=0X=0或或1 1)在在TLxTLx计数达到计数达到0FFH 0FFH 再加再加“1 1”时,时,TL0TL0 将溢出将溢出,“TFxTFx”位置位置1 1,提出中断请求并,提出中断请求并 使使THxTHx中的值自动重装中的值自动重装(Copy)(Copy)进进TLxTLx第12页,此课件共47页哦 TMOD寄存器选方式:寄存器选方式:写写“M1,M0”=10 b 选中方式选中方式2分析:分析:foscfosc =6MHz=6MHz 1 1机器周期机器周期 =2=2 S S 1KHz 1KHz方波周期方波周期 =1 mS=1 mS 半个方波周期半个方波周期 =500=500 S S 500uS2 uS=250 500uS2 uS=250 若选择方式若选择方式2 2 工作工作,8,8位定位定时器最大数值为:时器最大数值为:2 28 8=256=0FFH+1 =256=0FFH+1 可以满足要求。可以满足要求。计算初值:计算初值:256256250=6250=6从从P1.0 P1.0 脚输出频率脚输出频率=1KHz=1KHz方波。方波。设:晶振设:晶振=6MHz=6MHz。利用。利用T1T1定时中断。定时中断。定时器(方式2)应用程序举例:第13页,此课件共47页哦l所以初始化程序为:l MOV TMOD,#20Hl MOV TH0,#6l MOV TL0,#6l SETB ET1l SETB EAl SETB TR1 l 第14页,此课件共47页哦4、定时/计数器的应用l1、计算定时/计数初值l80C51定时/计数初值计算公式:l定时时间计数周期数机器周期长度l =(n初值N)fl初值n(时间t f)l其中:n与工作方式有关:方式0时,n=13;l 方式1时,n=16;l 方式2、3时,n=8。l机器周期与主振频率有关:l机器周期=12/fosc,f=12MHZ时,1机周=1S;l f=6MHZ 时,1机周=2S。第15页,此课件共47页哦【例例1】已知晶振6MHz,要求定时0.5ms,试分别求出T0工作于方式1、方式2时的定时初值。l解:l 工作方式1:l T0初值=216-500s/2sl =65536250=65286=0FF06Hl TH0=0FFH;TL0=06H。l 工作方式2:l T0初值=28-500s/2s=256-250=6l TH0=06H;TL0=06H。第16页,此课件共47页哦定时器定时器/计数器的编程和应用计数器的编程和应用 l采用中断的定时初始化过程:l(1)设置中断寄存器(tmod寄存器,开中断、优先级、启动计数),以及定时初值的写入。l(2)定时时间计数周期数机器周期长度l =(n初值N)fl初值n(时间t f)l(3)对于较长时间的定时,可以采用与循环程序相结合进行设计l 采用中断方式,定时时间到在执行中断服务后返回的 l 时候会将tf0或tf1清零。第17页,此课件共47页哦l例5-1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。第18页,此课件共47页哦(1)计算初值X 设初值为X,则有:延时时间为1ms,相当于500个机器周期长度,因此可以采用方式1,计数初始值为 X=216-500=65036 X化为16进制,即X=0FE0CH=11111110,00001100B。所以,T0的初值为:TH0=0FEH TL0=0CHl因此可以用定时器0,选择工作方式1,每定时中断一次,执行一次P1.0的取反操作。l 由于方式由于方式1 1不能循环计数,因此,每执行一次中断还要不能循环计数,因此,每执行一次中断还要重装初期进行计数。重装初期进行计数。第19页,此课件共47页哦(2)(2)初始化程序设计:初始化程序设计:对寄存器对寄存器IPIP、IEIE、TCONTCON、TMODTMOD的相应位进行正的相应位进行正确设置,将计数初值送入定时器中。确设置,将计数初值送入定时器中。(3)(3)程序设计程序设计 ORG 0000HORG 0000HRESET:LJMP MAIN RESET:LJMP MAIN ;转主程序;转主程序 ORG 000BHORG 000BH ;T0T0的中断入口的中断入口 LJMP IT0PLJMP IT0P ;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 0100HORG 0100HMAIN:MOV SP,#60H MAIN:MOV SP,#60H ;设堆栈指针;设堆栈指针 MOV TMOD,#01HMOV TMOD,#01H ;设置;设置T0T0为方式为方式1 1 MOV TL0,#0CH MOV TL0,#0CH;T0T0中断服务程序,中断服务程序,T0T0重新置初值重新置初值 MOV TH0,#0FEH MOV TH0,#0FEH SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开中断开中断 SETB TR0SETB TR0 ;启动;启动T0T0 SJMP$SJMP$第20页,此课件共47页哦ITOP:MOV TL0,#0CH;T0中断服务子程序,T0置初值 MOV TH0,#0FEH CPL P1.0 ;P1.0的状态取反 RETI END第21页,此课件共47页哦例例6-26-2 假设假设系统时钟为系统时钟为6MHz6MHz,编写定时器,编写定时器T0T0产生产生1 1秒定时秒定时的程序。的程序。l(1 1)T0T0工作方式的确定工作方式的确定定时时间较长,采用哪一种工作方式?定时时间较长,采用哪一种工作方式?由各种工作方式的特性,可计算出:由各种工作方式的特性,可计算出:方式方式0 0最长可定时最长可定时16.384ms16.384ms;方式方式1 1最长可定时最长可定时131.072ms131.072ms;方式方式2 2最长可定时最长可定时512512 s s。选方式选方式1 1,每隔,每隔100ms100ms中断一次,中断中断一次,中断1010次为次为1s1s。(2 2)计算计数初值)计算计数初值 因为:因为:100ms=50000100ms=50000个机器周期个机器周期 所以:所以:X=65536-50000=15536=3CB0HX=65536-50000=15536=3CB0H 因此:因此:TH0=3CHTH0=3CH,TL0=B0H TL0=B0H 第22页,此课件共47页哦(3 3)1010次计数的实现次计数的实现 采用循环程序法。采用循环程序法。(4 4)参考程序参考程序 :ORG 0000HORG 0000HRESETRESET:LJMP MAIN LJMP MAIN ;上电,转主程序入口;上电,转主程序入口MAINMAIN ORG 000BHORG 000BH ;T0T0的中断入口的中断入口 LJMP IT0PLJMP IT0P;转;转T0T0中断处理程序中断处理程序IT0PIT0P ORG 1000HORG 1000H MAIN MAIN:MOV SP,#60HMOV SP,#60H ;设堆栈指针;设堆栈指针 MOV R1,#0AH MOV R1,#0AH ;设循环次数;设循环次数1010次次 MOV TMOD,#01H MOV TMOD,#01H ;设;设T0T0工作在方式工作在方式1 1 MOV TL0,#0B0H MOV TL0,#0B0H ;给;给T0T0设初值设初值 MOV TH0,#3CHMOV TH0,#3CH 第23页,此课件共47页哦 SETB ET0 SETB ET0 ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开放中断开放中断 SETB TR0 SETB TR0 ;启动;启动T0T0 HERE HERE:SJMP HERE SJMP HERE ;等待中断;等待中断 ITOPITOP:MOV TL0,#0B0H MOV TL0,#0B0H;T0T0中断子程序,重装初值中断子程序,重装初值 MOV TH0,#3CH MOV TH0,#3CH ;DJNZ R1DJNZ R1,LOOPLOOP CLR TR0 CLR TR0 ;1s1s定时时间到,停止定时时间到,停止T0T0工作工作 LOOPLOOP:RETI RETI l如要使P1口所接8盏等每秒左移跑动一位,应该怎么处理?第24页,此课件共47页哦 查询方式的参考程序查询方式的参考程序:查询方式主要利用的是:当计数器定时时间到的时候会自动的把中断标志位TF1或TF0置为1,因此,启动定时后,只要评定对应的服务标志位TF0或TF1是否为1就可以判断是否定时时间到,即是否要开始执行服务程序。5-1的查询方式的参考程序可以写为:第25页,此课件共47页哦l例5-1 假设系统时钟频率采用6MHz,要在P1.0上输出一个周期为2ms的方波,如图所示。第26页,此课件共47页哦ORG 0000ORG 0000LJMP MAINLJMP MAINORG 0100HORG 0100HMAIN:MAIN:MOV TMOD,#01H MOV TMOD,#01H ;设置;设置T0T0为方式为方式1 1 LOOP:MOV TH0,#0FEH LOOP:MOV TH0,#0FEH ;T0T0置初值置初值 MOV TL0,#0CH MOV TL0,#0CH SETB TR0 SETB TR0 ;接通;接通T0T0LOOP1LOOP1:JNB TF0,LOOP1 JNB TF0,LOOP1 ;查询;查询TF0TF0标志标志 CLR TF0 CLR TF0 ;CPL P1.0 CPL P1.0 ;P1.0P1.0的状态求反的状态求反 SJMP LOOPSJMP LOOP第27页,此课件共47页哦l门控制位门控制位GATEGATE的应用的应用测量脉冲宽度测量脉冲宽度GATE1GATE1可使定时器可使定时器/计数器计数器T1T1的启动计数受的启动计数受INT1*INT1*的控制,可的控制,可测量引脚测量引脚INT1INT1或或INT0INT0引脚上正脉冲的宽度(机器周期数)。引脚上正脉冲的宽度(机器周期数)。第28页,此课件共47页哦如上图所示:测量引脚测量引脚INT1INT1(P3.3P3.3)上正脉冲的宽度。)上正脉冲的宽度。第29页,此课件共47页哦参考程序:参考程序:ORG 0000HORG 0000HRESET:AJMP MAIN RESET:AJMP MAIN ;复位入口转主程序;复位入口转主程序 ORG 0100HORG 0100H MAIN:MOV SP,#60H MAIN:MOV SP,#60H MOV TMOD,#90H MOV TMOD,#90H ;T1T1为方式为方式1 1定时控制字定时控制字 MOV TL1,#00HMOV TL1,#00H MOV TH1,#00H MOV TH1,#00H MOV R0,#30H MOV R0,#30HLOOP0:JB P3.3,LOOP0LOOP0:JB P3.3,LOOP0;INT1INT1*高高,则循环则循环 SETB TR1SETB TR1;如;如INT1INT1*为低,启动为低,启动T1T1LOOP1:JNB P3.3,LOOP1LOOP1:JNB P3.3,LOOP1;INT1INT1*低,则循环等待低,则循环等待LOOP2:JB P3.3,LOOP2 LOOP2:JB P3.3,LOOP2;INT1INT1*高高,则循环等待则循环等待l(两个等待的意义?)第30页,此课件共47页哦 CLR TR1 CLR TR1;停止;停止T1T1计数计数 MOV R0,TL1MOV R0,TL1;T1T1计数值送计数值送A A INC R0 INC R0 MOV R0,TH1MOV R0,TH1;T1T1计数值送计数值送A A SJMP$SJMP$END END执行程序,使执行程序,使INT1INT1*引脚上出现的引脚上出现的正脉冲宽度以机器周期数的形式存正脉冲宽度以机器周期数的形式存放在放在30H30H和和31H31H单元。单元。第31页,此课件共47页哦例3、书本P125例题53测量高低电平持续时间lORG 0000HlLJMP MAINlORG 0100HlMAIN:lMOV TMOD,#10011001B;lMOV TH1,#00HlMOV TL1,#00HlMOV TH0,#00HlMOV TL0,#00H第32页,此课件共47页哦l WAIT1:JB P3.2,$l SETB TR0 ;被测为低时开始计数,此时P3.2为高lWAIT2:JNB P3.2,WAIT1;即被测信号为高电平,等待lWAIT3:JB P3.2,WAIT2;等待计数完成lCLR TR0;计数完关闭T0,输入信号由低变为高电平lSETB TR1;启动T1后t1开始工作lWAIT3:JB P3.3 WAIT3;表示波形电平为高,继续计数lCLR TR1;关T1lMOV R0,#35HlMOV R0,TL0lINV R0lMOV R0,TH0;T0用于保存低电平时间lINC R0lMOV R0,TL1lINV R0lMOV R0,TH1;T1用于保存高电平时间lEND第33页,此课件共47页哦例例6-36-3 当当T0T0(P3.4P3.4)引脚上发生负跳变时,从)引脚上发生负跳变时,从P1.0P1.0引脚上输出一个周引脚上输出一个周期为期为1ms1ms的方波的方波,如图所示。(系统时钟为如图所示。(系统时钟为6MHz6MHz)(1)工作方式选择)工作方式选择T0为方式为方式1计数计数,初值初值 0FFFFH,即外部计数输入端,即外部计数输入端T0(P3.4)发生)发生一次一次负跳变负跳变时,时,T0加加1且溢出,溢出标志且溢出,溢出标志TF0置置“1”,发中断请求。说明,发中断请求。说明T0脚脚已接收了负跳变信号。已接收了负跳变信号。第34页,此课件共47页哦T1T1定义为方式定义为方式2 2定时定时。在。在T0T0脚发生一次负跳变后,启动脚发生一次负跳变后,启动T1T1每每500500 s s产生一次中断,在中断服务程序中对产生一次中断,在中断服务程序中对P1.0P1.0求反,使求反,使P1.0P1.0产产生周期生周期1ms1ms的方波。的方波。注意方式注意方式2 2可以循环计数可以循环计数(2 2)计算)计算T1T1初值初值设设T1T1的初值为的初值为X X:因为因为 1MS=1000um=22501MS=1000um=2250个机器周期个机器周期 所以所以 X=2X=28 8-250=6=06H-250=6=06H T0 T0的初值为:的初值为:0ffffh0ffffh(3 3)程序设计)程序设计 ORG 0000HORG 0000H RESET:LJMP MAIN RESET:LJMP MAIN ;复位入口转主程序;复位入口转主程序 ORG 001BHORG 001BH LJMP IT1P LJMP IT1P ;转;转T1T1中断服务程序中断服务程序第35页,此课件共47页哦MAIN:MOV TMOD,#00100101H MAIN:MOV TMOD,#00100101H;初始化,;初始化,T1T1为方式为方式2 2定定 时,时,T0T0为方式为方式1 1计数计数 SETB EA SETB EA SETB ET1 SETB ET1 ;允许;允许T1T1中断中断 MOV TL0,#0FFH MOV TL0,#0FFH;T0T0置初值置初值 MOV TH0,#0FFHMOV TH0,#0FFH MOV TL1,#06H MOV TL1,#06H ;T1T1置初值置初值 MOV TH1,#06HMOV TH1,#06H SETB TR0SETB TR0 ;启动;启动T0T0 JNB TF0,$JNB TF0,$CLR TR0 CLR TR0 SETB TR1 SETB TR1 ;启动;启动T1T1 HERE:AJMP HERE HERE:AJMP HEREIT1P:CPL P1.0IT1P:CPL P1.0;T1T1中中 断断 服服 务务,P1.0P1.0位位 取取 反反 RETIRETI第36页,此课件共47页哦实训题目:1、手动控制跑马灯的跑动(中断)org 0000hljmp mainorg 0003hljmp zd0main:setb easetb ex0setb it0mov ip,#00000001bmov a,#0fehmov p1,asjmp$zd0:rl a mov p1,aretiend第37页,此课件共47页哦2、计程器的实现(中断)org 0000hljmp mainorg 0003hljmp zd0main:setb easetb ex0setb it0mov ip,#00000001bmov a,#00hmov p1,asjmp$zd0:add a,#2 mov b,a cpl a mov p1,a mov a,b retiend第38页,此课件共47页哦2、计程器的实现(中断)改:org 0000hljmp mainorg 0003hljmp zd0org 0013hljmp zd1org 0100hmain:setb easetb ex0setb ex1setb it0setb it1mov a,#00hmov p1,asjmp$zd0:add a,#2 mov b,a cpl a mov p1,a mov a,b retizd1:mov a,#00h retiend第39页,此课件共47页哦1、手动控制跑马灯的跑动(中断)改:org 0000hljmp mainorg 0003hljmp zd0main:setb easetb ex0setb it0mov ip,#00000001bmov r7,#08hmov a,#0fehmov p1,asjmp$zd0:rl a mov p1,a lcall delay djnz r7,zd0 mov r7,#08h retidelay:(1秒)end第40页,此课件共47页哦定时练习:l8、内部30H单元内容为55h,定时30ms,否则定时15ms,进行初始化编程。l9、利用T0通过P1.0输出一个矩形波,高电平为50um,低电平为300um。l10、用T1实现P1.0和P1.1分别输出周期为2ms和500us的方波。(定时1ms和250us,1ms看成4个250us)第41页,此课件共47页哦8、内部30H单元内容为55h,定时30ms,否则定时15ms,进行初始化编程。ORG 0000HLJMP MAINORG 000BHLJMP IT0PORG 0100HMAIN:MOV TMOD,#00000001B SETB EA SETB ET0 CJNE 30H,#55H,AA MOV DPTR,#NUM1 MOV TH0,DPH MOV TL0,DPL SETB TR0 SJMP$AA:MOV DPTR,#NUM2 MOV TH0,DPH MOV TL0,DPL SETB TR0 SJMP$IT0P:RETI END第42页,此课件共47页哦9、利用T0通过P1.0输出一个矩形波,高电平为50um,低电平为300um。lORG 0000HlLJMP MAINlORG 000BHlLJMP IT0PlORG 0100HlMAIN:MOV TMOD,#00000010Bl SETB EAl SETB ET0l MOV TH0,#231l MOV TL0,#231l SETB P1.0l SETB TR0l SJMP$lIT0P:CLR TR0l CPL P1.0l JNB P1.0,AAl MOV TH0,#231l MOV TL0,#231l AJMP BBlAA:MOV TH0,#106l MOV TL0,#106 l BB:SETB TR0l RETIlEND第43页,此课件共47页哦9、采用两个计数通道实现输出:lORG 0000HORG 0000HlLJMP MAINLJMP MAINlORG 000BHORG 000BHlLJMP IT0PLJMP IT0PlORG 001BORG 001BlLJMP IT1PLJMP IT1PlORG 0100HORG 0100HlMAIN:MOV TMOD,#00100010BMAIN:MOV TMOD,#00100010Bl SETB EA SETB EAl SETB ET0 SETB ET0l SETB ET1 SETB ET1 MOV TH0,#231 MOV TH0,#231 MOV TL0,#231 MOV TL0,#231 MOV TH1,#106 MOV TH1,#106 MOV TL1,#106 MOV TL1,#106 SETB P1.0 SETB P1.0 SETB TR0 SETB TR0 SJMP$SJMP$第44页,此课件共47页哦lIT0P:CLR TR0IT0P:CLR TR0l CPL P1.0 CPL P1.0l MOV TH0,#231 MOV TH0,#231l MOV TL0,#231 MOV TL0,#231l SETB TR1 SETB TR1l RETI RETIlIT1P:IT1P:l CLR TR1 CLR TR1l CPL P1.0 CPL P1.0l MOV TH1,#106 MOV TH1,#106l MOV TL1,#106 MOV TL1,#106l SETB TR0 SETB TR0 l RETI RETIlENDEND第45页,此课件共47页哦10、用T1实现P1.0和P1.1分别输出周期为2ms和500us的方波,设频率为12MHZ。(定时1ms和250us,1ms看成4个250us)lORG 0000HORG 0000HlLJMP MAINLJMP MAINlORG 001BHORG 001BHlLJMP IT1PLJMP IT1PlORG 0100HORG 0100HlMAIN:MOV TMOD,#00100000BMAIN:MOV TMOD,#00100000Bl SETB EA SETB EAl SETB ET1 SETB ET1l MOV R1,#4 MOV R1,#4l lMOV TH1,#6MOV TH1,#6lMOV TL1,#6MOV TL1,#6lSETB P1.0SETB P1.0l SETB P1.1 SETB P1.1lSETB TR1SETB TR1lsjmp$sjmp$第46页,此课件共47页哦lIT1P:CPL P1.1IT1P:CPL P1.1l DJNZ R1,HUI DJNZ R1,HUIl MOV R1,#4 MOV R1,#4l CPL P1.0 CPL P1.0l HUI:RETI HUI:RETIlENDEND第47页,此课件共47页哦