中断系统的应用(一).asm

来自「基于Proteus的51系列单片机设计与仿真」· 汇编 代码 · 共 53 行

ASM
53
字号
       ORG  00H
       AJMP START
       ORG  03H
       AJMP INT
START: SETB EX0
       SETB IT0
       SETB EA
       MOV  SP,#70H
LP:    MOV  DPTR,#TABLE    ;TABLE表的地址存入DPTR
LP0:   MOV  A,#00H         ;清除累加器
LP1:   MOVC A,@A+DPTR      ;查表
       CJNE A,#1BH,LP2     ;取出的代码不是结束码,则进行下一步操作
       AJMP LP             ;是结束码,则重新进行操作
LP2:   MOV  P0,A           ;将A中的值送P1口,显示
       LCALL DELAY         ;等待1s
       INC  DPTR           ;数据指针加1,指向下1个码
       AJMP LP0            ;返回,取码
INT:   PUSH ACC
       PUSH PSW       
       SETB RS0
       CLR  RS1
       MOV  DPTR,#TABLE1
INTLP1:MOV  A,#00H
       MOVC A,@A+DPTR
       CJNE A,#1BH,INTLP2
       AJMP  INTLP3
INTLP2:MOV  P0,A
       LCALL DELAY
       INC  DPTR
       AJMP INTLP1
INTLP3:POP  PSW
       POP  ACC
       RETI
DELAY: MOV  R7,#10         ;1s延时子程序
DE1:   MOV  R6,#200
DE2:   MOV  R5,#248
       DJNZ R5,$
       DJNZ R6,DE2
       DJNZ R7,DE1
       RET
TABLE: DB  0feH,0fdH,0fbH,0f7H ;正向流水灯
       DB  0efH,0dfH,0bfH,07fH
       DB  0bfH,0dfH,0efH,0f7H ;反向流水灯
       DB  0fbH,0fdH,0feH,0ffH
       DB  0aaH,55H,0aaH,55H  ;隔灯闪烁
       DB  0aaH,55H,0ffH       
       DB  1BH                ;退出码
       RET
TABLE1:DB  0FFH,00H,0FFH,00H,0FFH,00H;闪烁5次
       DB  0FFH,00H,0FFH,00H,1BH
       RET
       END

⌨️ 快捷键说明

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