资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,实验四 外中断,P1.0_P1.7接8个发光二极管,管脚INT0、INT1接两个按键,分别定义为“+”和“-”。要求:上电全灭,,每按一次“+”键,亮的灯多一盏,,每按一次“-”键,亮的灯减一盏,,当全亮时,再按一次“+”键,则全灭,当全灭时,再按一次“-”键,则全亮,实验报告要求:,1写明实验日期、桌号,2写明实验要求;,3画出硬件接线图,4编程,加标注,5写出调试过程,遇到的问题及解决方法,6总结实验目的,写出收获体会,1,INT0,INT1,T0 及 T1的中断标志存放在,TCON,寄存器中;串行口的中断标志存放在,SCON,寄存器中。,定时器计数器控制寄存器TCON:,IT1:INT1的中断申请触发方式控制位,IT0:INT0的中断申请触发方式控制位。,5.3 中断的控制,5.3.1中断标志,2,中断允许和禁止由中断允许寄存器,IE,控制。,中断允许寄存器IE,(可位寻址),:,5.3.2 中断允许控制,IE寄存器中各位设置:为,0,时,,禁止,中断;为,1,时,,允许,中断。,系统复位后,IE寄存器中各位均,为0,,禁止所有中断。,3,在80C51中有高、低两个中断优先级,通过,IP,来设定。,中断优先级寄存器IP(,可位寻址,):,IP寄存器中各位设置:为,0,时,为,低,中断优先级;为,1,时,设为,高,中断优先级。,系统,复位后,IP寄存器中各位均,为0,,全部设定为低中断优先级。,5.3.3 中断优先级,4,中断源,中断矢量地址,外部中断,0,(INT0),0003H,定时器,/,计数器,0,(,T0,),000BH,外部中断,1,(INT1),0013H,定时器,/,计数器,1,(,T1,),001BH,串行口(,RI,、,TI,),0023H,定时器,/,计数器,2,002BH,中断矢量地址,5,第六章 单片微机的定时器/计数器原理及应用,6,6.1 概述,6.2 定时器/计数器T0、T1,6.3 定时器/计数器T2,6.4 监视定时器(看门狗)T3,6.5 定时器/计数器的应用编程,7,定时或计数方法:,1硬件法:,定时功能完全由硬件电路完成,不占用CPU时间。,2软件法:,软件定时是执行一段循环程序来进行时间延时。,3可编程定时器计数器:,通过软件编程来实现定时时间的改变,通过中断或查询方法来完成定时功能或计数功能。,6-1 概述,定时器资源:,80C51:两个,16位的加1定时器计数器:T0和T1;,80C52:三个,16位的加1定时器计数器:T0、T1、T2,在80C51系列的部分产品(如Philips公司的80C552)中,还,包含有作看门狗的,8位,定时器T3。,8,定时器计数器的,核心,是一个加1计数器其基本功能是,计数加1,。,计数,是对单片微机的T0、T1(或T2)引脚,上输入的一个,1到0的跳变,进行计数增l。,定时,是对单片微机内部的,机器周期,进行计,数,从而得到定时。,波特率发生器,80C51的定时器/计数器还可,用作串行接口的,波特率发生器,。,9,T0、T1 的内部结构简图示于,图61,中。,T0、T1由以下几部分组成:,计数器,TH0,、,TL0,和,TH1,、,TL1,;,特殊功能寄存器,TMOD,、,TCON,;,时钟分频器;,输入引脚,T0,、,T1,。,6.2 定时器计数器T0、T1,10,一、,定时器计数器T0、T1 的控制寄存器,1.,TCON,位地址,8FH,8EH,8DH,8CH,8BH,8AH,89H,88H,位功能,TF1,TR1,TF0,TR0,IE1,IT1,IE0,IT0,TF1:T1的溢出标志,。T1溢出时,该位由,内部硬件置位,。,若中断开放,即响应中断,进入中断服务程序后,,由硬,件自动清0,;,若中断禁止,可用于判跳,用软件清0。,TR1:T1的运行控制位,。,用软件控制,置l时,启动 T1;清0时,停止 T1。,复位后,,TCON的所有位均,清0,。T0和T1均是关中断的。,11,D7 D6 D5 D4 D3 D2 D1 D0,GATE,C/T,M1,M0,GATE,C/T,M1,M0,T1,T0,GATE,门控位,GATE1时,由外部中断引脚INT0、INT1和TR0、TR1共同来启动定时器。当INT0引脚为高电平时,TR0置位启动定时器T0;当引脚INT1为高电平时,TR1置位,启动定时器T1。,GATE0时,仅由TR0和TR1置位来启动定时器T0和T1。,2.T0、T1 的方式寄存器,TMOD,12,中断条件:TH0,TL0,由全1 全0,CT:功能选择位,C/T,1,时,选择,计数,功能;,C/T,0,时,选择,定时,功能。,定时器,设置C/T0,脉冲源:振荡器(内部机器周期),计数频率:,f,osc,定时时间:t=脉冲数*机器周期,(2,13,-x)*,13,计数器,设置C/T1,脉冲源:外部引脚T,0,(T,1,),计数:T,0,1 0 计1(两个机器周期计一个数),计数频率:fosc,脉冲宽度:保持一个机器周期,14,M1、M0:工作方式选择位。,M1M0,工作方式,功能,00,方式0,13位计数器,01,方式1,16位计数器,10,方式2,两个8位计数器,初值自动装入,11,方式3,两个8位计数器,仅适用T0,15,3、计数器:,TH0、TL0、TH1、TL1,1)TH0、TL0:,定时器/计数器0高位字节和低位字节。,字节地址:8CH,8AH,可读可写.,2)TH1、TL1:,定时器/计数器1高位字节和低位字节。,字节地址:8DH,8BH,可读可写.,4、定时器/计数器中断:,中断允许寄存器IE,中断优先级寄存器IP,中断矢量,16,方式0:,13位定时器/计数器,(,M10、M00,),计数寄存器组成:,THx 高8位,和,TLx的低5位,(TL,0,-TL,4,),共13位。,计数时,TLx 的低5位溢出后向THx进位,THx溢出后将TFx置位,并向CPU申请中断。,二、定时器计数器T0、T1 的工作方式,17,图,6,2,方式,0,时,定时器,/,计数器,T0,、,T1,的逻辑结构图,B=TRx(GATE+INTx),18,最大计数值:,2,13,=8192。,最大定时时间:,T,max,(12M)=1us*2,13,=8192us (8ms),T,max,(6M)=2us*2,13,=16384 (16ms),定时初值计算:,初值 X=2,13,-*t,数据寄存器TH0、TL0(TH1/TL1)的赋值:,19,方式1,16位定时器/计数器,由,TLx和 THx组成,共16位。,计数时:,TLx溢出后向THx进位,,THx溢出后将TFx置位.,最大计数值:,2,16,=65536,最大定时时间:,Tmax(12M)=1us*2,16,=65536us(65ms),Tmax(6M)=130ms (130ms),定时初值:,X=2,16,-*t,数据寄存器TH0、TL0(TH1/TL1)的赋值:,20,图63 方式1时,定时器/计数器T0、T1的逻辑结构图,21,方式2,定时常数自动重装载的8位定时器/计数器,TLx作为8位计数寄存器,THx作为8位计数常数寄存器。,MOV TH0,#0AEH,MOV TL0,#06H,SETB TR0,MOV TH0,#0AEH,MOV TL0,#06H,当TLx计数溢出时,将TFx置位,并向CPU申请中断;将THx的内容重新装入TLx中,继续计数。,重新装入不影响THx的内容。,Tmax(12M)=1us*2,8,=256us,Tmax(6M)=512us,方式2适合于作为串行口波特率发生器使用。,22,图64,方式2时定时器/计数器T0、T1的结构图,23,方式3:只适用于T0,()方式下,将T0分为一个,8位定时器计数器,TL0和一个,8位定时器TH0,。,T1停止计数,。,TL0,:8位定时器计数器,它占用了T0的GATE、INT0、启动 停止控制位TR0、T0引脚 以及计数溢出标志位TF0和T0的中断矢量等。,TH0,:作为8位定时器用,此时的外部引脚T0已为定时器,计数器TL0所占用。这时它占用了定时器计数器T1,的启动停止控制位,TR1,、计数溢出标志位,TF1,及T1中,断矢量(地址为,001BH,)。,24,图,6,5,定时器,/,计数器,T0,方式,3,时的逻辑结构图,25,图66 定时器/计数器T0方式3时,T1的逻辑结构图,26,工作方式,3,下,T1,T1,的结构如,图,6,6,所示,,T1,只能选方式,0,、,1,或,2,。作串行口波特率发生器时,,T1,的计数输出直接去串行口,只需设置好工作方式,串行口波特率发生器,自动开始运行,,,如要停止工作,,只需向,T1,送一个,设为工作方式,3,的控制字即可。,27,定时器计数器的应用编程:,如果采用中断方式,应进行中断程序,入口地址设置,设置定时器计数器,工作方式,(),设置,定时常数,(和),如果采用中断方式,,应允许定时器中断和中断,定时器,启动,(),如果采用中断方式:,编写中断服务子程序,如果查询方式:需要用指令清除溢出标志,28,已知晶体振荡器的频率为fosc=6MHz。,使用T0作定时器,设为方式0,设定1ms的定时,每隔1ms使P1.0引脚上的电平变反。,例要求在 P1.0引脚上产生周期为2 ms的方波输出。,应用举例,(1)解:定时常数计算,振荡器的频率fosc6MHz,机器周期为2s,方式0计数器长度L13(2,13,8192),定时时间 t1ms0.001s,定时常数:,X=2,13,-*10,6,*1*10,-3,=,1E0C,H,29,X为76921E0CH,,,二进制数TCB0 0 0,1 1 1 1 0 0 0 0,0 1 1 0 0,B,取低13位,其中高8位,THF0H,,低5位为,TL0CH,.,计数长度:,1E0CH=7692,TH=0F0H,TL=0CH,定时:,(81927692)2s=0.001S,TMOD的设定:,T0:方式,定时,30,(2),编 程:(,中断方式,),ORG0000H,AJMP MAIN,ORG000BH,;T0中断矢量,AJMP INQP,ORG0030H,MAIN:MOV TMOD,00H;设T0为定时器方式0 MOV TH0,0F0H ;写定时常数(定时1ms),MOV TL0,0CH,SETB ET0 ;允许T0中断,SETB EA ;开放CPU中断,SETB TR0 ;启动 T0,SJMP$;定时中断等待,31,ORG2000 H,;T0中断服务程序,INQP:MOV TH0,0F0H ;重写定时常数,MOV TL0,0CH,CPL P10 ;P10变反输出,RETI,;中断返回,32,ORG 0100H,ST:MOV TMOD,#00H,MOV TH0,0F0H,MOV TL0,0CH,SETB P1.0,SETB TR0,L0:,JBC TF0,L1;时间到,清除溢出标志,AJMP L0,L1:CPL P1.0,MOV TH0,0F0H ;重写定时常数,MOV TL0,0CH,AJMP L0,END,查询方式,:,33,【例】已知晶振12MHZ,要求利用,定时器T0,使图中发光二极管D进行,秒闪烁,。,解:,发光二极管进行秒闪烁。即亮500ms,暗500 ms。晶振12MHz,机器周期1,s,,T0方式1最大定时只能65ms余。,方法:,取T0方式,定时50ms,计数10次,即可实现500ms定时。,34,计算定时初值,T0初值X=2,16,-f,osc,*t/12=2,16,-50*10,3,=65536-50000=15536,=3CB0,TH0=3CH;TL0=B0H,。,设置TMOD,:,0000,0,0,01,B=01H,T0方式1
展开阅读全文