上一篇 | 下一篇

第十章 外部中断的应用(单片机应用教程之课次二十一,电子圈原创)

发布: 2008-5-27 09:23 | 作者: feller | 来源: 本站原创 | 查看: 104次

第十章 外部中断的应用

    10.1 外部中断的应用

    (1)实训目的

    ◆掌握中断应用技术及编程方法

    ◆掌握多级外部中断编程方法

    (2)功能设计

    用P1.O、P1.1、P1.2口控制3个发光二极管L1~L3的亮灭。设系统晶振为6MHz。

    主程序:(1)程序初始化,对相关寄存器进行设置。(2)由P1.3产生脉冲宽为1s的方波。

    中断程序:/INT0中断使L1~L3点亮10s;/INT1中断使L1~L3交替亮灭1s。

    中断源:开关K0按下申请外部中断0;用P1.3输出脉冲作为外部中断1的中断源。

    (3)背景知识

1)设计中断控制程序时,首先要对与中断控制有关的寄存器进行设置。需要设置的特殊功能寄存器有IE、TCON和IP。设/INT0、/INT1的触发方式为下降沿触发,/INT0为高级中断,/INT1为低级中断。则各相关寄存器的设置如下:

IE:

TCON:

IP:

2)中断入口地址

    /INT0中断入口地址为0003H;/INT1中断入口地址为0013H。

    (4)硬件原理

    硬件电路如图10-1所示。(去除了其他的电路部分,下同)

图10-1 中断实训1

(5)参考程序

      ORG   0000H

      AJMP  MAIN

      ORG   0003H

      AJMP  JINT0

      ORG   0013H

      AJMP  JINT1

MAIN: NOP

      MOV   SP,#40H

      MOV   A,#0FFH

      MOV   P1,A        ;3位发光二级管全灭

      SETB  IT0         ;/INT0边沿触发

      SETB  IT1         ;/INT1边沿触发

      SETB  RX0         ;/INT0为高级中断

      SETB  EX0         ;开放/INT0中断

      SETB  EX1         ;开放/INT1中断

      SETB  EA          ;开放总中断

LOOP: MOV   R3,#0AH     ;延时1s

LOOP0:LCALL YS100       ;调用延时100ms子程序

      DJNZ  R3,LOOP0

      CPL   P1.3

      AJMP  LOOP        ;主程序循环,如果有中断,则转移到中断处理程序

JINT0:NOP               ;如果K0按下,中断响应

      CLR   EA          ;关中断,保护现场

      PUSH  03H         ;保护R3

      PUSH  06H         ;保护R6

      PUSH  07H         ;保护R7

      CLR   P1.0        ;L1~L2全亮

      CLR   P1.1     

      CLR   P1.2

      MOV   P2,#100     ;延时10s

LOOP1:LCALL YS100

      DJNZ  R2,LOOP1

      POP   07H         ;恢复现场

      POP   06H

      POP   03H

      SETB  EA

      RETI

JINT1:NOP

      CLR   EA

      PUSH  03H         ;保护R3

      PUSH  06H         ;保护R6

      PUSH  07H         ;保护R7

CPL   P1.0        ;L1~L2全亮/灭

      CPL   P1.1     

      CPL   P1.2

      POP   07H         ;恢复现场

      POP   06H

      POP   03H

      SETB  EA          ;开中断

      RETI

YS100:MOV   R6,#99      ;延时100ms子程序

L100: MOV   R7,#124

L1:   NOP

      NOP

      DJNZ  R7,L1

      NOP

      NOP

      DJNZ  R6,L100

      NOP

      NOP

      RET

      END

 

10.2 外部中断的扩展

    (1)实训目的

    ◆掌握中断应用技术及编程方法

    ◆掌握外部中断的扩展技术及编程方法

    (2)功能设计

    主程序:P1口用于控制发光二极管L1~L8的交替亮灭

    中断源:串行口扩展外部中断源。无中断时,8位发光二极管按固定时间间隔交替亮灭,有中断时,8位二极管全部点亮。

    (3)背景知识

    1)利用串行口方式0串行接收功能来扩展外部中断源。

     串行口串行接收端为RXD(P3.0),当单片机启动串行接收后,RXD开始逐位接收数据。当接收完8位数时,串行口向CPU发出中断申请,RI=1,CPU响应中断,并执行中断服务程序。

     注意:中断返回前必须通过编程将RI清0。

    串行口控制寄存器SCON的设置如下:

 

    2)串行口中断入口地址:0023H

    3)使用8位并入串出移位寄存器74LS165实现外部中断源的扩展。管脚2为移位脉冲输入端,与单片机串行口同步脉冲输出端TXD相连。管脚15为串行移位控制端,高电平禁止串行输出,低电平允许串行输出。外部中断信号线/EXINT接管脚15,低电平申请中断。

    (4)硬件电路

    硬件电路原理图如图10-2所示。

图10-2 串行口扩展外部中断

    (5)参考程序

      ORG   0000H

      AJMP  MAIN

      ORG   0023H

      AJMP  JSBUF

MAIN: NOP

      MOV   SP,#40H

      MOV   A,#0FFH

      MOV   P1,A

      MOV   SCON,#10H     ;设定串口工作方式0,允许接收

      SETB  ES            ;允许串行口中断

      SETB  EA

LOOP: MOV   A,#0AAH       ;10101010B

      MOV   P1,A          ;点亮L1、L3、L5、L7

      LCALL DLS

      MOV   A,#55H        ;01010101B

      MOV   P1,A          ;点亮L2、L4、L6、L8

      LCALL DLS

      AJMP  LOOP

JSBUF:NOP

      CLR   EA

      PUSH  ACC

      PUSH  00H            ;保护R0

      PUSH  01H            ;保护R1

      CLR   RI

      MOV   A,#0

      MOV   P1,A

      LCALL DLS

      POP   01H

      POP   02H

      POP   ACC

      SETB  EA

      RETI

DLS:  MOV   R1,#0FFH

LOP1: MOV   R0,#0FFH

LOP:  DJNZ  R0,LOP

      DJNZ  R1,LOP1

      RET

      END

    (6)总结与提高

    在本节的实训中,不需要处理串行接收的数据,只需要利用串行口中断信号来扩展一个外部中断源。注意,外部中断源/EXINT维持低电平的时间要大于8个TXD端输出的移位脉冲时间。扩展外部中断源的方法较多,除了本节介绍的方法外,还可以应用优先编码器764LS348、74LS148等进行外部中断源的扩展。

TAG: 单片机 电子 教程 应用 原创 外部中断

字号: | 推荐给好友

 

评分:0

我来说两句