1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,2.6,中断系统的使用,中断的使用关键是对特殊功能寄存器的设置,2.6.1,中断允许寄存器,IE (A8H),IE:D7 D6 D5 D4 D3 D2 D1 D0,EA ES ET1 EX1 ET0 EX0,AF AE AD AC AB AA A9 A8,在各位中,=1,开,=0,关,;(,复位为,0),EA:,总开关,;ES:,串口,;ET1:,定时器,1(T1);,EX1:,外部中断,1;ET0:,定时器,0;EX0:,外部中断,0;,2.6.2,中断优先级寄存器,IP (B8H),IP:D7 D6 D
2、5 D4 D3 D2 D1 D0,PS PT1 PX1 PT0 PX0,BF BE BD BC BB BA B9 B8,在各位中,若定义为,0,优先级为,低,若定义为,1,优先级为,高,(,复位后,IP=0),PX0:,外部中断,0;PT0:,定时器,0;PX1:,外部中断,1,PT1 :,定时器,1;,PS,串口,;,(,PX0,最高,.PS,最低,),2.7,定时器,/,计数器的使用,2.7.1,工作方式寄存器,TMOD,的设置,(,用来设置,T0/T1,的工作方式,),TMOD(89H):,D7 D6 D5 D4 D3 D2 D1 D0,GATE C/T M1 M0 GATE C/T M
3、1 M0,T1,方式控制,T0,方式控制,GATE:,门控制,GATE=0,时,用,TR0(,或,TR1),开启,;,当,GATE=1,时,一般用来测脉冲宽度,(TR1=1),。,C/T:,计数与定时控制,=1,为计数,=0,为定时,;,M1,M0,为方式控制,:,M1 M0,工作方式 说明,0 0,模式,0 13,位计数,0 1,模式,1 16,位计数,1 0,模式,2 8,位自动重装,1 1,模式,3 T0,为,2,个,8,位计数,T1,停止,定时是对内部时钟,12,分频后计数。,对于串口的使用,:,T1,一般设成模式,2(,作为波特率发生器,),2.7.2,定时计数器的标志控制,(TCO
4、N),TCON(88H):,D7 D6 D5 D4 D3 D2 D1 D0,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,8F 8E 8D 8C 8B 8A 89 88,在各位中:,TFX,:定时,/,计数器溢出标志。(中断申请),TRX,:定时,/,计数器运行标志,,=1,开始,,=0,停止。,IEX,:外部中断申请标志。,ITX,:外部中断申请类型:,=0,低电平,,=1,下降沿。,注:,X=0,或,1,;用,RETI,返回,2.7.3,定时计数器的存储器,TL0,:存放,T0,的低,8,位;,TH0,:存放,T0,的高,8,位;,(,TH0,TL0,联用成,16,位),
5、TL1,:存放,T1,的低,8,位;,TH1,:存放,T1,的高,8,位;,(,TH1,TL1,联用成,16,位,),2.7.4,定时计数器的应用,在做计数时,可测频率;,在做定时时,可测宽、定时等;,2.7.5,定时举例,例一,由,T0,产生秒信,在,P1.0,输出,(,发声,),晶振频率,:22.1184M,。,先介绍定时的算法,再用程序说明,1,个机器周期,=12,个时钟(振荡)周期,定时的算法,1,个机器周器的时间,:12/22.1184M=0.5425,微妙,定时一秒,从,P1.0,输出,需,25,个,20ms=500ms,反转一次,这样,20ms,的次数是,:,N(,次数,)=20
6、毫秒,/0.5425,微妙,36866D,用,16,位定时,T0,初值,=65535-36866,=28669D=6FFDH,即,:TH0=6FH,TL0=FDH,用,s_numb,记次数需,25,次。,(,先用汇编编写,后用,C,编程如下:),to_t0:;,中断程序,mov,th0,#6Fh ;,重新装入常数,mov,tl0,#0FDh,clr,c,mov,a,s_numb,subb,a,#01h ;,总次数减一,mov,s_numb,a,jnc,no_to1s ;,无减完退出,!,mov,s_numb,#25 ;,减完,需重新置次数,.,cpl,speak ;,发声,no_to1s:,
7、reti,T0,中断相应主程序,s_numb,equ,30H,;20ms,的次数,(25x20=500ms),speak bit p1.0 ;,蜂鸣器,org 0000h,ljmp,main ;,复位入口,org 000bh ;,ljmp,to_t0 ;T0,定时器入口,org 0100h,.,main:,mov,sp,#60h ;,设堆栈,mov,ie,#00h ;,将中断全部关掉,?,mov,tmod,#00100001b ;T1,为,8,位重装,(0010b,为波特率,),;T0,为,16,位定时器,(0001b),mov,th0,#6Fh,mov,tl0,#0FDh,mov,s_num
8、b,#25 ;(25x20=500ms),setb,speak ;,关蜂鸣器,setb,ea ;,开总中断,setb,et0 ;,开,T0,中断,setb,tr0 ;T0,开始计数,loop:,sjmp,loop ;,循环显示,end ;,整个程序结束,用,C,编的秒函数,void out_t0(void)/,定时器,T0,初始化,TMOD=0X21;/tmod,#21H,TR0=0;,TH0=0X6f;/,装,T0,定时常数,TL0=0Xfd;/,TR0=1;,/T0,中断入口函数,void,To_int(void,)interrupt 1,unsigned char,k,s,g,;,dis
9、play_numb,=display_numb-1;,if(,display_numb,=0),speak=speak;/,发声,display_numb,=25;,k+;,s=k/16;/,取整,g=k%16;/,取余,display(s,g,);/,显示,TH0=0 x6f;/,装,T0,定时常数,TL0=0 xfd;,sbit,speak=P10;,蜂鸣器,unsigned char,display_numb,;,全局变量,void main(),out_t0();/,定时器初始化,display_numb,=25;,ET0=1;,EA=1;/,开中断,while(1);/,等待发声,作
10、业:,试编写一个定时为,10ms,的子程序,(晶振为,12MHz,)。,参考:,N,(,次数,)=10/0.0001=10,000D,用,16,位定时,T0,初值,=65535-N=65535-10000,=55535D=D8EFH,TL0=EFH,TH0=D8H,用中断的方式编写。,2.8,串口的使用,51,单片机的串口是全双工的读或写控制器,对其使用可采用中断方式也可采用查询方式。,第一设置寄存器:,IE,、,IP,、,SCON,、,TMOD,第二设置:波特率,第三读写:,SBUF,例,1.,单片机与,PC,机的通信,说明,1.,硬件电路,(,见原理图,),2.,串口调试软件介绍,3.,单片机波特率的设置,4.IE,SCON,的设置,5.,中断程序的编写,6.,主程序的编写,






