📄 test.lst
字号:
A51 MACRO ASSEMBLER TEST 08/13/2007 23:04:01 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN test.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE test.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ;$include (stc89c52rc.inc)
+1 23 ;==================================
+1 24 ; STC89C52RC.INC
+1 25 ; STC89C52的特殊功能寄存器定义
+1 26 ;==================================
+1 27 ;---------以下定义EEPROM参数---------------------------------------
0001 +1 28 Isp_iap_byte_read equ 1;读等待
0002 +1 29 Isp_iap_program equ 2;
0003 +1 30 Isp_iap_sector_erase equ 3;
2000 +1 31 Data_flash_start_address equ 2000h
0080 +1 32 Enable_isp equ 80h
005A +1 33 Debug_data equ 5ah
+1 34 ;--------------------------------------------------------------------
0082 +1 35 DPL1 EQU 82H
0083 +1 36 DPH1 EQU 83H
008E +1 37 AUXR EQU 8EH
00A2 +1 38 AUXR1 EQU 0A2H
00A9 +1 39 SADDR EQU 0A9H
00AE +1 40 WDTRST EQU 0AEH
00B7 +1 41 IPH EQU 0B7H
00B9 +1 42 SADEN EQU 0B9H
00C0 +1 43 XICON EQU 0C0H
00C8 +1 44 T2CON EQU 0C8H
00C9 +1 45 T2MOD EQU 0C9H
00CA +1 46 RCAP2L EQU 0CAH
00CB +1 47 RCAP2H EQU 0CBH
00CC +1 48 TL2 EQU 0CCH
00CD +1 49 TH2 EQU 0CDH
00E1 +1 50 WDT_CONTR EQU 0E1H
00E2 +1 51 ISP_DATA EQU 0E2H
00E3 +1 52 ISP_ADDRH EQU 0E3H
00E4 +1 53 ISP_ADDRL EQU 0E4H
00E5 +1 54 ISP_CMD EQU 0E5H
00E6 +1 55 ISP_TRIG EQU 0E6H
00E7 +1 56 ISP_CONTR EQU 0E7H
00E8 +1 57 P4 EQU 0E8H
+1 58
A51 MACRO ASSEMBLER TEST 08/13/2007 23:04:01 PAGE 2
+1 59 ;T2CON
00CF +1 60 TF2 BIT T2CON.7
00CE +1 61 EXF2 BIT T2CON.6
00CD +1 62 RCLK BIT T2CON.5
00CC +1 63 TCLK BIT T2CON.4
00CB +1 64 EXEN2 BIT T2CON.3
00CA +1 65 TR2 BIT T2CON.2
00C9 +1 66 CT2 BIT T2CON.1
00C8 +1 67 CPRL2 BIT T2CON.0
+1 68
+1 69 ;AUXR
0001 +1 70 DISALE EQU 01H ;disable/enable ale
0008 +1 71 DISRTO EQU 08H ;disable/enable reset out
0010 +1 72 WDIDLE EQU 10H ;disable/enable wdt in idle mode
0001 +1 73 ALEOFF EQU 01H ;disable/enable ale
0002 +1 74 EXTRAM EQU 02H ;disable/enable extend ram
+1 75 ;AUXR1
0001 +1 76 DPS EQU 01H ;data pointer register select
+1 77
+1 78 ;IE
00AD +1 79 ET2 BIT IE.5
+1 80
+1 81 ;IP
00BD +1 82 PT2 BIT IP.5
+1 83
+1 84 ;IPH
0080 +1 85 PX3H EQU 80H
0040 +1 86 PX2H EQU 40H
0020 +1 87 PT2H EQU 20H
0010 +1 88 PSH EQU 10H
0008 +1 89 PT1H EQU 08H
0004 +1 90 PX1H EQU 04H
0002 +1 91 PT0H EQU 02H
0001 +1 92 PX0H EQU 01H
+1 93
+1 94 ;XICON
00C7 +1 95 PX3 BIT XICON.7
00C6 +1 96 EX3 BIT XICON.6
00C5 +1 97 IE3 BIT XICON.5
00C4 +1 98 IT3 BIT XICON.4
00C3 +1 99 PX2 BIT XICON.3
00C2 +1 100 EX2 BIT XICON.2
00C1 +1 101 IE2 BIT XICON.1
00C0 +1 102 IT2 BIT XICON.0
+1 103
+1 104 ;SCON
009F +1 105 FE BIT SCON.7
+1 106
+1 107 ;ISP_CMD
0004 +1 108 MS2 EQU 04H
0002 +1 109 MS1 EQU 02H
0001 +1 110 MS0 EQU 01H ;1: read 2:write 3:erase
+1 111
+1 112 ;ISP_CONTR
0080 +1 113 IAPEN EQU 80H ;1:enable IAP function
0040 +1 114 SWBS EQU 40H ;1:iap program 0 user program
0020 +1 115 SWRST EQU 20H ;1:software reset
0004 +1 116 WT2 EQU 04H
0002 +1 117 WT1 EQU 02H
0001 +1 118 WT0 EQU 01H ;WT2,WT1,WT0:cpu wait time
+1 119
+1 120 ;WDT_CONTR
0020 +1 121 EN_WDT EQU 20H
0010 +1 122 CLR_WDT EQU 10H
0008 +1 123 IDLE_WDT EQU 08H
0004 +1 124 PS2 EQU 04H
A51 MACRO ASSEMBLER TEST 08/13/2007 23:04:01 PAGE 3
0002 +1 125 PS1 EQU 02H
0001 +1 126 PS0 EQU 01H
+1 127
+1 128 ;T2MOD
0002 +1 129 T2OE EQU 02H ;Timer 2 Output Enable
0001 +1 130 DCEN EQU 01H ;Down Count Enable
+1 131
+1 132
0000 +1 133 read_byte:
0000 75E780 +1 134 mov isp_contr,#10000000b;enable_isp
0003 75E501 +1 135 mov isp_cmd,#01h
0006 8583E3 +1 136 mov isp_addrh,dph
0009 8582E4 +1 137 mov isp_addrl,dpl
000C C2AF +1 138 clr ea
000E 75E646 +1 139 mov isp_trig,#46h
0011 75E6B9 +1 140 mov isp_trig,#0b9h
0014 00 +1 141 nop
0015 E5E2 +1 142 mov a,isp_data
0017 D2AF +1 143 setb ea
0019 120055 +1 144 lcall isp_disable
001C 22 +1 145 ret
001D +1 146 byte_program:
001D 75E780 +1 147 mov isp_contr,#10000000b;enable_isp
0020 75E502 +1 148 mov isp_cmd,#02h
0023 8583E3 +1 149 mov isp_addrh,dph
0026 8582E4 +1 150 mov isp_addrl,dpl
0029 F5E2 +1 151 mov isp_data,a
002B C2AF +1 152 clr ea
002D 75E646 +1 153 mov isp_trig,#46h
0030 75E6B9 +1 154 mov isp_trig,#0b9h
0033 00 +1 155 nop
0034 D2AF +1 156 setb ea
0036 120055 +1 157 lcall isp_disable
0039 22 +1 158 ret
003A +1 159 Sector_erase:
003A 75E780 +1 160 mov isp_contr,#10000000b;
003D 75E503 +1 161 mov isp_cmd,#03h
0040 8583E3 +1 162 mov isp_addrh,dph
0043 8582E4 +1 163 mov isp_addrl,dpl
0046 C2AF +1 164 clr ea
0048 75E646 +1 165 mov isp_trig,#46h
004B 75E6B9 +1 166 mov isp_trig,#0b9h
004E 00 +1 167 nop
004F D2AF +1 168 setb ea
0051 120055 +1 169 lcall isp_disable
0054 22 +1 170 ret
0055 +1 171 isp_disable:
0055 75E700 +1 172 mov isp_contr,#0
0058 75E500 +1 173 mov isp_cmd,#0
005B 75E600 +1 174 mov isp_trig,#0
005E 22 +1 175 ret
+1 176
+1 177 ;==================================
+1 178 ; end of STV89C52RC.INC
179
180 ;$include (sst39vf.inc)
181 ;$include(MACRO.inc)
182
07D0 183 ERRTIMES EQU 2000
184
---- 185 bseg at 00h
00B5 186 csflash bit p3.5
187
188
---- 189 dseg at 23h
0023 190 t0count: ds 1 ;延时单位:1毫秒
A51 MACRO ASSEMBLER TEST 08/13/2007 23:04:01 PAGE 4
0024 191 t0count_1: ds 1
0025 192 t0countx: ds 1
0026 193 t0count_1s: ds 1
0027 194 errtime: ds 2
0029 195 t1s: ds 2
002B 196 sector : ds 1
002C 197 stack: ds 1
---- 198 xseg at 0000h
0000 199 dbuf: ds 100
200
---- 201 cseg at 0000h
0000 8000 202 sjmp start
0002 203 start:
0002 C2AF 204 clr ea
205
0004 759080 206 mov p1,#80h
0007 75812B 207 mov sp,#stack-1
000A 75D000 208 mov psw,#0
000D 787F 209 mov r0,#7fh
000F E4 210 clr a
0010 F6 211 mov @r0,a
0011 D8FD 212 djnz r0,$-1
0013 758920 213 mov tmod,#20h ;只打开串口
0016 758DFA 214 mov th1,#0FAh
0019 758BFA 215 mov tl1,#0FAh
001C 759850 216 mov scon,#50h
001F 758700 217 mov pcon,#00h
0022 D28E 218 setb tr1
0024 D2AF 219 setb ea
0026 758E02 220 mov auxr,#02
221
0029 D2B5 222 setb csflash
002B 7409 223 mov a,#09h
002D 900000 224 mov dptr,#0000h
0030 F0 225 movx @dptr,a
0031 A3 226 inc dptr
0032 7408 227 mov a,#08h
0034 F0 228 movx @dptr,a
229
0035 230 sendtest:
0035 D2B5 231 setb csflash
0037 E4 232 clr a
0038 900000 233 mov dptr,#0000h
003B E0 234 movx a,@dptr
003C F599 235 mov sbuf,a
003E 3099FD 236 jnb ti,$
0041 C299 237 clr ti
238
0043 900001 239 mov dptr,#0001h
0046 E0 240 movx a,@dptr
0047 F599 241 mov sbuf,a
0049 3099FD 242 jnb ti,$
004C C299 243 clr ti
244 ; delay100ms 5
004E 80E5 245 sjmp sendtest
246
0050 759000 247 mov p1,#00h ;FLASH芯片的高位全为低
0053 C2B5 248 clr csflash ;低选中FLASH
0055 1200C5 249 lcall ReadFlashID ;读ID,这里可以读出为080
0058 120115 250 lcall easesectorallchip ;擦除整个芯片
251 ; delay100ms 19
252 ;------------------------------------------------
253 ;写数据过程,写2byte,数据为:88,99
005B 900000 254 mov dptr,#0
005E 7EFF 255 mov r6,#255
0060 7F01 256 mov r7,#1
A51 MACRO ASSEMBLER TEST 08/13/2007 23:04:01 PAGE 5
0062 759000 257 mov p1,#00h
0065 258 W_lp:
0065 C2B5 259 clr csflash
0067 905555 260 mov dptr,#5555h
006A 74AA 261 mov a,#0aah
006C F0 262 movx @dptr,a
006D 902AAA 263 mov dptr,#2aaah
0070 7455 264 mov a,#55h
0072 F0 265 movx @dptr,a
0073 905555 266 mov dptr,#5555h
0076 74A0 267 mov a,#0a0h
268
0078 7488 269 mov a,#88h
007A 900000 270 mov dptr,#00h
007D F0 271 movx @dptr,a ;写1byte数据到FLASH
007E E0 272 movx a,@dptr
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -