配色: 字号:
第4章 中断
2012-05-16 | 阅:  转:  |  分享 
  
(3)中断服务:根据入口地址转中断服务程序,包含保护现场、执行中断主体、恢复现场.因为各入口地址只相隔8个字节,一般的中断
服务程序是放不下的,所以通常在各入口地址单元放一条LJMP指令,使中断服务程序灵活安排在64k程序存储器的任何空间(4
)中断返回:断点出栈→开放中断允许→返回原程序.7.中断与子程序的区别所谓“中断”,是指CPU执行正常程序时,系
统中出现特殊请求,CPU暂时中止当前的程序,转去处理更紧急的事件,处理完毕后,CPU返回原程序的过程.中断与子程序的最主要区别
:子程序是预先安排好的;RET中断是随机发生的;RETI8.外部中断的响应时间(
了解)外部中断的最短的响应时间为3个机器周期.(1)中断请求标志位查询占1个机器周期(2)子程序调用指令LCALL以
转到相应的中断服务程序入口,则需要2个机器周期.外部中断响应的最长时间为8个机器周期.这种情况发生在CPU进行中
断标志查询时,刚好是开始执行RETI或是访问IE或IP的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,最长需2个机
器周期.接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期.加上硬件子程序调用指令LCALL
的执行,需要2个机器周期.所以,外部中断响应最长时间为8个机器周期.如果已在处理同级或更高级中断,外部中断请求的响
应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算了.在一个单一中断的系统里,MCS-51
单片机对外部中断请求的响应的时间总是在3~8个机器周期之间.9.中断请求的撤销中断响应后,必须及时清除TCON
、SCON中的已响应中断请求标志位,否则,会引起中断的重复查询和响应.SM0SM1SM2REN
TB8RB8TIRISCONTF1TR1TF0TR0IE1
IT1IE0IT0TCON(1)外中断请求的撤销:(复杂)涉及中断标志位和外部中断信号两种清除
对于负脉冲触发方式:IE0/IE1标志位自动清除.由于触发信号过后就消失,撤销自然也就是自动的. 对于低电平触
发方式:IE0/IE1标志位自动清除,由于外部管脚低电平可能继续存在,需另外考虑撤销中断请求信号的措施,需通过外加硬件电路把信号引
脚低电平强制改变为高电平的方法来实现撤销(special).(2)定时中断请求的撤销:TF0/TF1标志位自动清除.(3)串行
中断请求的撤销:RI/TI不能自动清“0”,须用软件的方法在中断服务子程序中进行清“0”CLRTI/CLRRI.
JBCTI/RI,4.5关于中断的几个编程实例例1:在中断服务程序将寄存器B的内容左移一位,B的初值设为01H,
试编写主程序,中断服务程序(外部中断的例子) ORG0000h LJMPMAIN ORG0013h L
JMPEXINT1MAIN: MOVSP,#60H SETBEA ;开总中断 SETBEX1 ;开外部中断1
CLRPX1 ;外部中断1的优先级为低 SETBIT1 ;脉冲触发方式,在这里对P3.3口实现高电平到低电平的跳变,理解
后负跳沿触发;如改为CLRIT1低电平触发,这样可以不断响应中断,理解低电平部触发的消除方式;改为CLRIT1试试看 M
OVB,#01H SJMP$ ;双机器周期指令EXINT1:MOVA,B ;中断服务程序 RLA MOVB
,A RETI ;中断服务程序返回 END(Keil演示)观察PORT3,INTERRUPT,SP例2:设
8051时钟频率为12MHz,试利用Timer0,在P1.0引脚上输出周期为2s的方波程序(定时器中断的例子)T:周期分析:f
osc=12MHz,1Tm=1us,T=2s,半个方波周期=1s=1000ms1000ms÷1us=1000,000若
选择方式1工作,16位定时器最大值为65536<1000,000所以设定:采用2050ms的方式对于50ms,50ms/1
us=50,00065536-50000=15536D=3CB0H(不要算错)(可以全速演示,可以单步演示,涉及后面的定时器知
识Keil演示观察PORT1,INTERRUPT,Timer/Counter0,SP ORG0000H
LJMPSTART ORG000BH LJMPT0SVR ORG0030HSTART:MOVSP,#
40H MOVTMOD,#01H ;00000001方式1 MOVTH0,#3CH ;赋初值 MOV
TL0,#0B0H MOVR0,#20 ;20次 SETBEA ;开总中断 SETBET0 ;
开定时器0中断 SETBTR0 ;定时器0开始运行 SJMP$ ORG0300HT0SVR
:DJNZR0,QUIT ;20次还没到,重新赋初值,退出中断 CPLP1.0 MOVR0,#2
0QUIT:MOVTH0,#03CH ;定时器方式1要重新赋值 MOVTL0,#0B0H
RETI END第4章MCS-51的中断系统(Interrupt)(学生事先必须预习,本章是一个难点、
重点)第4章中断/第5章定时器计数器/第7章串行口与串行通信三者联系紧密,学习时注意前后联系的看书4.1中断的基本概
念4.2单片机的中断源4.3与中断有关的4个寄存器IEIPTCONSCON4.4几个需要注意的问题
4.1中断的基本概念 CPU正在执行主程序时,单片机外部或内部发生的某一事件(如外部设备产生的一个电平的变化,一个脉
冲沿的发生或内部计数器的计数溢出等)请求CPU迅速去处理,于是,CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件.
中断服务处理程序处理完该事件后,再回到原来被中止的地方,继续原来的工作(例如:继续执行被中断的主程序),这称为中断.CPU处理
事件的过程,称为CPU的中断响应过程.日常生活中的中断与单片机中断的比较:某人看书 执行主程序 电话铃响 中断信
号如INT=0中断请求暂停看书 暂停执行主程序中断响应书中作记号当前PC入栈 保护断点电话谈话 执行中
断程序中断服务继续看书 返回主程序 中断返回(上课看短信,手机关机,静音)日常事务程序中断服务程
序①中断源②中断申请③开放中断④保护现场⑤中断服务⑥恢复现场⑦中断返回中断涉及的几个环节(前面
提到的电话)(电话发出信号提出申请)(乙方同意传送)(安排好当前的工作)(响应乙方的要求)(完事后,回去……)
(继续做打断前的工作)中断有如下重要的作用:第一、实现高速CPU和低速外设之间的配合.利用中断方式进行的I/O
口操作,在宏观上可以看成CPU和外设的并行工作.第二、可以实现实时控制.实时处理是控制系统对单片机提出的要求,各个设各可
以随时向CPU发出中断申请,而CPU也必须作出快速响应和及时处理.第三、实现故障的紧急处理.当外设发生故障时,可以利用中
断系统请求CPU及时处理这些故障.第四、便于人机联系.操作人员可以利用键盘等实现中断,完成人工介入.4.2单片机
的中断源1.51子系列允许5个中断源(记忆):2个外部中断请求:INT0(IE0),INT1(IE1)2个片内定时器
/计数器T0和T1溢出中断请求:TF0,TF11个串行口中断请求:TI/RI2.(1)在P3.2(INT0)/P3.3(I
NT1)引脚输入一个负脉冲或低电平,TCON寄存器中的IE0/IE1标志位将会自动置“1”(2)定时器/计数器可按片内机器
周期定时,或者P3.4(T0)/P3.5(T1)引脚输入一个负脉冲进行加法计数,T0/T1加满溢出时,TF0/TF1标志位自动
置“1”(3)串行接口发送/接受完一帧数据,RI/TI标志位自动置”1”复习:单片机的引脚(pin)符号名
称中断引起原因中断服务程序入口(ROM空间)INT0外部中断0P3.2(INT0)引脚的低电平或
下降沿信号0003HT0定时器0溢出中断定时计数器0计数回零溢出000BHINT1外部中断1P3.3(IN
T1)引脚的低电平或下降沿信号0013HT1定时器1溢出中断定时计数器1计数回零溢出001BHTI/RI串
行口中断串行通信完成一帧数据发送或接收引起中断0023H3.中断服务程序入口(ROM空间)11个可位寻址的寄存器
,bitaddressable4.3与中断有关的4个寄存器复习:SFR复位状态表寄存器复位状态寄存器复位状态
PC0000HTCON00HA00HT2CON00HB00HTH000HPSW00HTL000HS
P07HTH100HDPTR0000HTL100HP0~P3FFHSCON00HIPXX000000B
SBUFXXHIE0X000000BPCON0XXX0000BTMOD00H1.IE中断允许寄存器(记忆!
)(0A8H)InterruptEnableregister.Bitaddressable (一
般用位处理指令来操作)EA:EnableAllinterrupt总的中断允许控制位(总阀门)IfEA=0,
disableallinterrupt.nointerruptwillbeacknowledged.IfEA
=1,eachinterruptsourceisindividuallyenableordisabledbys
ettingorclearingitsenablebit. =0时禁止全部中断 (CLREA) =
1时允许中断 (SETBEA)EA—----ESET1EX1ET0E
X0IE(1)EX0:EnableordisableeXxternalinterrupt0.外部中断IN
T0允许位 EX0=1,允许INT0中断; EX0=0,禁止INT0中断.(2)ET0:Enable
ordisabletheTimer0overflowinterrupt.定时器T0中断允许位,ET0=1,允许T1计
数溢出中断;ET0=0,禁止T0中断.(3)EX1:EnableordisableeXternalInterrupt
1.外部中断INT1允许位 EX1=1,允许INT1中断;EX1=0,禁止INT1中断.
(4)ET1:EnableordisabletheTimer1overflowinterrupt.定时器T1
中断允许位,ET1=1,允许T1计数溢出中断;ET1=0,禁止T1中断.(5)ES:Enableordisable
theSerialportinterrupt串行口中断允许位 ES=1,允许串行口发送/接收中断;
ES=0,禁止串行口中断.EA—---ESET1EX1ET0EX0IE
复位后,IE=00H,禁止所有的中断,在系统初始化程序中对IE寄存器编程例:以中断方式使用T1
SETBEA;开中断总开关SETBET1;允许定时器1中断(位处理指令更常用)或者M
OVIE,#88H;10001000注:各中断允许控制位=0,开关断开=1,开关接通IE0EX0TF0IE
1TF1TIESET1EX1ET0外部中断请求0外部中断请求1内部定时器0内部
定时器1内部串行口TRRIIE寄存器EA位IP寄存器各单路开关总开关中断源标志位查询机构
高中断级中断请求低中断级中断请求中断入口中断源标志位INTxINTx中断入口中断源标志位TRx启动定时/计数器
Timer/CounterRuncontrolITx是外部中断INTx触发方式选择=1是负脉冲TF
x标志C/T中断IEx标志外部中断TCONSCONNOTE:注意和IE对比
记忆PX0:DefinetheeXternalinterrupt0Prioritylevel
外部中断0优先级控制位PT0:DefinetheTimer0interruptPriorityleve
l T0中断优先级控制位2.IP中断优先级控制寄存器(记忆!)(0B8H)InterruptPriority
register.Bitaddressable——---PSPT1PX
1PT0PX0IPEA—---ESET1EX1ET0EX0
IEPX1:DefinetheeXternalinterrupt1Prioritylevel 外部中断
1优先级控制位PT1:DefinetheTimer1interruptPrioritylevel T1
中断优先级控制位PS:DefinetheSerialportinterruptPrioritylevel
串行口中断优先级控制位=0低优先级=1高优先级(记忆)——---PS
PT1PX1PT0PX0IPTF1TR1TF0TR0IE1IT1IE0
IT03.TCON定时器/计数器控制寄存器(88h)specialTIMER/COUNTERCONTROLRE
GISTER.BITADDRESSABLETCON(1)按bit记忆TF/TR/IE/IT(overFlow/Run
/Edge/Type)(2)高半字节给定时器用,低半字节给外部中断用)(3)11001100标志位+设置位+标志位+设置位
TF1TR1TF0TR0IE1IT1IE0IT0TF1/TF0:Timer
1/0overFlowflag.定时器溢出中断申请标志位SetbyhardwarewhentheTimer/
Counter1overflows.Clearedbyhardwareasprocessorvectorsto
theinterruptserviceroutine.(注意这个hardware和后面的software)=0:定时器
未溢出;=1:定时器溢出申请中断,进中断后自动清零.TCONTR1/TR0:Timer1/0Runcont
rolbit.T1/T0运行控制位Set/clearedbysoftwaretoturnTimer/Counte
r1/0ON/OFF(注意这些software,编程者需要干的事情)TR1/0=1,启动T0工作(SETBTR0
)TR1/0=0,停止T0工作(CLRTR0)TF1TR1TF0TR0IE1IT1I
E0IT0TCONIE0/IE1:externalInterrupt1/0Edgeflag.(spe
cial) 外部中断成立的标志位SetbyhardwarewhenExternalInterrupt
edgeisdetected.Clearedbyhardwarewheninterruptisprocesse
d.=0:没有外部中断申请=1:有外部中断申请TF1TR1TF0TR0IE1IT1
IE0IT0TCONTF1TR1TF0TR0IE1IT1IE0I
T0IT1/IT0:Interrupt1/0Typecontrolbit
外部中断触发方式控制位Set/clearedbysoftwaretospecifyfallingedg
e/lowleveltriggeredExternalInterrupt.IT0/IT1=1(SETBIT0)负脉
冲触发方式,后沿负跳有效IT0/IT1=0(CLRIT0)低电平触发方式,低电平有效TCONSM0
SM1SM2RENTB8RB8TIRI4.SCO
N串行控制寄存器(98h)SERIALPORTCONTROLREGISTER.BITADDRESSABLETI:
TransmittedInterruptflag.串行口发送数据申请中断标志位Setbyhardwareat
theendofthe8thbittimeinmode0,orhalfwaythroughthestop
bittimeintheothermodes(exceptseeSM2).Mustbecleared
bysoftware. =1申请中断; =0不申请中断 JBCTI,mainloopSCONRI
:ReceiveInterruptflag 串行口接受数据申请中断标志位Setbyhardwarea
ttheendofthe8thbittimeinmode0,oratthebeginningoft
hestopbitintheothermodes.Mustbeclearedbysoftware.
=1申请中断 =0不申请中断SM0SM1SM2RENTB
8RB8TIRI1.中断系统硬件结构注:各中断允许控制位=0,开关断开=1,开
关接通IE0EX0TF0IE1TF1TIESET1EX1ET0外部中断请求0外部中断请求1内部
定时器0内部定时器1内部串行口TRRIIE寄存器EA位IP寄存器各单路
开关总开关中断源标志位查询机构高中断级中断请求低中断级中断请求中断入口中断源标志位INT0INT1中断入口中断
源标志位4.4几个需要注意的问题(1)在CPU已经开放了外部中断允许的前提下;(2)在INT0/INT1引脚输入一
个负脉冲或低电平;(3)TCON寄存器中的IE0/IE1标志位自动变“1”;(4)检测到IE0/IE1变“1”后,将PC将自
动变为0003H(0013H),去执行中断服务程序;(5)并将IE0/IE1标志位自动清“0”,以备下次申请.外部中断(INT
0,INT1)申请过程2.CPU识别中断申请的依据(了解)CPU在每个机器周期的S5P2期间,会自动查询各个中断申
请标志位,若查到某标志位被置位(1),将在下一个机器周期S1期间,按优先级顺序进行中断处理.TcTsTmTmS5S6
S4S3S2S5S6S4S3S2S13.单片机的中断矢量与优先级(记忆)中断矢量:51单片机的5个
中断源分别对应有各自的中断服务程序入口地址——中断矢量(和IE/IP记忆)000BHTF0定时/计数器0(T0)0023H
RI/TI串行口接收/发送001BHTF1定时/计数器1(T1)0013HIE1外部中断1(INT1)0003
HIE0外部中断0(INT0)中断优先级中断矢量申请标志中断源最高优先级最低优先级例:若(IP)=
00010100B,则优先级顺序为:PX1>PS>PX0>PT0>PT1注意理解记忆,考试优先级是为中断嵌套
服务的,因为MCS-51具有两级优先级,因此它也就具备两级中断服务嵌套的功能。其中断优先级的控制原则是:(1)低优先级中断请求不
能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。(2)如果一个中断请求已被响应,则同级
的其它中断服务将被禁止,即同级不能嵌套。(3)如果同级的多个中断请求同时出现,则按CPU查询次序确定哪个中断请求被响应.其查询次
序为:PX0>PT0>PX1>PT1>PS4.中断优先级处理原则:(记忆)在中断源提出了中断申请,且CPU此前已经允许中断的前提下,还须满足以下三个条件:(了解)(1)没有同级的中断或更高级别的中断正在处理;(2)正在执行的指令必须执行完最后1个机器周期;(3)若正在执行RETI,或正在访问IE或IP寄存器,须执行完上述指令和下一条指令以后方能响应中断.5.中断应用前后要做的几项工作(1)中断初始化开中断允许:必须(SETBEA/E)选择优先级:根据需要选择(可有/可无)设置控制位:外部中断触发方式(IT0/1)T0/T1—TCON,TMOD,TRx,初值……RI/TI—SCON,REN,RB8,TB8,……(2)中断服务进入中断服务后:保护现场,关中断,……退出中断服务前:恢复现场,开中断,设Tx的初值,清 TI/RI,……中断服务程序的最后一条指令必是RETI6.中断处理过程包含:中断请求、中断响应、中断服务、中断返回四个阶段(1)中断请求:中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU查询.IE0/IE1/TF0/TF1/TI/RI(2)中断响应:在一条指令的最后一个周期按优先级顺序查询中断标志,为“1”并满足响应条件时响应.响应操作:断点压栈→撤除中断标志→关闭低同级中断允许→中断入口地址送PC.实际上响应中断的主要操作是有硬件自动产生一条长调用指令LCALL(改变PC).
献花(0)
+1
(本文系依米荷阳首藏)