1、项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术第一节第一节 定时定时/计数器计数器 1.1 定时定时/计数器的结构和工作原理计数器的结构和工作原理 1定时定时/计数器组成框图计数器组成框图 MCS-51单片机结构框图如图所示。定时/计数器由定时器方式寄存器TMOD、定时器控制寄存器TCON、定时器T0和定时器T1组成。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 2定时定时/计数器工作原理计数器工作原理 当定时/计数器设置为定时工作方式时,计数器对内部机器周期计数,每过一个机器周期,计数器
2、增1,直至计满溢出。定时器的定时时间与系统的振荡频率紧密相关,因MCS-51单片机的一个机器周期由12个振荡脉冲组成,所以,计数频率 。如果单片机系统采用12M晶振,则计数周期为:osccf121f s112/110121T6 二、定时二、定时/计数器的控制计数器的控制 1方式寄存器方式寄存器TMOD 项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 1)M1和和M0方式选择位。方式选择位。M1 M0工工 作作 方方 式式功功 能能 说说 明明0 0方方 式式 013位定时位定时/计数器计数器0 1方方 式式 116位定时位定时/计数器计数器
3、1 0方方 式式 28位自动重装定时位自动重装定时/计数器计数器1 1方方 式式 3定时器定时器0分成两个独立的分成两个独立的8位定时位定时/计数器;计数器;定时器定时器1在此方式停止计数在此方式停止计数 2)功能选择位。功能选择位。TC/TC/时设置为定时器工作模式 时设置为计数器工作模式;0/TC1/TC 3)GATE门控位。门控位。当GATE=0时,定时器的启停只由软件控制位TR0或TR1来控制,为1启动定时器工作,为0停止定时器工作;当GATE=1时,软件控制位TR0或TR1须置1,同时还须 (P3.2)或 (P3.3)为高电平才能启动定时器,即允许外中断 、启动定时器。0INT1IN
4、T0INT1INT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 1)TCON.7 TF1TC/定时器1溢出标志位。2)TCON.6 TR1定时器1启动控制位。2控制寄存器控制寄存器TCON TCON的作用:控制定时器的启动、停止和定时器的溢出标志位,外部中断请求位和触发方式。定时器控制字TCON的格式如下:3)TCON.5 TF0定时器0溢出标志位。4)TCON.4 TR0定时器0启动控制位。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 5)TCON.3 IE1TC/外部中断1()的中断
5、请求标志位。6)TCON.2 IT1外部中断1触发方式选择位。7)TCON.1 IE0 8)TCON.0 IT0外部中断0触发方式选择位。1INT外部中断0()的中断请求标志位。0INT 3定时定时/计数器的初始化编程计数器的初始化编程1)确定工作模式、工作方式、启动控制位对TMOD赋值。2)预置定时或计数的初值直接将初值写入TH0、TL0或TH1、TL1中。3)根据需要开启定时/计数器中断直接对IE寄存器赋值。4)启动定时/计数器工作将TR0或TR1置“1”。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 1.3 定时定时/计数器的工作方式
6、计数器的工作方式 1方式方式0 当TMOD的M1M0为00时,定时/计数器工作于方式0,为13位的定时/计数器。T1(或T0)方式0时的逻辑电路结构图项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 由图可知:16位加法计数器(TH1和TL1)只用了13位。其中,TH1占高8位,TL1占低5位(只用低5位,高3位未用)。当TL1低5位溢出时自动向TH1进位,而TH1溢出时向中断位TF1进位(硬件自动置位),并申请中断。当 =0时,控制开关连接12分频器输出,T1对机器周期计数,此时,T1为定时器。设定时器1初值为X,其定时时间为:T/C1281
7、9212213时钟周期)(时钟周期)(XX 当 =1时,控制开关与T1(P3.5)相连,外部计数脉冲由T1脚输入,当外部信号电平发生由0到1的跳变时,计数器加1,这时T1成为外部事件的计数器。T/C 当GATE=0时,反相为1,使或门输出为1,与门输出是否为1(即定时器1的启动)直接由TR1控制。1INT1INT 当GATE=1时,若TR1=1,外部信号电平通过 引脚直接开启或关断定时器T1。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术1INT例3.1 设f=12MHZ,用定时器0方式0实现1s的延时DELAY:MOV R3,#200 ;置
8、5ms计数循环初值 MOV TMOD,#00H;设定时器0为方式0 MOV TH0,#63H;置定时器初值 MOV TL0,#18H SETB TR0;启动T0LP1:JBCTF0,LP2 ;查询计数溢出SJMP LP1 ;未到5ms继续计数LP2:MOV TH0,#63H ;重新置定时器初值 MOV TL0,#18H DJNZ R3,LP1;未到1s继续循环 RET ;返回主程序项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术1INT例3.2 设f=12MHZ,用定时器0方式0实现70ms的延时。void delay 70ms()unsign
9、ed char i;TMOD=0X00;/设置T0为定时器,工作方式0for(i=0;i10;i+);/设置10次循环次数 TH0=0 x25;/设置定时器初值为2508HTL0=0 x08;TR0=1;/启动T1While(!TF0);/查询计数是否溢出,即定时7ms时间到,TF0=1TF0=0;/7ms定时时间到,将T0溢出标志位TF0清零项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 2方式方式1 当TMOD的M1M0为01时,定时器工作于方式1,其逻辑结构图如图所示。T1(或T0)方式1时的逻辑电路结构图项目三项目三 汽车信号灯的循环
10、点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术1INT例3.2 设f=12MHZ,用定时器0方式0实现70ms的延时。void delay 70ms()unsigned char i;TMOD=0X00;/设置T0为定时器,工作方式0for(i=0;i10;i+);/设置10次循环次数 TH0=0 x25;/设置定时器初值为2508HTL0=0 x08;TR0=1;/启动T1While(!TF0);/查询计数是否溢出,即定时7ms时间到,TF0=1TF0=0;/7ms定时时间到,将T0溢出标志位TF0清零项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽
11、车单片机单片机应用技术应用技术1INT例3.3设f=12MHZ,用定时器1方式1实现200us的延时void delay 200us()TMOD=0X10;/设置T1为定时器,工作方式1TH1=0 xFF;/设置定时器初值为FF38HTL1=0 x38;TR1=1;/启动T1While(!TF1);/查询计数是否溢出,即定时200us时间到,TF1=1TF1=0;/200us定时时间到,将T1溢出标志位TF1清零项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 3方式方式2 当TMOD的M1M0为10时,定时/计数器工作于方式2,其逻辑结构图如
12、图所示。T1(或T0)方式2时的逻辑电路结构图项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术1INT例3.4 设f=12MHZ,用定时器0方式0实现1s的延时DELAY:MOV R3,#200 ;置5ms计数循环初值 MOV TMOD,#00H;设定时器0为方式0 MOV TH0,#63H;置定时器初值 MOV TL0,#18H SETB TR0;启动T0LP1:JBCTF0,LP2 ;查询计数溢出SJMP LP1 ;未到5ms继续计数LP2:MOV TH0,#63H ;重新置定时器初值 MOV TL0,#18H DJNZ R3,LP1;未到
13、1s继续循环 RET ;返回主程序项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术例3.5 设f=6MHZ,用定时器1方式2实现1ms的延时。解:(1)可选择定时时间为500us,再循环2次。计数值=500us/2us=250;计数初值=256-250=6=110B=6H。(2)C语言编程实现1ms延时函数void delay 1ms()unsigned char i;TMOD=0X20;TH0=0 x06;/设置定时器初值为06HTL0=0 x06;for(i=0;i2;i+);/设置2次循环次数 TR1=1;/启动T1While(!TF1)
14、;/查询计数是否溢出,即定时500us时间到,TF1=1TF1=0;/500us定时时间到,将T1溢出标志位TF1清零项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 3方式方式3 方式3只适应于定时/计数器T0,当TMOD的M1M0为11时,定时/计数器工作于方式3时,其逻辑结构图如图所示。T0方式3时的逻辑结构项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 例3.6 用定时器T0方式3实现P1.0端口指示灯间隔1s的闪烁。解:根据题意分析,定时器T0中的TH0只能为定时器,定时时间设为25
15、0s;TL0设置为计数器,计数值设为200。TH0计满溢出后,用软件复位的方法使T0(P3.4)引脚产生负跳变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延时时间应为50ms,循环20次则可得到1s的延时。由上可知,TH0计数初值为:X=(256 250)=6=06HTL0计数初值为:X=(256 200)=56=38H TMOD=00000111B=07H 1s延时子程序如下:DELAY:MOV R3,#14H ;置100ms计数循环初值MOV TMOD,#07H;置定时器0为方式3计数MOV TH0,#06H ;置TH0初值MOV TL0,#38H ;
16、置TL0初值SETB TR0 ;启动TL0SETB TR1 ;启动TH0项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术LP1:JBC TF1,LP2;查询TH0计数溢出SJMPLP1 ;未到500s继续计数LP2:MOVTH0,#06H;重置TH0初值CLR P3.4;T0引脚产生负跳变NOP;负跳变持续NOPSETBP3.4;T0引脚恢复高电平JBC TF0,LP3;查询TH0计数溢出SJMP LP1;100ms未到继续计数 LP3:MOVTL0,#38H;重置TL0初值DJNZ R3,LP1;未到1s继续循环CPL P1.0;指示灯状态翻
17、转RET项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术第二节第二节 中断系统中断系统1.中断的概念中断的概念当CPU正在按顺序处理某件事情(执行程序)的时候,如果这时外界突然发生紧急事件,且请求CPU暂时停止当前正在执行的程序而马上处理紧急事件(即执行中断服务程序),待中断服务程序执行完后再回到原来的程序继续执行。单片机中这种暂时停止原来执行程序的过程就称为中断。原来正常运行的程序称为主程序。主程序被断开的位置或地址称为“断点”。引起CPU中断的根源,或能发出中断申请的来源,称为“中断源”。中断源向CPU提出的处理要求称为“中断请求”或中断申
18、请。“中断”之后所执行的相应的处理程序称之为中断服务或中断处理子程序。处理完毕后,再回到原来被中断的位置称为中断返回。21 MCS-51的中断系统的中断系统项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术2中断的特点中断的特点1)分时操作。)分时操作。CPU可以分时为多个外设服务,大大地提高了CPU的效率。2)实时响应。)实时响应。CPU能随时响应外界变量根据要求向CPU发出的中断申请,并进行相应处理,从而实现实时处理。3)稳定性高。)稳定性高。CPU能通过相应的故障处理程序,处理难以预料的突发事件或故障。项目三项目三 汽车信号灯的循环点亮控制
19、汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术MCS-51中断系统的结构框图如图所示。有4个与中断有关的寄存器,分别为中断源寄存器TCON和SCON、中断允许控制寄存器IE和中断优先级控制寄存器IP。有中断源5个,分别为外部中断请求、外部中断1请求、定时器T0溢出中断请求TF0、定时器T1溢出中断请求TF1和串行中断请求RI或TI。5个中断源的排列顺序由中断优先级控制寄存器IP和顺序查询逻辑电路共同决定,5个中断源分别对应5个固定的中断入口地址。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术22 中断源和中断标志中断源和中断标志
20、(一)中断源(一)中断源MCS-51的5个中断源如下:(1)(P3.2):外部中断0请求信号输入脚。由IT0脚(TCON.0)来决定是低电平有效还是下降沿有效。当CPU检测到有效的中断信号时,则向CPU申请中断,并使IE0(TCON.1)标志置1。(2)(P3.3):外部中断1请求信号输入脚。通过IT1脚(TCON.2)来决定是低电平有效还是下降沿有效。当CPU检测到有效的中断信号时,则向CPU申请中断,并使IE0(TCON.1)标志置1。(3)TF0(TCON.5):定时/计数器T0溢出中断请求标志。当定时/计数器T0产生溢出时,中断请求标志位TF0置位(由硬件自动执行),并向CPU申请中断
21、。(4)TF1(TCON.7):定时/计数器T1溢出中断请求标志。当定时/计数器T1产生溢出时,中断请求标志位TF1置位(由硬件自动执行),并向CPU申请中断。(5)RI(SCON.0)或TI(SCON.1):串行中断请求标志。当串行接口接收或发送完一帧串行数据时,中断请求标志位RI或TI置位(由硬件自动执行),并向CPU申请中断。0INT1INT1INT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术0INT1INTTCOND7D6D5D4D3D2D1D0(88H)TF1TR1TF0TR0IE1IT1IE0IT0(二)中断标志(二)中断标志1
22、.TCON寄存器中的中断标志寄存器中的中断标志TCON为定时/计数器T0和T1的控制寄存器,同时也锁存T0和T1的溢出中断标志及外部中断 和 的中断标志等。与中断有关的各位定义如下:项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术(1)TCON.7 TF1:T1的溢出中断标志位。T1被启动计数后从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。(2)TCON.5 TF0:T0溢出中断标志位。其操作功能与TF1相同。(3)TCON.3 IE1:外部中断 中断请求标志位。IE1
23、=1时,外部中断1向CPU申请中断。(4)TCON.2 IT1:外部中断中断触发方式控制位。当IT1=0,外部中断1控制为电平触发方式。在这种方式下,CPU在每个机器周期的S5P2期间对(P3.3)引脚采样,若为低电平,则置位IE1标志位;若为高电平,则认为无中断申请,或中断申请已撤除,则IE1复位标志位。在电平触发方式中,CPU响应中断后不能由硬件自动清除IE1标志,也不能由软件清除IE1标志,所以,在中断返回之前必须撤消引脚上的低电平,否则将再次中断导致出错。当IT1=1,外部中断1控制为边沿触发方式。CPU响应中断时,由硬件自动清除IE1标志。1INT1INT1INT1INT项目三项目三
24、 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术(1)TCON.7 TF1:T1的溢出中断标志位。T1被启动计数后从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。(2)TCON.5 TF0:T0溢出中断标志位。其操作功能与TF1相同。(3)TCON.3 IE1:外部中断 中断请求标志位。IE1=1时,外部中断1向CPU申请中断。(4)TCON.2 IT1:外部中断中断触发方式控制位。当IT1=0,外部中断1控制为电平触发方式。在这种方式下,CPU在每个机器周期的S5P2期间对(P3.
25、3)引脚采样,若为低电平,则置位IE1标志位;若为高电平,则认为无中断申请,或中断申请已撤除,则IE1复位标志位。在电平触发方式中,CPU响应中断后不能由硬件自动清除IE1标志,也不能由软件清除IE1标志,所以,在中断返回之前必须撤消引脚上的低电平,否则将再次中断导致出错。当IT1=1,外部中断1控制为边沿触发方式。CPU响应中断时,由硬件自动清除IE1标志。1INT1INT1INT1INT(5 5)TCON.1 TCON.1 IE0IE0:外部中断中断标志位。其操作功能与IE1相同。(6 6)TCON.0 TCON.0 IT0IT0:中断触发方式控制位。其操作功能与IT1相同。0INT0IN
26、T项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术SCOND7D6D5D4D3D2D1D0(98H)TIRI2SCON寄存器中的中断标志寄存器中的中断标志SCON是串行口控制寄存器,其低2位TI和RI锁存串行口的接收中断标志和发送中断标志。各位定义如下:(1 1)SCON.1 SCON.1 TITI:串行接口发送中断标志位。CPU将数据写入发送缓冲器SBUF时,就启动发送,每发送完一个串行帧,硬件置位TI。CPU响应中断时不能自动清除TI,必须由软件清除。(2 2)SCON.0 SCON.0 RIRI:串行接口接收中断标志位。在串行口允许接收时
27、,每接收完一个串行帧,硬件置位RI。CPU在响应中断时不能自动清除RI,必须由软件清除。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术IED7D6D5D4D3D2D1D0(A8H)EA/ESET1EX1ET0EX0位地址AFHAEHADHACHABHAAHA9HA8H3IE寄存器中断的开放和屏蔽标志寄存器中断的开放和屏蔽标志MCS-51系列单片机的5个中断源都是可屏蔽中断,其中断系统内部设有一个专用寄存器IE用来对各中断源进行开放或屏蔽的控制。IE寄存器各位定义如下:项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机
28、单片机应用技术应用技术(1 1)IE.7 IE.7 EAEA:中断总允许控制位。EA=1,开放所有中断,而每个中断源的开放和屏蔽可通过相应的中断允许位单独加以控制;EA=0,禁止所有中断。(2 2)IE.4 IE.4 ESES:串行口中断允许位。ES=1,允许串行口的接收和发送中断;ES=0禁止串行口的接收和发送中断。(3 3)IE.3 IE.3 ET1ET1:定时/计数器T1中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。(4 4)IE.2 IE.2 EX1EX1:外部中断1()中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。(5 5)IE.1 I
29、E.1 ET0ET0:定时/计数器T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。(6 6)IE.0 IE.0 EX0:EX0:外部中断0()中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。1INT0INT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术IPD7D6D5D4D3D2D1D0(B8H)-PT2PSPT1PX1PT0PX0位地址BFBEBDBCBBBAB9B84IE寄存器中断优先级标志寄存器中断优先级标志MCS-51单片机有2个中断优先级,每个中断源的中断优先级都是由中断优先级寄存器I
30、P中的相应位的状态来规定的。其各位定义如下:项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术(1)IP.3 PT1:定时器T2中断优先控制位(仅适应于52子系列单片机)。PT2=1,设定定时器T2中断为高优先级中断;相反为低优先级中断。(2)IP.4 PS:串行口中断优先控制位。PS=1,设定串行口为高优先级中断;相反为低优先级中断。(3)IP.3 PT1:定时器T1中断优先控制位。PT1=1,设定定时器T1中断为高优先级中断;相反为低优先级中断。(4)IP.2 PX1:外部中断1中断优先控制位。PX1=1,设定外部中断1为高优先级中断;相反为
31、低优先级中断。(5)IP.1 PT0:定时器T0中断优先控制位。PT0=1,设定定时器T0中断为高优先级中断;相反为低优先级中断。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术(6)IP.0 PX0:外部中断0中断优先控制位。PX0=1,设定外部中断0为高优先级中断;相反为低优先级中断。当系统复位后,IP低5位全部清0,所有中断源均设定为低优先级中断。MCS-51单片机有5个中断源,但只有两个优先级,必然会有几个中断请求源处于同样的优先级。当CPU同时收到几个同优先级中断请求时,MCS-51单片机内部采用一个硬件查询逻辑电路的查询顺序来判别这
32、些同级中断源的优先级,其自然优先级由硬件形成,排列如下:中断源 同级自然优先级外部中断0 最高级定时器T0中断外部中断1定时器T1中断串行口中断 最低级项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术23 中断中断处理过程处理过程(一)(一)中断处理过程中断处理过程中断处理过程可分为中断响应、中断处理和中断返回三个阶段。不同的计算机因其中断系统的硬件结构不同,中断响应的方式也有所不同。在此以MCS-51单片机为例进行说明。1.中断响应条件中断响应条件CPU响应中断的条件有:有中断源发出中断请求。中断总允许位EA=1。申请中断的中断源允许。满足以
33、上基本条件,CPU一般会响应中断,但若有下列任何一种情况存在,则中断响应会受到阻断。同级或高优先级的中断正在响应。当前指令未执行完。正在执行RETI中断返回指令或访问专用寄存器IE和IP的指令。若存在上述任何一种情况,中断查询结果即被取消,CPU不响应中断请求而在下一机器周期继续查询,否则CPU在下一机器周期响应中断。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 2.中断响应过程中断响应过程CPU响应中断的过程如下:先置位相应的“优先级状态”触发器(该触发器指出CPU当前处理的中断优先级别),以阻断同级或低级中断申请;自动清除相应的中断标志
34、(T1或RI除外);自动保护断点,将现行程序计数器PC内容压入堆栈,并根据中断源把相应的矢量单元地址装入PC中。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术3.中断处理中断处理中断处理就是执行中断服务程序。中断服务程序从中断入口地址开始执行,到返回指令“RETI”为止,一般包括两部分内容,一是保护现场,二是完成中断源请求的服务。通常,主程序和中断服务程序都会用到累加器A、状态寄存器PSW及其它一些寄存器,当CPU进入中断服务程序用到上述寄存器时,会破坏原来存储在寄存器中的内容,一旦中断返回,将会导致主程序的混乱,因此,在进入中断服务程序后,
35、一般要先保护现场,然后,执行中断处理程序,在中断返回之前再恢复现场。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术(二)中断返回(二)中断返回中断返回是指中断服务完后,计算机返回原来断开的位置(即断点),继续执行原来的程序。中断返回由中断返回指令RETI来实现,其具体功能如下:将断点地址从堆栈中弹出,送回到程序计数器PC;将相应中断优先级状态触发器清0,告诉中断系统中断服务程序已执行完毕。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术(三)中断标志的清除(三)中断标志的清除CPU响应中断请求
36、后即进入中断服务程序,在中断返回前,应撤除该中断请求,否则,会重复引起中断而导致错误。MCS-51各中断源中断请求撤消的方法各不相同,分别为:1.串行口中断请求的撤除串行口中断请求的撤除串行口的中断,CPU在响应中断后,硬件不能自动清除中断请求标志位TI、RI,必须在中断服务程序中用软件来清除相应的中断标志位,以撤消中断请求。2.定时器中断请求的撤除定时器中断请求的撤除定时器0或1的溢出中断,CPU在响应中断后即由硬件自动清除中断标志位TF0或TF1,不必采取其它措施。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术3.外部中断请求的撤除外部中
37、断请求的撤除外部中断可分为边沿触发型和电平触发型。在下降沿触发方式下,CPU响应中断后,也是由硬件自动将IE0或IE1标志位清除,不必采取其它措施。对于电平触发的外部中断,因为对于电平触发外中断,CPU在响应中断后,硬件不会自动清除其中断请求标志位IE0或IE1,同时,也不能用软件将其清除。所以,在CPU响应中断后,应立即撤除 或 引脚上的低电平。否则,就会引起重复中断而导致错误。而CPU又不能控制或引脚的信号,因此如图所示,只有通过硬件再配合相应软件才能解决这个问题。0INT1INT0INT1INT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用
38、技术外部中断请求信号加在D触发器的CLK端。由于D端接地,当外部中断请求的正脉冲信号出现在CLK端时,Q端输出为0,或为低,外部中断向单片机发出中断请求。利用P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务程序中采用两条指令来撤除外部中断请求:ANL P1,#0FEH ORL P1,#01H 第一条指令使P1.0为0,因P1.0与D触发器的异步置1端SD相连,Q端输出为1,从而撤除中断请求。第二条指令是必不可少的,使P1.0变为1,=1,Q继续受CLK控制,即新的外部中断请求信号又能向单片机申请中断。否则将无法再次形成新的外部中断。Q0INT1INT项目三项目三 汽车信号灯的循环点
39、亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术24 外部外部中断中断源的扩展源的扩展在实际应用中,若外部中断源超过两个外部中断请求输入端 和 ,则需扩充外部中断源,这里介绍两种简单可行的方法。1用定时器作外部中断源用定时器作外部中断源MCS-51单片机有两个定时器,具有两个内部中断标志和外计数引脚,如在某些应用中不被使用,则它们的中断可作为外部中断请求使用。0INT1INT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术例3.8 将定时器T1扩展为外部中断源。解:将T1设定为方式2(自动恢复计数初值),TH1和TF1的初值均
40、设置为FFH,允许T1中断,CPU开放中断,程序如下:MOVTMOD,#60HMOVTH1,#0FFHMOVTL1,#0FFHSETBTR1SETBET1SETBEA当连接在T1(P3.5)引脚的外部中断请求输入线发生负跳变时,TL1加1溢出使TF1置1,向CPU发出中断申请;TH1的内容同时自动送至TL1使TL1恢复初值。这样T1引脚每输入一个负跳变,TF1都会置1,向CPU请求中断。T0脚相当于边沿触发的外部中断源输入线。也可将T0扩展为外部中断源。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术2中断和查询相结合中断和查询相结合利用两根外
41、部中断输入线(和 脚),每一中断输入线可以通过线或的关系连接多个外部中断源,同时利用并行输入端口线作为多个中断源的识别线,电路原理图如图3-8所示0INT1INT图3-8 一个外中断扩展成多个外中断的原理图项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术图中4个外部扩展中断源通过4个OC门电路组成线或后再与(P3.3)相连,4个外部扩展中断源EINT0 EINT3中有一个或几个出现高电平则输出为0,使脚为低电平,从而发出中断请求,因此,这些扩充的外部中断源都是高电平触发方式。CPU执行中断服务程序时,先依次查询P1口的中断源输入状态转入到相应的
42、中断服务程序,4个扩展中断源的优先级顺序由软件查询顺序决定,即最先查询的优先级最高,最后查询的优先级最低。1INT1INT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术中断服务程序如下:ORG 0013H ;外部中断1入口AJMP INT1 ;转向中断服务程序入口INT1:PUSH PSW ;保护现场PUSH ACCJNB P1.0,EIT0 ;中断源查询并转相应中断服务程序JNB P1.1,EIT1JNB P1.2,EIT2JNB P1.3,EIT3EXIT:POP ACC;恢复现场POP PSWRETIEIT0:;EINT0中断服务程序A
43、JMP EXITEIT1:;EINT1中断服务程序AJMP EXITEIT2:;EINT2中断服务程序AJMP EXITEIT3:;EINT3中断服务程序AJMP EXIT项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术25 中断系统应用举例中断系统应用举例 中断控制实质上是对4个与中断有关的特殊功能寄存器TCON、SCON、IE和IP进行管理和控制,具体控制如下:(1)CPU的开中断与关中断。(2)某个中断源中断请求的允许和屏蔽。(3)各中断源优先级别的设定。(4)外部中断请求触发方式的设定。中断管理和控制程序一般都包含在主程序中,根据需要通
44、过几条指令来完成。中断服务程序是一种具有特定功能的独立程序段,可根据中断源的具体要求进行服务。下面通过实例来说明其具体应用。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术1.定时定时/计数器中断应用举例计数器中断应用举例例3.9 如图3-9所示,用T0监视一汽车配件生产流水线,每生产100个工件,发出一包装命令,包装成一箱,并记录其箱数。图中D1为红外发光二极管,D2为红外光敏二极管,当D2接收到D1发出的红外光照射时导通,T0输入端产生一个负脉冲作为计数脉冲。图3-9 用T0作计数器硬件电路项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的
45、循环点亮控制汽车汽车单片机单片机应用技术应用技术解:根据题意,用T0作计数器,每计数100次T0计数器溢出,由P1.0控制包装机打包。定时/计数器T0的4种工作方式均可满足计数要求,而方式2具有自动重装功能,因此本题选用定时方式2。定时/计数器工作方式控制字TMOD=06H(T0方式2且为计数方式)计数初值=28100=9CH若用31H、30H单元保存箱数计数值,打包控制信号(正脉冲)由P1.0输出,程序为:ORG0000H LJMPMAIN ORG000BH;T0中断入口地址 LJMPDD1 ORG0030H 项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机
46、应用技术应用技术MAIN:MOVP1,#00H;P1.0无信号输出 MOV30H,#00H;MOV31H,#00H;箱数计数器清“0”MOVTMOD,#06H;置T0工作方式 MOVTH0,#9CH MOVTL0,#9CH;计数初值送计数器 MOVIE,#82H;T0允许中断 SETBTR0;启动T0 AJMP$;程序循环执行DD1:MOVA,30H ADDA,#01H;计数器加“1”MOV30H,A;保存 MOVA,#00H ADDCA,31H;若有进位,加进位 MOV 31H,A;SETBP1.0;启动外设包装 ;包装延时 CLRP1.0;包装结束 RETI END 项目三项目三 汽车信号
47、灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术2.2.外部中断应用举例外部中断应用举例例3.11 如图为一汽车简单防盗报警系统控制电路,K1为安装在车门内的开关,门关闭时接高电平,门打开时接低电平;K2为报警/不报警选择开关,当P1.7为高电平时报警,否则不报警。报警声音采用语音芯片播放,当P1.1为低电平时,喇叭发声,否则不发声。工作时只要K2选择报警状态,当外人打开车门时,K1接低电平触发中断,P1.1输出低电平报警,程序编写为:1INTP101EA31P112P123P134P145P156P167P178INT01289C 51语音芯片V C CV C C
48、V C CV C C.K1K2图3 汽车简单防盗报警电路项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术 ORG0000H LJMPMAIN ORG0003H LJMPLL ORG0030H MAIN:MOVP1,#0FFH;P1设为输入 MOVA,P1;读P1状态 SETBP1.1;关闭扬声器 JBACC.7,TT;P1.7=1允许报警 CLREA;P1.7=0不允许报警 CLREX0 LJMPKK TT:SETBEX0;中断允许 SETBEA CLRIT0;电平触发方式项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单
49、片机单片机应用技术应用技术KK:AJMP$;中断服务程序LL:CLREA;关闭中断 CLRP1.1;使语音芯片工作 AJMP$;无外界干预,一直报警 RETI END 项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术1.项目设备与电路项目设备与电路 (1)项目设备:单片机仿真器、编程器和单片机应用系统。(2)项目电路:如图 图 项目3电路图项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车汽车单片机单片机应用技术应用技术2.流程图流程图本实验主程序流程图如图所示。项目三项目三 汽车信号灯的循环点亮控制汽车信号灯的循环点亮控制汽车
50、汽车单片机单片机应用技术应用技术3.项目步骤及要求项目步骤及要求(1)步骤)步骤1:定时器查询方式:定时器查询方式要求:用定时器方式1编制1秒的延时程序,实现信号灯循环显示的控制。系统采用12M晶振,采用定时器T0方式1定时50ms,用R3做50ms计数单元,得到1s,可设计源程序如下:ORG 0000HMOV A,#11111110B ;开始时,欲令最右边的LED亮LOOP:MOV P1,A ;把A的内容送至P1 ACALL DELAY ;延时1s RL A ;把A的内容向左移1位AJMP LOOPDELAY:MOV R3,#20 ;欲延时50ms 20=1000ms=1s MOV TMOD