?? 1.lst
字號:
A51 MACRO ASSEMBLER 1 DATE 09/03/08 PAGE 1
MS-DOS MACRO ASSEMBLER A51 V4.4
OBJECT MODULE PLACED IN 1.OBJ
ASSEMBLER INVOKED BY: A51 1.ASM DB SB
LOC OBJ LINE SOURCE
1 ;************;
2 ;小燈控制程序;
3 ;************;
4 ;
5 ;************;
6 ;中斷入口程序;
7 ;************;
8 ;
0000 9 ORG 0000H ;程序執行開始地址
0000 02002A 10 LJMP START ;跳至START執行
0003 11 ORG 0003H ;外中斷0中斷入口地址
0003 32 12 RETI ;中斷返回(不開中斷)
000B 13 ORG 000BH ;定時器T0中斷入口地址
000B 32 14 RETI ;中斷返回(不開中斷)
0013 15 ORG 0013H ;外中斷1中斷入口地址
0013 32 16 RETI ;中斷返回(不開中斷)
001B 17 ORG 001BH ;定時器T1中斷入口地址
001B 32 18 RETI ;中斷返回(不開中斷)
0023 19 ORG 0023H ;串行口中斷入口地址
0023 32 20 RETI ;中斷返回(不開中斷)
21 ;
22 ;************;
23 ; 初始化程序 ;
24 ;************;
25 ;
0024 752000 26 CLEAR: MOV 20H,#00H ;20H單元內存清0(閃爍標志清0)
0027 D200 27 SETB 00H ;20H.0位置1(上電時自動執行閃爍功能1)
0029 22 28 RET ;子程序返回
29 ;
30 ;************;
31 ; 主 程 序 ;
32 ;************;
33 ;
002A 1124 34 START:ACALL CLEAR ;調用初始化子程序
002C 120067 35 MAIN: LCALL KEYWORK ;調用鍵掃描子程序
002F 20000B 36 JB 00H,FUN0 ;20H.0位為1時執行FUN0
0032 200115 37 JB 01H,FUN1 ;20H.1位為1時執行FUN1
0035 200220 38 JB 02H,FUN2 ;20H.2位為1時執行FUN2
0038 2003F1 39 JB 03H,MAIN ;備用
003B 012C 40 AJMP MAIN ;返回主程序MAIN
41 ;
42 ;************;
43 ; 功能程序 ;
44 ;************;
45 ;第1種閃爍功能程序
003D 74FE 46 FUN0: MOV A,#0FEH ;累加器賦初值
003F F590 47 FUN00:MOV P1,A ;累加器值送至P1口
0041 1200C0 48 LCALL DL05S ;延時
0044 30E7E5 49 JNB ACC.7,MAIN ;累加器最高位為0時轉MAIN
0047 23 50 RL A ;累加器A中數據循環左移1位
0048 013F 51 AJMP FUN00 ;轉FUN00循環
52 ;
53 ;第2種閃爍功能程序
004A 74FE 54 FUN1:MOV A,#0FEH ;累加器賦初值
A51 MACRO ASSEMBLER 1 DATE 09/03/08 PAGE 2
LOC OBJ LINE SOURCE
004C F590 55 FUN11:MOV P1,A ;累加器值送至P1口
004E 1200C0 56 LCALL DL05S ;延時
0051 60D9 57 JZ MAIN ;A為0轉MAIN
0053 23 58 RL A ;累加器A中數據循環左移1位
0054 5590 59 ANL A,P1 ;A同P1口值相與
0056 014C 60 AJMP FUN11 ;轉FUN11循環
61 ;
62 ; 第3種閃爍功能程序
0058 74AA 63 FUN2:MOV A,#0AAH ;累加器賦初值
005A F590 64 MOV P1,A ;累加器值送至P1口
005C 1200C0 65 LCALL DL05S ;延時
005F F4 66 CPL A ;A中各位取反
0060 F590 67 MOV P1,A ;累加器值送至P1口
0062 1200C0 68 LCALL DL05S ;延時
0065 012C 69 AJMP MAIN ;轉MAIN
70 ;************;
71 ; 掃鍵程序 ;
72 ;************;
73 ;
0067 75B0FF 74 KEYWORK:MOV P3,#0FFH ;置P3口為輸入狀態
006A 30B00A 75 JNB P3.0,KEY0 ;讀P3.0口,若為0轉KEY0
006D 30B116 76 JNB P3.1,KEY1 ;讀P3.1口,若為0轉KEY1
0070 30B222 77 JNB P3.2,KEY2 ;讀P3.2口,若為0轉KEY2
0073 30B32E 78 JNB P3.3,KEY3 ;讀P3.3口,若為0轉KEY3
0076 22 79 RET ;子程序返回
80 ;
81 ;閃爍功能0鍵處理程序
0077 1200B8 82 KEY0:LCALL DL10MS ;延時10毫秒消抖
007A 20B008 83 JB P3.0,OUT0 ;P3.0為1,子程序返回(干擾)
007D D200 84 SETB 00H ;20H.0位置1(執行閃爍功能1標志)
007F C201 85 CLR 01H ;20H.1位清0
0081 C202 86 CLR 02H ;20H.2位清0
0083 C203 87 CLR 03H ;20H.3位清0
0085 22 88 OUT0:RET ;子程序返回
89 ;
90 ; 閃爍功能1鍵處理程序
0086 1200B8 91 KEY1:LCALL DL10MS
0089 20B108 92 JB P3.1,OUT1
008C D201 93 SETB 01H ;20H.1位置1(執行閃爍功能2標志)
008E C200 94 CLR 00H
0090 C202 95 CLR 02H
0092 C203 96 CLR 03H
0094 22 97 OUT1:RET
98 ;
99 ;閃爍功能2鍵處理程序
0095 1200B8 100 KEY2:LCALL DL10MS
0098 20B208 101 JB P3.2,OUT2
009B D202 102 SETB 02H ;20H.2位置1(執行閃爍功能3標志)
009D C201 103 CLR 01H
009F C200 104 CLR 00H
00A1 C203 105 CLR 03H
00A3 22 106 OUT2:RET
107 ;
108 ;閃爍功能(備用)鍵處理程序
00A4 1200B8 109 KEY3:LCALL DL10MS
00A7 20B308 110 JB P3.3,OUT3
00AA D203 111 SETB 03H ;20H.3位置1(執行備用閃爍功能標志)
00AC C201 112 CLR 01H
00AE C202 113 CLR 02H
A51 MACRO ASSEMBLER 1 DATE 09/03/08 PAGE 3
LOC OBJ LINE SOURCE
00B0 C200 114 CLR 00H
00B2 22 115 OUT3:RET
116 ;
117 ;************;
118 ; 延時程序 ;
119 ;************;
120 ;0.5毫秒延時子程序,執行一次時間為513微秒
00B3 7AFF 121 DL512:MOV R2,#0FFH
00B5 DAFE 122 LOOP1: DJNZ R2,LOOP1
00B7 22 123 RET
124 ;
125 ;10毫秒延時子程序(調用20次0.5毫秒延時子程序)
00B8 7B14 126 DL10MS:MOV R3,#14H
00BA 1200B3 127 LOOP2: LCALL DL512
00BD DBFB 128 DJNZ R3,LOOP2
00BF 22 129 RET
130 ;
131 ;延時子程序,改變R4寄存器初值可改變閃爍的快慢(時間為15×25毫秒)
00C0 7C0F 132 DL05S:MOV R4,#0FH
00C2 1200C8 133 LOOP3: LCALL DL25MS
00C5 DCFB 134 DJNZ R4,LOOP3
00C7 22 135 RET
136 ;
137 ;25毫秒延時子程序,用調用掃鍵子程序延時,可快速讀出功能按鍵值
00C8 7DFF 138 DL25MS:MOV R5,#0FFH
00CA 120067 139 LOOP4:LCALL KEYWORK
00CD DDFB 140 DJNZ R5,LOOP4
00CF 22 141 RET
142 END ;程序結束
A51 MACRO ASSEMBLER 1 DATE 09/03/08 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . D ADDR 00E0H A
CLEAR. . . C ADDR 0024H A
DL05S. . . C ADDR 00C0H A
DL10MS . . C ADDR 00B8H A
DL25MS . . C ADDR 00C8H A
DL512. . . C ADDR 00B3H A
FUN0 . . . C ADDR 003DH A
FUN00. . . C ADDR 003FH A
FUN1 . . . C ADDR 004AH A
FUN11. . . C ADDR 004CH A
FUN2 . . . C ADDR 0058H A
KEY0 . . . C ADDR 0077H A
KEY1 . . . C ADDR 0086H A
KEY2 . . . C ADDR 0095H A
KEY3 . . . C ADDR 00A4H A
KEYWORK. . C ADDR 0067H A
LOOP1. . . C ADDR 00B5H A
LOOP2. . . C ADDR 00BAH A
LOOP3. . . C ADDR 00C2H A
LOOP4. . . C ADDR 00CAH A
MAIN . . . C ADDR 002CH A
OUT0 . . . C ADDR 0085H A
OUT1 . . . C ADDR 0094H A
OUT2 . . . C ADDR 00A3H A
OUT3 . . . C ADDR 00B2H A
P1 . . . . D ADDR 0090H A
P3 . . . . D ADDR 00B0H A
START. . . C ADDR 002AH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE, NO ERRORS FOUND
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -