第4章-并行接口P0~P3和单片机的中断系统_第1页
第4章-并行接口P0~P3和单片机的中断系统_第2页
第4章-并行接口P0~P3和单片机的中断系统_第3页
第4章-并行接口P0~P3和单片机的中断系统_第4页
第4章-并行接口P0~P3和单片机的中断系统_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、彭周华1 4.1.1 PO-P3接口的功能和内部结构 4.1.2 编程举例 4.1.3 用并行口设计LED显示与键盘电路 4.1.4 并行接口小结 4.2.1 8XX51中断系统结构 4.2.2 中断响应过程 4.2.3 中断的程序设计 2:CPUCPU与外设设备之间的电路。与外设设备之间的电路。: 解决总线使用冲突、协调解决总线使用冲突、协调快速快速CPUCPU与与慢速外设慢速外设。:并行接口、串行接口、定时:并行接口、串行接口、定时/ /计数器、计数器、A/DA/D、D/AD/A等。等。n MCS-51 MCS-51单片机有单片机有P0P0、P1P1、P2P2、P3P3四个四个8 8位双向

2、位双向I/OI/O口,四个口共口,四个口共3232根端口线,每个端口可以按字节根端口线,每个端口可以按字节输入或输出,也可以按位进行输入或输出。输入或输出,也可以按位进行输入或输出。n P0P0口为三态双向口能带口为三态双向口能带8 8个个TTLTTL电路;电路;n P1P1、P2P2、P3P3口为准双向口,负载能力为口为准双向口,负载能力为4 4个个TTLTTL电电路。路。31. 1. 作为输入作为输入/ /输出(输出(I/OI/O)口。)口。2. 2. 作为地址作为地址/ /数据复用总线,数据复用总线,P0P0口分时输出低口分时输出低 8 8 位地址位地址(A0-A7A0-A7)与数据信号

3、()与数据信号(D0-D7D0-D7)。)。8051锁存器地址总线数据总线ALEP0P2A0A7D0D7A8A154nP1P1口口- -作为输入作为输入/ /输出口。输出口。nP2P2口口- -双重功能双重功能作为输入作为输入/ /输出口。输出口。作为高作为高8 8位地址总线(位地址总线(A8-A15A8-A15)。)。 nP3P3口口- -双重功能双重功能作为输入作为输入/ /输出口。输出口。作第二功能使用时,每一位定义如下表所示作第二功能使用时,每一位定义如下表所示: : 5端口引脚第二功能P3.0P3.0RXD RXD (串行输入线)(串行输入线)P3.1P3.1TXD TXD (串行输

4、出线)(串行输出线)P3.2P3.2 (外部中断(外部中断0 0输入线)输入线)P3.3P3.3 (外部中断(外部中断1 1输入线)输入线)P3.4P3.4T0 T0 (定时器(定时器0 0外部计数脉冲输入)外部计数脉冲输入)P3.5P3.5T1 T1 (定时器(定时器1 1外部计数脉冲输入)外部计数脉冲输入)P3.6P3.6 (外部数据存储器写选通信号输入)(外部数据存储器写选通信号输入)P3.7P3.7 (外部数据存储器读选通信号输入)(外部数据存储器读选通信号输入)WRINT1RD INT06n四个端口的结构的都有两个输入缓冲器,分别受内部读锁存器和读引脚控制信号的控制。都有锁存器(即专

5、用寄存器POP3)都是场效应管输出驱动。n依据每个端口的不同功能,内部结构亦有不同之处,以下重点介绍不同之处。7P0P0口的输出驱动电路由上拉场效应管口的输出驱动电路由上拉场效应管T1T1和驱和驱动场效应动场效应T2T2组成,控制电路包括一个与门,组成,控制电路包括一个与门, 一个非一个非门和一个模拟开关门和一个模拟开关MUXMUX。8nCPUCPU发控制电平发控制电平“0”,0”,封锁与门,使封锁与门,使T1T1管截止管截止,同时,同时使使MUXMUX开关同开关同下面的触点下面的触点接通,使锁存器的接通,使锁存器的QQ与与T2T2栅栅极接通。极接通。9n CPU CPU向端口输出数据。写脉冲

6、加在向端口输出数据。写脉冲加在CLCL上、数据通过内部总上、数据通过内部总线经线经D D锁存器和锁存器和T2T2反相,从反相,从P0P0口的这一位引脚上输出。口的这一位引脚上输出。n P0 P0作作I/OI/O口使用时应外接口使用时应外接10K10K的的上拉电阻上拉电阻。 10n输入操作时有两个三态缓冲器用于读操作。输入操作时有两个三态缓冲器用于读操作。n缓冲器缓冲器2 2用于读端口引脚的数据。当执行端口读指令时,读引用于读端口引脚的数据。当执行端口读指令时,读引脚脉冲打开三态缓冲器脚脉冲打开三态缓冲器2 2,于是端口引脚数据经三态缓冲器,于是端口引脚数据经三态缓冲器2 2送送到内部总线。到内

7、部总线。n缓冲器缓冲器1 1用于读取锁存器用于读取锁存器Q Q端的数据。执行端的数据。执行“读读- -修改修改- -写写”指令指令(ANL P0(ANL P0,A)A),即是读锁存器,即是读锁存器Q Q的数据。的数据。 11n读锁存器是为了读锁存器是为了避免错读避免错读引脚的电平信号。引脚的电平信号。n究竟读引脚还是读锁存器,究竟读引脚还是读锁存器,CPUCPU内部会自行判断是发读引内部会自行判断是发读引脚脉冲还是读锁存器脉冲。脚脉冲还是读锁存器脉冲。12当当P0P0作输入端口使用时,应先对该口写入作输入端口使用时,应先对该口写入“1”1”使场效应管使场效应管T2T2截止,再进行读入操作,以防

8、场效应管截止,再进行读入操作,以防场效应管处于导通状态,使引脚箝位到零,而引起误读。处于导通状态,使引脚箝位到零,而引起误读。13n内部控制信号为内部控制信号为“1”1”,转换开关,转换开关MUXMUX打向上面的触点,打向上面的触点, 使反相器的输出端和使反相器的输出端和T2T2管栅极接通。管栅极接通。n输出的地址或数据输出的地址或数据:信号通过与门驱动:信号通过与门驱动T1T1管,同时通过管,同时通过反相器驱动反相器驱动T2T2管完成信息传送管完成信息传送n输入的数据输入的数据通过缓冲器进入内部总线。通过缓冲器进入内部总线。14nP1P1口仅作通用口仅作通用I/OI/O口使用,并且输出驱动部

9、分接有上拉电口使用,并且输出驱动部分接有上拉电阻。阻。n当作输入时,使用同当作输入时,使用同P0P0一样,一样, 要先对该口写要先对该口写“1”1”。( b ) P 1 口 位 结 构1读 锁 存 器内 部 总 线写 锁 存 器读 引 脚TV c cP 1 . x引 脚2DQC LP 1 . x锁 存 器内 部 上 拉 电 阻15n P2 P2口作通用口作通用I/OI/O口时,多路开关口时,多路开关MUXMUX倒向左边;倒向左边;n P2P2口作为高口作为高8 8位地址线时,位地址线时,MUXMUX倒向右边。倒向右边。n注意:注意:当当P2P2口的某几位作地址线使用时,剩下的口的某几位作地址线

10、使用时,剩下的P2P2口线口线不能作不能作I /OI /O口线使用。口线使用。地址控制Vcc内部上拉电阻T1MUX12DCLQP2.x锁存器P2.x引脚读锁存器内部总线写锁存器读引脚P2P2口的位结构比口的位结构比P1P1多了一个转多了一个转换控制部分换控制部分16n作为普通作为普通I/OI/O口口输出输出时,第二输出功能端保持时,第二输出功能端保持“1”1”,打开,打开与非门与非门3 3,用法同,用法同P1P1口。口。n当作第二功能当作第二功能输出输出时,锁存器输出为时,锁存器输出为“1”1”打开与非门打开与非门3 3,第二功能内容通过与非门第二功能内容通过与非门3 3和和T T送至引脚。送

11、至引脚。读读 锁锁 存存 器器内 部 总 线写 锁 存 器读 引 脚第 二 输 出 功 能第 二 输 入 功 能内 部 上 拉 电 阻P3.x引 脚TVcc1234DCLQP3.x锁 存 器( (d d) )P P3 3口口 位位 结结 构构17时,引脚的信号通过三态缓冲器时,引脚的信号通过三态缓冲器4 4进入第二输入功能端。进入第二输入功能端。两种功能的引脚输入都应使两种功能的引脚输入都应使T T截止。截止。注意:注意:P3P3的各位根据需要设定。的各位根据需要设定。 把几条引脚设为第二功能,把几条引脚设为第二功能,剩下的引脚可作剩下的引脚可作I/OI/O使用,采用位操作形式。使用,采用位操

12、作形式。读读 锁锁 存存 器器内 部 总 线写 锁 存 器读 引 脚第 二 输 出 功 能第 二 输 入 功 能内 部 上 拉 电 阻P3.x引 脚TVcc1234DCLQP3.x锁 存 器( (d d) )P P3 3口口 位位 结结 构构18u 如果单片机内部有程序存贮器,并且不需要扩展外如果单片机内部有程序存贮器,并且不需要扩展外部存贮器,四个口均可作部存贮器,四个口均可作I/OI/O口使用。口使用。u 四个口在作输入口使用时,均应先对其写四个口在作输入口使用时,均应先对其写“1”1”,以,以避免误读。避免误读。u P0P0口作口作I/OI/O口使用时应外接口使用时应外接10K10K的上

13、拉电阻。的上拉电阻。u P2P2口的某些引脚作地址使用时,剩下的引脚不能作口的某些引脚作地址使用时,剩下的引脚不能作I/OI/O口使用。口使用。u P3P3口的某些引脚作第二功能时,剩下的引脚可以单口的某些引脚作第二功能时,剩下的引脚可以单独作独作I/OI/O口使用。口使用。19u 如果单片机需要扩展外部存贮器。 P0口作AD0-AD7, P2口作A8-A15,P3口的某些口线(/RD, /WR)作第二功能(控制线)使用。8051锁存器地址总线A0A15数据总线D0D7P0P2ALE/PSEN/RD/WR控制总线A8A15A0A7D0D7AD0AD720例例1 1. .设计一电路,监视某开关设

14、计一电路,监视某开关K K,用发光二极管,用发光二极管LEDLED显示开显示开关状态。如果开关合上,关状态。如果开关合上,LED LED 亮;开关断开,亮;开关断开,LEDLED熄灭。熄灭。 分析分析:设计电路如图:设计电路如图4. 24. 2如示。如示。开关接在开关接在P1.1P1.1口线,口线,LEDLED接接P1.0P1.0口线;口线;开关断开时,开关断开时,P1.1P1.1为为+5V+5V,对应数字量为,对应数字量为“1”1”;开关合上时,开关合上时,P1.1P1.1电平为电平为0V0V,对应数字量为,对应数字量为“0”0”。这样,可以用这样,可以用JBJB指令对开关状态进行检测指令对

15、开关状态进行检测 。nLEDLED正偏时才能发亮,按电路接法:正偏时才能发亮,按电路接法:当当P1.0P1.0输出输出“1”1”, LEDLED正偏而发亮;正偏而发亮;当当P1.0 P1.0 输出输出“0”0”,LED LED 的两端电压为的两端电压为 0 0 而熄灭。而熄灭。 21LED+5VVcc-EARST10uF 1KP1.0P1.11K30P30PXTAL1XTAL2GND89C51+5VVcc-EARST10uF 1KP1.0+5VP1.11K30P30PXTAL1XTAL2GND89C51K开关合上,LED 亮;开关打开,LED熄灭。22CLR P1.0 ;使发光二极管灭AGA:

16、 SETB P1.1 ;先对P1口写入“1”JB P1.1,LIG ;开关断开,转LIGSETB P1.0 ;开关闭合,二极管亮SJMP AGALIG: CLR P1.0 SJMP AGAENDLED1KP1.089S5189S51+5VP1.11K89C5189C51K23n电路图中二极管亮度不够。n下面两种电路,可增加驱动能力使得二极管更亮些。1、接成灌电流形式2、加驱动电路LEDP1.089C51+5VP1.0LEDP1.0+5VLED124例2:如图所示,P1.0P1.3接四个开关, P1.4P1.7接四个发光二极管,编程将开关的状态反映到发光二极管上。 111189C51P1.0P1

17、.1P1.2P1.3P1.4P1.5P1.6P1.7+5V+5V1K43304EA25分析:开关状态:P1的低4位, LED输出:P1的高4位 读开关之前,输入位都先置“1” 。编程如下:ORG 0000HABC: MOV P1,#0FFH ;高四位亮,低四位送“1”MOV A, P1 ;读P1口引脚开关状态至ASWAP A ;低四位开关状态转换到高四位ANL A, #0F0H ;保留高四位MOV P1, A ;从P1口输出SJMP ABC ;循环26n 键盘和显示器是单片机应用系统中常用的输入输出装置。LED数码管是常用的显示器之一,下面介绍用单片机并行口如何设计LED数码显示控制电路。 L

18、ED有着显示亮度高,响应速度快的特点,最常用的是七段式LED显示器,又称数码管。 七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。27nLED的管脚排列见图(a)。其中COM为公共点;n根据内部的接线形式,可分成共阴极型图(b)和共阳极型图(c)。abcdefgdpcomabcdefgdpcom(b)(c)(a)28nLED数码管的a g七个发光二极管因加正电压而发亮,加零电压而不能发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码。n显然共阳极和共阴极的字形码是不同的,其字形码见下表。29十六进制代码dpgfeda共阴共阳0123456

19、789ABCDEFHP0000000000000000010011111011110111111000111011111011111010001010111111111011011011011110001101111111110100001111100111100100011011011111101011113F H06 H5B H4F H66 H6D H7D H07 H7F H6F H77 H7C H39 H5E H79 H71 H76 HF3 HC0F9A4B0999282F880908883C6A18684FFBFcb显示字符段 符 号30nLED数码管每段需1020mA的驱动电流,可用

20、TTL或CMOS器件驱动。n字形码的控制输出方式硬件译码方式:如采用BCD7段译码/驱动器74LS48、74LS49、CD4511- (共阴极)74LS46、74LS47、CD4513- (其阳极)软件查表方式31n软件查询数码管显示有静态接口与动态接口两种方式n静态接口一个并行口接一个数码管,占用引脚多。固定显示。n动态接口段选共同接到一个并行口,每个数码管的com端接不同的引脚上。循环显示。32P1.189C51P1.0P1.2P1.4P1.3P1.5P1.6驱动器+5VagEA图中为星期的显示电路(显示17)。P1口接有74LS373驱动器,驱动共阴极数码管。时间计算由定时器完成,星期的

21、数字存放在A中,编写显示子程序。33n显示子程序:显示字符的字形码根据查表法找到; 从P1输出。n入口:A中存放要显示的数。34例例2 2:如图接有五个共阴极数码管的动态显示接口电路,如图接有五个共阴极数码管的动态显示接口电路,用用74LS37374LS373接成直通的方式作驱动接成直通的方式作驱动 电路,阴极用非电路,阴极用非门门74LS0474LS04反相门驱动,字形选择由反相门驱动,字形选择由P1P1口提供,位选口提供,位选择由择由P3P3口控制。当口控制。当P3.0P3.0P3.4P3.4轮流输出轮流输出1 1时,五个数时,五个数码管轮流显示。码管轮流显示。P1.7P1.7接开关,当开

22、关打向位置接开关,当开关打向位置“1”1”时,时, 显示显示“12345”12345”字样,当开关打向字样,当开关打向“2”2”时,显示时,显示“HELLO”HELLO”字样。字样。353611111+5VVcc/EARSTP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P3.0P3.1P3.2P3.3P3.4XTAL1XTAL2GND89C51Q0Q6/OED0D6G373ag图5-5 接五个共阴极数码管的动态显示接口ORG 0000H ORG 0000H MOVMOV P3 P3,#0#0TEST:TEST:SETBSETB P1.7 P1.7JBJB P1.7 P1.7,

23、DIR1 DIR1 MOVMOV DPTR DPTR,#TAB 1#TAB 1SJMP SJMP DIR DIRDIR1: DIR1: MOV MOV DPTR DPTR,#TAB2#TAB2DIR: DIR: MOVMOV R0 R0,#0 #0 MOVMOV R1 R1,#01 #01 NEXT:NEXT:MOVMOV A A,R0R0MOVC MOVC A A,A+DPTR A+DPTR MOV MOV P1 P1,A AMOV MOV A A,R1R1MOVMOV P3 P3,A A ACALLACALL DAY DAY 37INCINC R0 R0 RL RL A A MOV MOV

24、 R1 R1,A ACJNE CJNE R1 R1,#20#20,NEXT ;NEXT ;SJMP SJMP TEST TESTDAY:DAY:MOVMOV R6 R6,#20 #20 DL2: DL2: MOVMOV R7 R7,#7DH#7DHDL1:DL1:NOPNOPNOPNOPDJNZ DJNZ R7 R7,DL1DL1DJNZ DJNZ R6 R6,DL2DL2RETRETTAB1:TAB1:dbdb06H,5BH,4FH,66H,6DH ;06H,5BH,4FH,66H,6DH ;TAB2:TAB2:dbdb78H,79H,38H,38H,3FH ; 78H,79H,38H,38

25、H,3FH ; 并行接口是单片机用得最多的部分,可直接接外部设备。1. 四个并行口均可作为I/O接口使用,但又有各自的特点。P0口是数据线和低八位的地址线,在不接其他外围芯片的情况下才作I/O接口使用,此时由于内部漏极开路,需外接上拉电阻。P1口仅作为通用I/O端口。P2口是高八位的地址线,在不接其他外围芯片的情况下才作I/O接口使用。P3口除作为I/O口外,还有第二功能。2. 当并行口作为输入口使用时,应对所用的口线先写“1”,然后再读入。38n 中断技术的提出中断技术的提出:在CPU和外设交换信息时,存在着快速CPU和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用

26、中断技术。nCPU和外设并行工作,当外设数据准备好(或有某种突发事件发生)时向CPU提出请求,CPU暂停正在执行的程序转而为该外设服务(或处理紧急事件),处理完毕再回到原断点继续执行原程序。n引起中断的原因,中断申请的来源,中断源可以是I/O设备、定时、调试中人为设置。39n当有多个中断源同时向CPU申请中断时,CPU优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的,这种预先安排的响应次序称为。n在中断系统中,高优先级的中断请求能中断正在进行的较低级的中断源处理。n能实现中断功能,并能对中断进行管理的硬件和软件。 401.CPU在不断的指令执行中,中断系统能够检测到随机发生的中断请

27、求。2. 中断的双方(CPU方和中断源方)均能人为控制,中断系统具有允许中断或禁止中断的功能。3.由于中断产生的随机性,不可能在程序中放置调用子程序指令或转移指令,因此中断系统要保证实现正确的转移,以便为该中断源服务。4.中断源有多个,而CPU只有一个,当有多个中断源同时发中断请求时,中断系统应按优先级进行相应。5.中断服务完毕,如何正确的返回到断点处继续执行后续指令。41n8XX51有5个中断源,3个在片内,2个在片外;n有固定的中断入口地址, 当CPU响应中断时,硬件自动形成这些地址,由此进入中断服务程序;n5个中断源有两级中断优先级,可形成中断嵌套;n2个特殊功能寄存器用于中断的控制和设

28、置优先级别;n2个特殊功能寄存器反映中断请求有无情况。42n8XX51的5个中断源的符号、名称、产生条件及中断入口地址如下:符号符号 名名 称称 中中 断断 引引 起起 原原 因因 中断服务程中断服务程序入口序入口INT0INT0外部中断外部中断0 0 P3.2P3.2引脚的引脚的低电平或下降沿低电平或下降沿信号信号 0003H0003HINT1INT1外部中断外部中断1 1P3.3P3.3引脚的引脚的低电平或下降沿低电平或下降沿信号信号 0013H0013HT0T0定时器定时器0 0中断中断 定时计数器定时计数器0 0计数回零计数回零溢出溢出 000BH000BHT1T1定时器定时器1 1中

29、断中断 定时计数器定时计数器1 1计数回零计数回零溢出溢出 001BH001BHTI/RI TI/RI 串行口中断串行口中断 串行通信串行通信完成一帧数据发送完成一帧数据发送或或接接收收引起中断引起中断 0023H0023H43中断的允许和禁止n是否允许中断源发出中断 IE寄存器的各位对应相应的中断源,如果允许该中断源中断则该位置1,禁止中断则该位置0 。n 是否允许CPU响应中断。EA EA - - - - ES ES ET1ET1 EX1 EX1 ET0 ET0 EX0 EX0中断总控中断总控允允/ /禁禁 不不 用用 不不用用 串行口串行口允允/ /禁禁 T1T1允允/ /禁禁 INT1

30、 INT1允允/ /禁禁 T0 T0允允/ /禁禁 INT0INT0允允/ /禁禁 44EA EA - - - - ES ES ET1ET1 EX1 EX1 ET0 ET0 EX0 EX0中断总控中断总控允允/ /禁禁 不不 用用 不不用用 串行口串行口允允/ /禁禁 T1T1允允/ /禁禁 INT1 INT1允允/ /禁禁 T0 T0允允/ /禁禁 INT0INT0允允/ /禁禁 中断总控开关,决定CPU是否响应中断。EA=1,CPU开中断;EA=0, CPU关中断。 串行口中断允许位, ES=1,允许串行口发送/接收中断;ES=0,禁止串行口中断。定时器T1中断允许位,ET1=1,允许T1

31、计数溢出中断;ET1=0,禁止T1中断。45定时器T0中断允许位,ET0=1,允许T0计数溢出中断;ET0=0,禁止T0中断。 外部中断INT1允许位,EX1=1,允许INT1中断;EX1= 0,禁止INT1中断。 外部中断INT0允许位,EX0=1,允许INT0中断;EX0= 0,禁止INT0中断。 EA EA - - - - ES ES ETIETI EX1 EX1 ET0 ET0 EX0 EX0中断总控中断总控允允/ /禁禁 不不 用用 不不用用 串行口串行口允允/ /禁禁 T1T1允允/ /禁禁 INT1 INT1允允/ /禁禁 T0 T0允允/ /禁禁 INT0INT0允允/ /禁禁

32、 4-46INT0方式下降沿/低电平 INT0请求有/无 INT1方式下降沿/ 低电平 INT1 请求有/无 T0 工作启/停 T0 请求有/无 T1工作启/停 T1 请求有/无 IT0 IE0IT1IE1TR0 TF0 TR1 TF1说明:1.IT0和IT1为外中断INT0 和INT1中断触发方式选择,若选下降沿触发则相应位置1;若选低电平触发 ,IT相应位置0。2.某中断源有中断请求(IE0、IE1、TF0、TF1),该中断标志置1;无中断请求,该中断标志置0 。3.TR0 和 TR1 为定时器T0和T1工作启动和停止控制。47说明:4. 串行口的中断标志在特殊功能寄存器SCON的RI 和

33、 TI 位(SCON.0和SCON.1)(2)(2)中断请求标志及外部中断方式选择寄存器中断请求标志及外部中断方式选择寄存器TCONTCON48-PSPSPT1PT1PX1PX1PT0PT0PX0PX0无无用用位位无无用用位位无无用用位位串行口串行口高高/ /低低 T1 T1高高/ /低低INT1INT1高高/ /低低 T0 T0高高/ /低低INT0INT0高高/ /低低n 五个中断源的五个中断源的优先级别优先级别由由IPIP寄存器管理,相应位置寄存器管理,相应位置1 1,则,则该中断源优先级别高,置该中断源优先级别高,置0 0的优先级别低。的优先级别低。n 当某几个中断源在当某几个中断源在

34、IPIP寄存器相应位同为寄存器相应位同为1 1或同为零时,由或同为零时,由内部查询确定优先级,查询的顺序是。内部查询确定优先级,查询的顺序是。n INT0 INT0T0T0 PX1 PX1 PT1 PT1 PSPS49501. 中断处理过程 n中断处理过程分为四个阶段:中断请求,中断响应,中断服务,中断返回。nMCS51系列单片机的中断过程流程如图所示。 51中断请求.中断响应中断服务中断返回Y清 除 中 断 标 志中 断 服 务断点出栈送PC,中断返回 YN允 许 位 EA= 1?CPU 判断优先权 ,响应优先权高的中断断点的PC进栈, 中断服务入口地址送PCNY执 行 指 令中断标志1?(

35、中断请求?) 指令最后一个T周期?N52n中断请求、中断响应过程由硬件完成;n中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。n中断返回是通过执行一条RETI中断返回指令实现。使堆栈中被压入的断点地址送PC,从而返回主程序的断点继续执行主程序。RETI 还有恢复优先级状态触发器的作用,因此不能以RET指令代替“RETI”指令。 53n若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,然而下面三种情况单片机不响应此中断:当前正在执行的那条指令没执行完;当前响应了同级或高级中断;正在操作IE、IP中断控制寄存器或执行RETI指令。n在正常的情况下,从中断请求信号有效

36、开始,到中断得到响应,通常需要38个机器周期。54nCPU响应中断后,在RETI指令前,应清除该中断请求标志,否则会再次中断。n对定时/计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0和TF1。n对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动清除中断请求标志IE0和IE1。n对电平触发的外部中断,CPU在响应中断时硬件不会自动清除中断标志,因此,在CPU响应中断后应立即撤除INT1或INT0的低电平信号。n 对于串行口中断,CPU响应中断后,硬件不会清除中断请求标志TI、RI, 即这些中断标志不会自动清除,必须用软件清除,这是在编写中断服务中应该注

37、意的。55中断源中断源清除标志位方式清除标志位方式T0,T1硬件自动清除边沿触发INT0,INT1硬件自动清除电平触发INT0,INT1软件清除串口通讯软件清除56n用户对中断的控制和管理,实际是对4个与中断有关的寄存器IE、TCON、IP、SCON进行控制或管理。这几个寄存器在单片机复位时是清零的,因此必须根据需要对这几个寄存器的相关位进行预先设置。n在中断程序的编写过程中应注意:(1)开中断总控开关EA,并置位相应中断源的中断允许位。(2)对外部中断/INT0、/INT1应选择中断触发方式。(3)对于多个中断源,预先设定优先级(IP)。(4)编写中断服务程序,注意保护现场和恢复现场,以免中

38、断返回时,原寄存器、累加器中的信息丢失。57n中断服务子程序存放的地址ORG 0000H ORG 0000H AJMP AJMP MAIN MAIN ORG 0003H ORG 0003H ;INT0INT0中断入口中断入口 AJMPAJMP EXINT0 EXINT0 ; 转中断服务程序转中断服务程序ORG 000BH ORG 000BH ;T0T0中断入口中断入口 AJMPAJMP EXT0 EXT0 ; 转中断服务程序转中断服务程序ORG 0013H ORG 0013H ;INT1INT1中断入口中断入口 AJMPAJMP EXINT1 EXINT1 ; 转中断服务程序转中断服务程序OR

39、G 001BH ORG 001BH ;T1T1中断入口中断入口 AJMPAJMP EXT1 EXT1 ; 转中断服务程序转中断服务程序ORG 0023H ORG 0023H ;串口中断入口;串口中断入口 AJMPAJMP EXS1 EXS1 ; 转中断服务程序转中断服务程序 ORG 0030H ORG 0030H ;主程序;主程序MAIN: MAIN: MOV MOV P1 P1,#0FH #0FH ORG XXXXH ;中断服务程序EXINT0: PUSH ACC MOV A,#5H POP ACC RETI EXT0: PUSH ACC POP ACC RETI 58例1:图中P1.4P1

40、.7接有四个发光二极管,P1.0P1.3接有四个开关,初始时刻发光二极管不亮,通过开关产生中断,每中断一次,P1.0P1.3所接的开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮。n消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过INT0向CPU申请中断。59ORG 0000HAJMP MAINORG 0003H ;INT0中断入口AJMP WBI ;转中断服务程序ORG 0050H ;主程序MAIN: MOV P1,#0FH ;灯全灭,低四位输入SETB IT0 ;边沿触发中断SETB EX0 ;允许外中断0中断SETB EA ;开中断开关SJMP $WBI:MOV P1,#0FHMOV A,P1 ;输入开关状态SWAP AMOV P1,A ;输出到P1高4位RETIEND60n执行的现象是: 每次改变四个开关的开、合状态,四个发光二极管维持原来的亮、灭状态不变;仅当来回拔动消抖电路开关后,产生了中断,发光二极管才反映新置的开关状态。 61例2. 89C51的P1口接一个共阴极的数码管,利用消抖开关产生中断请求信号,每来回拔动一 次开关,产生一次中断,用数码管显示中断的次数(最多不超过15次)。626364 ORG 0000H AJMP MAIN ORG 0013H

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论