基于Proteus的51系列单片机设计与仿真
源代码在线查看: 中断系统的应用(二).lst
A51 MACRO ASSEMBLER 謃断系统的觃用__二__ 05/03/2008 19:02:32 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN 中断系统的应用(二).OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 中断系统的应用(二).ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 ORG 0000H ;主程序起始地址设置
0000 0115 2 AJMP START ;跳到主程序入口
0003 3 ORG 0003H ; 中断子程序矢量地址(K1键钮)
0003 0133 4 AJMP INTR0 ;跳到 中断子程序入口
0013 5 ORG 0013H ; 中断矢量地址(K2键钮)
0013 0178 6 AJMP INTR1 ;跳到 中断子程序入口
0015 75A885 7 START: MOV IE,#85H ;设定 和 中断使能
0018 75B804 8 MOV IP,#04H ; 优先设置为最高
001B 758800 9 MOV TCON,#00H ; 和 电平触发
001E 758160 10 MOV SP,#60H
0021 7580FF 11 MOV P0,#0FFH
0024 7590FF 12 MOV P1,#0FFH
0027 7800 13 MOV R0,#00H ;设置K1按键初值
0029 7400 14 MOV A,#00H ;设置D0~D7初始状态
002B F580 15 LP1: MOV P0,A ;将A送至P0口
002D 120088 16 LCALL DELAY
0030 F4 17 CPL A ;D0~D7闪烁
0031 80F8 18 SJMP LP1 ;等待按键按下中断
0033 C0E0 19 INTR0: PUSH Acc ;将A压入堆栈暂时保存
0035 C0D0 20 PUSH PSW ;将PSW压入堆栈暂时保存
0037 D2D3 21 SETB RS0 ;使用工作寄存器组1
0039 08 22 INC R0 ;K1键值加1
003A 7400 23 MOV A,#00H ;判断K1键值的奇偶性
003C 48 24 ORL A, R0
003D 30D011 25 JNB PSW.0,DOUBLE ;PSW的D0=0,即K1键值为偶数,跳转
0040 758000 26 SINGLE:MOV P0,#00H ;D0~D3、 D4~D7交叉点亮程序
0043 740F 27 MOV A,#0FH
0045 7C03 28 MOV R4,#03H ;设定交叉点亮3次
0047 F580 29 SINGLE1:MOV P0,A
0049 120088 30 LCALL DELAY
004C C4 31 SWAP A ;A高、低字节交换
004D DCF8 32 DJNZ R4,SINGLE1
004F 0172 33 AJMP LP5 ;交叉次数到,退出
0051 758000 34 DOUBLE:MOV P0,#00H ;D0~D7进行左移和右移程序
0054 7902 35 MOV R1,#02H ;设定移动2次
0056 7401 36 DOUBLE1:MOV A, #01H
0058 7A08 37 MOV R2,#08H ;左移8个灯
005A D3 38 SETB C
005B F580 39 MOV P0,A
005D 33 40 LP2: RLC A
005E 120088 41 LCALL DELAY
0061 DAFA 42 DJNZ R2,LP2
0063 7401 43 MOV A, #01H
0065 7A08 44 MOV R2,#08H ;右移8个灯
0067 C3 45 CLR C
0068 F580 46 LP3: MOV P0,A
006A 120088 47 LCALL DELAY
006D 13 48 RRC A
006E DAF8 49 DJNZ R2,LP3
0070 D9E4 50 DJNZ R1,DOUBLE1 ;判移动次数是否达到,否,继续
0072 00 51 LP5: NOP ;退出INT0中断子程序
0073 D0D0 52 POP PSW ;取回PSW暂时保存的值
0075 D0E0 53 POP Acc ;取回A暂时保存的值
0077 32 54 RETI ;返回主程序
0078 C0E0 55 INTR1:PUSH Acc ;K2键下时,报警子程序
007A C0D0 56 PUSH PSW
007C C290 57 CLR P1.0 ;报警
007E 120088 58 LCALL DELAY ;延时
A51 MACRO ASSEMBLER 謃断系统的觃用__二__ 05/03/2008 19:02:32 PAGE 2
0081 D290 59 SETB P1.0
0083 D0D0 60 POP PSW
0085 D0E0 61 POP Acc
0087 32 62 RETI ; 中断返回
0088 7F14 63 DELAY:MOV R7,#20 ;延时0.2s子程序
008A 7E14 64 DELA1:MOV R6,#20
008C 7DF8 65 DELA2:MOV R5,#248
008E DDFE 66 DJNZ R5,$
0090 DEFA 67 DJNZ R6,DELA2
0092 DFF6 68 DJNZ R7,DELA1
0094 22 69 RET
70 END
A51 MACRO ASSEMBLER 謃断系统的觃用__二__ 05/03/2008 19:02:32 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
DELA1. . . . . . . C ADDR 008AH A
DELA2. . . . . . . C ADDR 008CH A
DELAY. . . . . . . C ADDR 0088H A
DOUBLE . . . . . . C ADDR 0051H A
DOUBLE1. . . . . . C ADDR 0056H A
IE . . . . . . . . D ADDR 00A8H A
INTR0. . . . . . . C ADDR 0033H A
INTR1. . . . . . . C ADDR 0078H A
IP . . . . . . . . D ADDR 00B8H A
LP1. . . . . . . . C ADDR 002BH A
LP2. . . . . . . . C ADDR 005DH A
LP3. . . . . . . . C ADDR 0068H A
LP5. . . . . . . . C ADDR 0072H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
PSW. . . . . . . . D ADDR 00D0H A
RS0. . . . . . . . B ADDR 00D0H.3 A
SINGLE . . . . . . C ADDR 0040H A
SINGLE1. . . . . . C ADDR 0047H A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0015H A
TCON . . . . . . . D ADDR 0088H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)