📄 por.lst
字号:
A51 MACRO ASSEMBLER POR 01/22/2006 22:35:54 PAGE 1
MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN .\POR.obj
ASSEMBLER INVOKED BY: F:\kell\C51\BIN\A51.EXE ..\8051danpianji\8051\805101\8051单片机1\PR\POR.ASM SET(SMALL) DEBUG PRINT
(.\POR.lst) OBJECT(.\POR.obj) EP
LOC OBJ LINE SOURCE
1 ;-------------------------------------------
2 ; POR.ASM 8051 ORGAN(MEMORY) IO51
3 ; IO51 PCB COPYRIGHT CMY 2003
4 ; 8051 ASM USE: KEIL
5 ;-------------------------------------------
0080 6 RS EQU P0.0
0081 7 EN EQU P0.1
8
00A7 9 K4 EQU P2.7
00B7 10 WLED EQU P3.7
00B4 11 SPK EQU P3.4
12
00B5 13 RY1 EQU P3.5
00B6 14 RY2 EQU P3.6
15 ;...............................................
0000 16 FKEY EQU 20H.0 ; KEY PRESSED
17
18 ;****************************************
0040 19 MNO EQU 64 ; MAX=64. STORAGE BYTE NO
20
0030 21 MEM EQU 30H ; 30H--6FH MAX=64 STORAGE BYTE
22
0071 23 LO EQU 71H
0072 24 HI EQU 72H
0073 25 TC EQU 73H
0074 26 BUF_KEY EQU 74H ; KEY DATA BUFFER
0075 27 KEY_NO EQU 75H ; KEY NO
0076 28 NO EQU 76H ; PLAY TOTAL NO
0077 29 CO EQU 77H ; VAR
0078 30 X EQU 78H ; LCD X POS
31
32 ;.........RAM ...TO 7FH
33 ;......................................
0000 34 ORG 0H
0000 800B 35 JMP BEGIN
000B 36 ORG 0BH ; TIMER 0
000B 806A 37 JMP T0_INT
38 ;----------------------
000D 39 BEGIN:
000D C2B5 40 CLR RY1
000F C2B6 41 CLR RY2
0011 11D7 42 CALL LED_BL
0013 758900 43 MOV TMOD,#00000000B
0016 75A882 44 MOV IE, #10000010B
45
0019 C281 46 CLR EN ; LCD OFF
001B 514A 47 CALL SET_LCD
48
001D 1162 49 CALL SOUND_ON
50
001F 7C01 51 MOV R4,#1
0021 7B01 52 MOV R3,#1
0023 1135 53 CALL PLAY
54
0025 7C02 55 MOV R4,#2
0027 7B01 56 MOV R3,#1
0029 1135 57 CALL PLAY
A51 MACRO ASSEMBLER POR 01/22/2006 22:35:54 PAGE 2
58
002B 7C03 59 MOV R4,#3
002D 7B01 60 MOV R3,#1
002F 1135 61 CALL PLAY
62
0031 21BB 63 JMP RUN
0033 80FE 64 JMP $
65 ;--------------------------------------
66 ; $INCLUDE (POR1.ASM)
67 ;----------------------------------------------------------------------
68 ; R4:INDEX R3:LENGH
0035 69 PLAY:
0035 1168 70 CALL LOAD_VALUE
0037 1162 71 CALL SOUND_ON
72
73 ;*************************************
74 ; DECIDE PLAY LENGTH.........
75
0039 7D1E 76 PL1:MOV R5,#30 ; 20
003B 11CC 77 CALL DELAY
003D DBFA 78 DJNZ R3, PL1
79
80 ; PAUSE
003F 1165 81 CALL SOUND_OFF
82
0041 7D03 83 MOV R5,#3
0043 11CC 84 CALL DELAY
0045 22 85 RET
86 ;---------------------
0046 87 PLAY_SONG:
0046 757300 88 MOV TC,#0
0049 89 PA0:
0049 90009E 90 MOV DPTR, #SONG
004C E573 91 MOV A,TC
004E 93 92 MOVC A,@A+DPTR
004F FC 93 MOV R4,A
0050 B4FF01 94 CJNE A,#0FFH,PA1
0053 22 95 RET
0054 96 PA1:
0054 9000B5 97 MOV DPTR, #LEN
0057 E573 98 MOV A,TC
0059 93 99 MOVC A,@A+DPTR
005A FB 100 MOV R3,A
005B 1135 101 CALL PLAY
102
005D 0573 103 INC TC
005F 80E8 104 JMP PA0
0061 22 105 RET
106 ;-------------------
0062 107 SOUND_ON:
0062 D28C 108 SETB TR0
0064 22 109 RET
110 ;---------------------
0065 111 SOUND_OFF:
0065 C28C 112 CLR TR0
0067 22 113 RET
114 ;-------------------------------
115 ; LOAD LO HI VALUE FROM TABLE
116 ; R4: INDEX
0068 117 LOAD_VALUE:
0068 900080 118 MOV DPTR,#HI_LIST
006B EC 119 MOV A,R4
006C 93 120 MOVC A,@A+DPTR
006D F572 121 MOV HI,A
122
006F 90008F 123 MOV DPTR,#LO_LIST
A51 MACRO ASSEMBLER POR 01/22/2006 22:35:54 PAGE 3
0072 EC 124 MOV A,R4
0073 93 125 MOVC A,@A+DPTR
0074 F571 126 MOV LO,A
0076 22 127 RET
128 ;----------------------
129 ; USE TIMER MODE 0
130 ;----------------------
0077 131 T0_INT:
0077 85718A 132 MOV TL0,LO
007A 85728C 133 MOV TH0,HI
007D B2B4 134 CPL SPK
007F 32 135 RETI
136 ;--------------------
137 ; timer constant
0080 138 HI_LIST:
0080 00E2E5E8 139 DB 0,226,229,232,233,236,238,240
0084 E9ECEEF0
0088 F1F2F4F4 140 DB 241,242,244,244,246,247,248
008C F6F7F8
008F 141 LO_LIST:
008F 00040D0A 142 DB 0,4,13,10,20,3,8,6
0093 14030806
0097 0217051A 143 DB 2,23,5,26,1,4,3
009B 010403
144 ;-------------------------
145 ; song data :
009E 03050503 146 SONG: DB 3,5,5,3,2,1,2,3,5,3,2,3,5,5,3,2,1,2,3,2,1,1,0FFH
00A2 02010203
00A6 05030203
00AA 05050302
00AE 01020302
00B2 0101FF
00B5 02010102 147 LEN: DB 2,1,1,2,1,1,1,2,1,1,1,2,1,1,2,1,1,1,2,1,1,1,0FFH
00B9 01010102
00BD 01010102
00C1 01010201
00C5 01010201
00C9 0101FF
148 ;-----------------------------------------------------------
149 ; DELAY R5*10 ms
00CC 150 DELAY:
00CC 7E32 151 MOV R6,#50
00CE 7F32 152 D1: MOV R7,#50
00D0 DFFE 153 DJNZ R7,$
00D2 DEFA 154 DJNZ R6,D1
00D4 DDF6 155 DJNZ R5,DELAY
00D6 22 156 RET
157 ;--------------------------
00D7 158 LED_BL:
00D7 7C04 159 MOV R4,#4
00D9 B2B7 160 LE1: CPL WLED
00DB 7D0A 161 MOV R5,#10
00DD 11CC 162 CALL DELAY
00DF DCF8 163 DJNZ R4,LE1
00E1 22 164 RET
165 ;--------------------------------------------------------------------------
166 ; FIND DIG CODE 0--F
167 ; KEY PAD: TYPE A
168 ; F E D C
169 ; B 3 6 9
170 ; A 2 5 8
171 ; 0 1 4 7
00E2 172 TABLE_DIG:
00E2 0F0B0A00 173 DB 0FH, 0BH, 0AH, 00H
00E6 0E030201 174 DB 0EH, 03H, 02H, 01H
00EA 0D060504 175 DB 0DH, 06H, 05H, 04H
A51 MACRO ASSEMBLER POR 01/22/2006 22:35:54 PAGE 4
00EE 0C090807 176 DB 0CH, 09H, 08H, 07H
177 ;---------------------------------------------------------
178 ; USE P2
179 ; R0 : BUF PT NO USE
180 ; R1 : COUNT 1
181 ; R2 : COUNT 2
182 ; R3 : SCAN SIGNAL
183 ; R4 : COUNT KEY_NO
184 ;------------------
00F2 185 SCAN:
00F2 7BFE 186 MOV R3, #0FEH ; LOAD INITIAL SCAN SIGNAL
00F4 7C00 187 MOV R4, #0 ; KEY NO COUNT
00F6 7904 188 MOV R1, #4 ; COUNT TIMES
00F8 C2D5 189 CLR PSW.5 ; NO KEY ON
190 ;......................................
00FA 191 L1:
192 ; SEND OUT SCAN SIGNAL VIA P2.0~P2.3
00FA EB 193 MOV A, R3
00FB F5A0 194 MOV P2,A
195 ;..................................
196 ; DELAY A WHILE .......
00FD 7D01 197 MOV R5, #1
00FF 11CC 198 CALL DELAY
199
200 ; READ I/P DATA FROM P2.4~P2.7
0101 E5A0 201 MOV A,P2
0103 54F0 202 ANL A,#0F0H ; GET HIGH 4 BIT EX:1110XXXX
203
204 ; CHECK KEY PRESSED ?
0105 7A04 205 MOV R2,#4 ; COUNT 2
206 ;.................................
0107 207 L2:
0107 20E404 208 JB ACC.4, N1 ; NO KEYED
010A 8C75 209 MOV KEY_NO, R4
010C D2D5 210 SETB PSW.5 ; KEY PRESS......
010E 211 N1:
010E 0C 212 INC R4 ; KEY NO ++
010F 03 213 RR A ; CHECK KEY NO
0110 DAF5 214 DJNZ R2, L2
215
216 ; CHANGE SCAN CODE EX:XXXX1101
0112 EB 217 MOV A, R3
0113 23 218 RL A
0114 FB 219 MOV R3, A
0115 D9E3 220 DJNZ R1, L1
221
222 ;....................................
223 ; SET FKEY
0117 224 BACK:
0117 30D503 225 JNB PSW.5, NO_KEY
011A D200 226 SETB FKEY
011C 22 227 RET
011D 228 NO_KEY:
011D C200 229 CLR FKEY ; NO KEY PRESSED.........
011F 22 230 RET
231 ;---------------------------------------------------------
232 ; SCAN KEY ON AND OFF THEN PASS KEY_NO
0120 233 SCAN_KEY:
0120 C200 234 CLR FKEY
0122 11F2 235 CALL SCAN
236 ; IF(KEY_ON) WAIT KEY_OFF
0124 200001 237 JB FKEY, WAIT_OFF
238 ; NO KEY ON RETURN....
0127 22 239 RET
0128 240 WAIT_OFF:
0128 11F2 241 CALL SCAN
A51 MACRO ASSEMBLER POR 01/22/2006 22:35:54 PAGE 5
012A 2000FB 242 JB FKEY, WAIT_OFF
012D 22 243 RET
244 ;----------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -