⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 中断系统的应用(二).asm

📁 基于Proteus的51系列单片机设计与仿真
💻 ASM
字号:
       ORG   0000H         ;主程序起始地址设置
       AJMP  START         ;跳到主程序入口
       ORG   0003H         ; 中断子程序矢量地址(K1键钮)
       AJMP  INTR0         ;跳到 中断子程序入口
       ORG   0013H         ; 中断矢量地址(K2键钮)
       AJMP  INTR1         ;跳到 中断子程序入口
START: MOV   IE,#85H       ;设定 和 中断使能
       MOV   IP,#04H       ; 优先设置为最高
       MOV   TCON,#00H     ; 和 电平触发
       MOV   SP,#60H
       MOV   P0,#0FFH
       MOV   P1,#0FFH
       MOV   R0,#00H       ;设置K1按键初值
       MOV   A,#00H        ;设置D0~D7初始状态
LP1:   MOV   P0,A          ;将A送至P0口
       LCALL  DELAY
       CPL   A              ;D0~D7闪烁
       SJMP  LP1           ;等待按键按下中断
INTR0: PUSH  Acc           ;将A压入堆栈暂时保存
       PUSH  PSW           ;将PSW压入堆栈暂时保存
       SETB  RS0           ;使用工作寄存器组1
       INC   R0             ;K1键值加1
       MOV   A,#00H        ;判断K1键值的奇偶性
       ORL   A, R0
       JNB   PSW.0,DOUBLE ;PSW的D0=0,即K1键值为偶数,跳转
SINGLE:MOV   P0,#00H       ;D0~D3、 D4~D7交叉点亮程序
       MOV   A,#0FH
       MOV   R4,#03H       ;设定交叉点亮3次
SINGLE1:MOV  P0,A
       LCALL DELAY
       SWAP  A             ;A高、低字节交换
       DJNZ  R4,SINGLE1
       AJMP  LP5           ;交叉次数到,退出
DOUBLE:MOV   P0,#00H       ;D0~D7进行左移和右移程序
       MOV   R1,#02H       ;设定移动2次
DOUBLE1:MOV  A, #01H
      MOV   R2,#08H       ;左移8个灯
      SETB  C
      MOV   P0,A
LP2:  RLC   A
      LCALL  DELAY
      DJNZ  R2,LP2
      MOV   A, #01H
      MOV   R2,#08H       ;右移8个灯
      CLR   C
LP3:  MOV   P0,A
      LCALL  DELAY
      RRC   A
      DJNZ  R2,LP3
      DJNZ  R1,DOUBLE1    ;判移动次数是否达到,否,继续
LP5:  NOP                   ;退出INT0中断子程序
      POP   PSW            ;取回PSW暂时保存的值
      POP   Acc            ;取回A暂时保存的值
      RETI                 ;返回主程序
INTR1:PUSH  Acc           ;K2键下时,报警子程序
      PUSH  PSW
      CLR   P1.0          ;报警
      LCALL DELAY         ;延时
      SETB  P1.0
      POP   PSW
      POP   Acc
      RETI                  ; 中断返回
DELAY:MOV  R7,#20          ;延时0.2s子程序
DELA1:MOV  R6,#20
DELA2:MOV  R5,#248
      DJNZ R5,$
      DJNZ R6,DELA2
      DJNZ R7,DELA1
      RET
      END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -