1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,IE0,TF0,IE1,TF1,TI,RI,中断请求标志,EX0,ET0,EX1,ET1,ES,1,PX0,PT0,PX1,PT1,PS,高级,低级,中断系统结构,内,部,查,询,内,部,查,询,入口地址,入口地址,INT0,INT1,T0,T1,TI,RI,中断允许控制,中断优先级,EA,中断源,1,中断方式,单片机的中断为,固定入口式中断,,即一响应中断就转入,固定入口地址,执行中断服务程序。具体入口
2、如下:,中断源 入口地址,INT0 0003,T0 000BH,INT1 0013H,T1 001BH,RI/TI 0023H,在这些单元中往往是一些跳转指令,跳到真正的中断服务程序,这是因为给每个中断源安排的空间,只有,8,个单元,。,2,5.3.1,定时器,/,计数器的计数和定时功能,5.3.2,用于定时器,/,计数器控制的寄存器,5.3,定时器的四种工作方式,5.3 80C51,单片机的定时器,/,计数器,3,一、,80C51,定时器结构,80C51,定时器的结构如,图,所示。,5.3,.1,定时器,/,计数器的计数和定时功能,4,图,80C51,定时器结构,5,二、,8051,定时器功
3、能,每个定时器都可由软件设置为,定时工作方式,或,计数工作方式,及其他灵活多样的可控功能方式。这些功能由特殊功能寄存器,TMOD,和,TCON,所控制。,定时器工作,不占用,CPU,时间,,除非定时器,/,计数器溢出,才能中断,CPU,的当前操作。,每个定时器,/,计数器还有,四种工作模式,。其中模式,0-2,对,T0,和,T1,是一样的,模式,3,对两者不同。,6,计数功能,通过引脚,T0,(,P3.4,)和,T1,(,P3.5,),对,外部脉冲,信号计数。当输入脉冲信号产生由,1,至,0,的,下降沿,时定时器的,值加,1,。,为了确保某个电平在变化之前被采样一次,要求电平保持时间至少是一个
4、完整的机器周期。,CPU,检测一个,1,至,0,的跳变需要两个机器周期,故,最高计数频率为振荡频率的,1/24,。,对输入脉冲信号的基本要求如,图,所示。,7,图 对输入脉冲宽度的要求,8,定时功能,定时器计数,8051,片内,振荡器输出经,12,分频后的脉冲,即每个机器周期使定时器(,T0,或,T1,),的数值加,1,直至计满溢出。,当,8051,采用,12MHz,晶振时,,一个机器周期为,1s,,,计数频率为,1MHz,。,9,5.3,.2,用于定时器,/,计数器控制,的寄存器,1,控制器寄存器,TCON,2,工作模式寄存器,TMOD,10,1.,控制器寄存器,TCON,TCON,除可字节
5、寻址外,各位还,可位寻址,。,8051,系统复位时,,TCON,的所有位被清,0,。,TCON,各位定义及具体的意义归纳如,图,所示。,11,图,TCON,各位定义及具体的意义,12,IE1,,,IT1,,,IE0,,,IT0(TCON.3,TCON.0),外部中断,INT1,,,INT0,请求及请求方式控制位。前一章已经讲过。,TCON,各位的功能,13,2.,工作模式寄存器,TMOD,TMOD,不能位寻址,,只能用字节设置定时器的工作模式,低半字节设置,T0,,,高半字节设置,T1,。,8051,系统复位时,,TMOD,的所有位被清,0,。,TMOD,各位的定义格式及各位意义如,图,所示。
6、14,图,TMOD,各位定义及具体的意义,15,表,M1,,,M0,控制的四种工作模式,16,5.3.3,定,时器工作方式,0,一、电路逻辑结构,二、方式,0,工作特点,三、方式,0,的应用举例,17,一、方式,0,的逻辑电路结构,T0,在方式,0,的逻辑电路结构如,图,所示。(,T1,相同),T0,(或,T1,)方式,0,结构,13,位计数器,18,二、方式,0,工作特点,在这种方式下,,16,位寄存器(,TH0,和,TL0,),只用了,13,位,。其中,TL0,的高,3,位未用,,其余,5,位为整个,13,位的低,5,为,,TH0,占高,8,位。,定时时间为:,t=(,2,13,T0,初
7、值,),振荡周期,12,19,三、模式,0,的应用举例,例:设定时器,T0,选择工作,方式,0,,定时时间为,1ms,,,fosc,=,6MHz,。,试确定,T0,初值,计算最大定时时间,T,。,20,解:,当,T0,处于工作方式,0,时,加,1,计数器为,13,位。,(,1,),试确定,T0,初值,计算公式:,t=(,2,13,T0,初值,),振荡周期,12,设,T0,的初值为,X,。,则:,(2,13,X)1/6 10,-6,12=110,-3,s,X=7692D=1 1110 000,0,1100,B,T0,的低,5,位:,01100B=0CH,即,(TL0)=0CH,T0,的,高,8,
8、位:,11110000B=F0H,即,(TH0)=F0H,21,(,2,),计算最大定时时间,T,T0,的,最大定时时间对应于,13,位计数器,T0,的各位初值全为,0,,即,(TL0)=00H,,,(TH0)=00H.,计算公式:,t=(,2,13,T0,初值,),振荡周期,12,则:,T=2,13,1/6 10,-6,12=16.384ms,22,三、方式,0,的应用举例,例:设,T0,工作在,方式,0,,定时时间为,1ms,,,fosc,=6MHz,。,编程实现其定时功能。定时时间到,,P1.0,取反,。(在,P1.0,输出周期为,2ms,的方波),23,解:,(,1,)计算,T0,初值
9、X,计算步骤见前例。,结果:,(TH0)=0F0H,(TL0)=0CH,。,24,(,2,),程序清单:,初始化引导程序,ORG 0000H,RESET:LJMP MAIN,;跳过,中断服务程序区,ORG 000BH,;,中断服务程序入口,LJMP ITOP,25,主程序:,ORG 0100H,AIN:MOV SP,#60H,;,设堆栈指针?,MOV TMOD,#00H,;,选择工作模式,?,MOV TL0,#0CH,;,送初值,MOV TH0,#0F0H,SETB TR0,;,启动定时,SETB ET0,;,T0,开中断,SETB EA,;,CPU,开中断,.,HERE:AJMP HERE
10、等待时间到,转入中断服务程序,26,中断服务程序,ORG 0120H,ITOP:MOV TL0,#0CH,;,重新装如初值,MOV TH0,#0F0H,CPL P1.0,;,P1.0,取反,RETI,27,采用,查询方式,的程序清单,:,MOV TMOD,#00H,;,设置,T0,为模式,0,MOV TL0,#0CH,;,送初值,MOV TH0,#0F0H,SETB TR0,;,启动定时,LOOP,:,JBC TF0,,,NEXT,;查询定时时间到否,SJMP LOOP,NEXT,:,MOV TL0,#0CH,;送初值,MOV TH0,#0F0H,CPL P1.0,;,取反,SJMP LO
11、OP,;,重复循环,28,5.3.4,定时器工作方式,2,一、电路逻辑结构,二、方式,1,工作特点,三、方式,1,的应用举例,29,一、方式,1,的逻辑电路结构,T0,在模式,1,的逻辑电路结构如,图,所示。,图,T0,(或,T1,)模式,1,结构,16,位计数器,30,二、方式,1,工作特点,该方式对应的是一个,16,位的,定时器,/,计数器。,用于定时功能时,定时时间为:,t=(,2,16,T0,初值,),振荡周期,12,用于计数工作方式时,计数长度最大为:,2,16,=65536,(,个外部脉冲),31,三、方式,1,的应用举例,例:用定时器,T1,产生一个,50Hz,的方波,由,P1.
12、1,输出。,使用程序查询方式,,fosc,=,12MHz,。,32,解:,方波周期,T=1/50=0.02s=20ms,用,T1,定时,10ms,计数初值,X,为:,X=,2,16,12101000/12,=65536,10000=55536=D8F0H,33,源程序,清单:,MOV TMOD,#10H,;,设置,T1,为模式,1,SETB TR1,;,启动定时,LOOP,:,MOV TH1,#0D8H,;,送初值,MOV TL1,#0F0H,JNB TF1,,,$,;,查询定时时间到否,CLR TF1 ;,产生溢出,清标志位,CPL P1.1,;,取反,SJMP LOOP,;,重复循环,34
13、5.3.5,方式,2,及其应用,一、方式,2,的逻辑电路结构,二、方式,2,工作特点,三、方式,2,的应用举例,35,一、方式,2,的逻辑电路结构,T0,在方式,2,的逻辑电路结构如,图,所示。,TL0,用作,8,位计数器,,TH0,用以保存初值。,图,T0,(或,T1,)模式,2,结构,8,位计数器,36,二、方式,2,工作特点,该方式把,TL0(TL1),配置成一个可以,自动,重装载的,8,位,定时器,/,计数器。,在程序初始化时,,TL0,和,TH0,由软件赋予,相同,的初值。,用于定时工作方式时,定时时间为:,t=(2,8,TH0,初值,),振荡周期,12,用于计数工作方式时,计数长
14、度最大为:,2,8,=256,(个外部脉冲),该方式可省去软件中重装常数的语句,并可产生相当精确的定时时间,适合于作串行口波特率发生器。,37,三、方式,2,的应用举例,例:当,P3.4,引脚上的电平发生负跳变时,从,P1.0,输出,一个,500s,的同步脉冲。请编,程序实现该功能。查询方式,,fosc,=6MHz,。,38,解:,(,1,)方式选择,选,T0,为方式,2,,外部事件计数模式。,图,功能描述,39,(2)计算初值,T0,工作在外部事件计数模式,,当计数到,2,8,时,再加,1,计数器就会溢出。设计数初值为,X,,,当再出现一次外部事件时,计数器溢出。则,:X+1=2,8,X=2
15、8,1=11111111B=0FFH,T0,工作在定时工作方式,,设晶振频率为,6MHz,,,500s,相当于,250,个机器周期。因此,初值,X,为,(2,8,X)2s=500s,X=6=06H,40,(,3,),程序清单,START,:,MOV TMOD,#06H,;,设置,T0,为模式,2,;外部计数方式,MOV TL0,#0FFH,;,T0,计数器初值,MOV TH0,#0FFH,SETB TR0,;,启动,T0,计数,LOOP1,:,JBC TF0,,,PTFO1,;,查询,T0,溢出标志,,;,TF0=1,时转,且清,TF0=0,SJMP LOOP1,;,41,PTFO1,:,C
16、LR TR0,;,停止计数,MOV TMOD,#02H,;,设置,T0,为模式,2,,定时方式,MOV TL0,#06H,;,送初值,定时,500s,MOV TH0,#06H,CLR P1.0 ;P1.0,清,0,SETB TR0,;,启动定时,500s,LOOP2:,JBC TF0,PTFO2,;,查询,T0,溢出标志,,;,TF0=1,时转,且清,TF0=0,;,(,第一个,500s,到否?),SJMP LOOP2,;,等待中断,虚拟主程序,42,PTFO2:SETB P1.0,;,P1.0,置,1,CLR TR0,;,停止计数,SJMP START,43,三、方式,2,的应用举例,例:利
17、用定时器,T1,的模式,2,对外部信号计数。要求没计满,100,次,将,P1.0,端取反。,44,三、模式,2,的应用举例,解:,(,1,)选择方式,外部信号由,T1,(,P3.5,),引脚输入,每发生一次负跳变计数器加,1,,每输入,100,个脉冲,计数器发生溢出中断,中断服务程序将,P1.0,取反一次。,T1,计数工作方式模式,2,的模式字为,(TMOD)=60H,。,T0,不用时,,TMOD,的低,4,位可任取,但不能进入模式,3,,一般取,0,。,45,三、方式,2,的应用举例,(,2,)计算,T1,的计数初值,X=2,8,100=156=9CH,因此,:TL1,的初值为,9CH,,,
18、重装初值寄存器,TH1=9CH,。,46,(,3,),程序清单,MAIN,:,MOV TMOD,#60H,;,设置,T1,为模式,2,;,外部计数方式,MOV TL1,#9CH,;,T1,计数器初值,MOV TH1,#9CH,MOV IE,,,#88H ;,定时器开中断,SETB TR1,;,启动,T1,计数,HERE,:,SJMP HERE,;,等待中断,ORG 001BH,;,中断服务程序入口,CPL P1.0,RETI,47,小结:,本节介绍了,89C51,单片机的定时器,/,计数器的逻辑结构、工作模式,0,、,1,、,2,及相关程序的编写。,作业:,1.,已知,8051,单片机的,fosc,=6MHz,请利用,T0,和,P1.0,输出,周期为,200s,的连续方波,.,48,






