wl008.lst

来自「周立功的51单片机试验例程,我当年就是靠这个学会单片机的」· LST 代码 · 共 378 行 · 第 1/2 页

LST
378
字号
00A3 A2F0            177             MOV     C,B.0
00A5 92E3            178             MOV     ACC.3,C
00A7 120000   F      179             LCALL   OUTBYT                  ; 传送读取指令和地址最高位
00AA E582            180             MOV     A,      DPL
00AC 120000   F      181             LCALL   OUTBYT                  ; 传送地址低字节
00AF 120000   F      182             LCALL   INBYT                   ; 读取字节
00B2 C290            183             CLR     SCK
                     184     
00B4 D294            185             SETB    CS
00B6 22              186             RET
                     187     ;******************************************************************************************
                     188     ;* PAGE_WRITE: 页写入
                     189     ;* 传入参数: 无
                     190     ;* 返回值: 无
A51 MACRO ASSEMBLER  WL008                                                                02/17/2004 12:04:13 PAGE     4

                     191     
                     192     ;******************************************************************************************
00B7                 193     PAGE_WRITE:
00B7 9001F0          194             MOV     DPTR,#PAGE_ADDR         ; 设置第一个字节的地址
00BA C290            195             CLR     SCK
00BC C294            196             CLR     CS
00BE 7402            197             MOV     A,#WRITE_INST
00C0 8583F0          198             MOV     B,DPH
00C3 A2F0            199             MOV     C,B.0
00C5 92E3            200             MOV     ACC.3,C
00C7 120000   F      201             LCALL   OUTBYT                  ; 传送写入指令和地址最高位
00CA E582            202             MOV     A,DPL
00CC 120000   F      203             LCALL   OUTBYT                  ; 传送地址低字节
00CF 7422            204             MOV     A,#PAGE_DATA1
00D1 120000   F      205             LCALL   OUTBYT                  ; 传送第一个字节数据
00D4 7433            206             MOV     A,#PAGE_DATA2
00D6 120000   F      207             LCALL   OUTBYT                  ; 传送第二个字节数据
00D9 7444            208             MOV     A,#PAGE_DATA3
00DB 120000   F      209             LCALL   OUTBYT                  ; 传送第三个字节数据
00DE C290            210             CLR     SCK
00E0 D294            211             SETB    CS
00E2 120000   F      212             LCALL   WIP_POLL                ; 检测写入进度
00E5 22              213             RET
                     214     
                     215     ;******************************************************************************************
                     216     ;* SEQU_READ: 连续读取3个字节
                     217     ;* 传入参数: 无
                     218     ;* 返回值: A --- 最后一次读取的字节
                     219     ;******************************************************************************************
00E6                 220     SEQU_READ:
00E6 9001F0          221             MOV     DPTR,#PAGE_ADDR         ; 设置第一个字节的地址
00E9 C290            222             CLR     SCK                     ;
00EB C294            223             CLR     CS                      ;
00ED 7403            224             MOV     A,#READ_INST
00EF 8583F0          225             MOV     B,DPH
00F2 A2F0            226             MOV     C,B.0
00F4 92E3            227             MOV     ACC.3,C
00F6 120000   F      228             LCALL   OUTBYT                  ; 传送读取指令和地址最高位
00F9 E582            229             MOV     A,DPL
00FB 120000   F      230             LCALL   OUTBYT                  ; 传送地址低字节
00FE 120000   F      231             LCALL   INBYT                   ; 读取第一个字节
0101 120000   F      232             LCALL   INBYT                   ; 读取第二个字节
0104 120000   F      233             LCALL   INBYT                   ; 读取第三个字节       
0107 C290            234             CLR     SCK
0109 D294            235             SETB    CS
010B 22              236             RET
                     237     
                     238     ;******************************************************************************************
                     239     ;* RST_WDOG: 复位看门狗定时器
                     240     ;* 传入参数: 无
                     241     ;* 返回值: 无
                     242     ;******************************************************************************************
010C                 243     RST_WDOG:
010C C294            244             CLR     CS   
010E 00              245             NOP
010F 00              246             NOP                                                        
0110 D294            247             SETB    CS               
0112 22              248             RET
                     249     
                     250     ;******************************************************************************************
                     251     ;* WIP_POLL: 写入进度查询
                     252     ;* 传入参数: 无
                     253     ;* 返回值: 无
                     254     ;******************************************************************************************
0113                 255     WIP_POLL:
0113 7999            256             MOV     R1, #MAX_POLL           ; 设置最大的查询次数
A51 MACRO ASSEMBLER  WL008                                                                02/17/2004 12:04:13 PAGE     5

0115                 257     WIP_POLL1:
0115 120000   F      258             LCALL   RDSR_CMD                ; 读取状态寄存器
0118 30E002          259             JNB     ACC.0,WIP_POLL2         ; 如果WIP位为'0', 则写入周期完成, 返回
011B D9F8            260             DJNZ    R1,WIP_POLL1            ; 如果WIP位为'1'并且未达到最大查询次? 则继续查询
                     261     
011D                 262     WIP_POLL2:
011D 22              263             RET
                     264     
                     265     ;******************************************************************************************
                     266     ;* OUTBYT: 传送字节示莸紼EPROM, 高位在前
                     267     ;* 传入参数: A --- 要传送的字节
                     268     ;* 返回值: 无
                     269     ;******************************************************************************************
011E                 270     OUTBYT:
011E 7808            271             MOV     R0,#08                  ; 设置数据位数
0120                 272     OUTBYT1:
0120 C290            273             CLR     SCK                     ;
0122 33              274             RLC     A                       ;
0123 9292            275             MOV     SI,C                    ; 传送一个位到SI
0125 00              276             NOP
0126 D290            277             SETB    SCK                     ;
0128 D8F6            278             DJNZ    R0,OUTBYT1              ; 判断是否传完
012A C292            279             CLR     SI                      ;
012C 22              280             RET
                     281     
                     282     ;******************************************************************************************
                     283     ;* INBYT: 从EEPROM接收数据 高位在前
                     284     ;* 传入参数: 无
                     285     ;* 返回值: A --- 接收到的字节
                     286     ;******************************************************************************************
012D                 287     INBYT:
012D 7808            288             MOV     R0,#08                  ; 设置数据位数
012F                 289     INBYT1:
012F D290            290             SETB    SCK                     ;
0131 00              291             NOP
0132 C290            292             CLR     SCK                     ;
0134 00              293             NOP
0135 A293            294             MOV     C,SO                    ; 接收一个位保存到C
0137 33              295             RLC     A                       ;
0138 D8F5            296             DJNZ    R0,INBYT1               ; 判断是否接收完
013A 22              297             RET
                     298             
                     299             END
A51 MACRO ASSEMBLER  WL008                                                                02/17/2004 12:04:13 PAGE     6

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
BYTE_ADDR. . . . .  N NUMB   0055H   A   
BYTE_DATA. . . . .  N NUMB   0011H   A   
BYTE_READ. . . . .  C ADDR   0097H   R   SEG=CODE_SEG
BYTE_WRITE . . . .  C ADDR   0072H   R   SEG=CODE_SEG
CODE_SEG . . . . .  C SEG    013BH       REL=UNIT
CS . . . . . . . .  B ADDR   0090H.4 A   
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
INBYT. . . . . . .  C ADDR   012DH   R   SEG=CODE_SEG
INBYT1 . . . . . .  C ADDR   012FH   R   SEG=CODE_SEG
MAIN . . . . . . .  C ADDR   0000H   R   SEG=CODE_SEG
MAIN_LP. . . . . .  C ADDR   002DH   R   SEG=CODE_SEG
MAX_POLL . . . . .  N NUMB   0099H   A   
OUTBYT . . . . . .  C ADDR   011EH   R   SEG=CODE_SEG
OUTBYT1. . . . . .  C ADDR   0120H   R   SEG=CODE_SEG
P1 . . . . . . . .  D ADDR   0090H   A   
PAGE_ADDR. . . . .  N NUMB   01F0H   A   
PAGE_DATA1 . . . .  N NUMB   0022H   A   
PAGE_DATA2 . . . .  N NUMB   0033H   A   
PAGE_DATA3 . . . .  N NUMB   0044H   A   
PAGE_WRITE . . . .  C ADDR   00B7H   R   SEG=CODE_SEG
RDSR_CMD . . . . .  C ADDR   0061H   R   SEG=CODE_SEG
RDSR_INST. . . . .  N NUMB   0005H   A   
READ_INST. . . . .  N NUMB   0003H   A   
RST_WDOG . . . . .  C ADDR   010CH   R   SEG=CODE_SEG
SCK. . . . . . . .  B ADDR   0090H.0 A   
SEQU_READ. . . . .  C ADDR   00E6H   R   SEG=CODE_SEG
SI . . . . . . . .  B ADDR   0090H.2 A   
SO . . . . . . . .  B ADDR   0090H.3 A   
SP . . . . . . . .  D ADDR   0081H   A   
STACK. . . . . . .  I ADDR   0000H   R   SEG=STACK_SEG
STACK_SEG. . . . .  I SEG    0014H       REL=UNIT
STATUS_REG . . . .  N NUMB   0000H   A   
WIP_POLL . . . . .  C ADDR   0113H   R   SEG=CODE_SEG
WIP_POLL1. . . . .  C ADDR   0115H   R   SEG=CODE_SEG
WIP_POLL2. . . . .  C ADDR   011DH   R   SEG=CODE_SEG
WL008. . . . . . .  N NUMB   -----       
WRDI_CMD . . . . .  C ADDR   003DH   R   SEG=CODE_SEG
WRDI_INST. . . . .  N NUMB   0004H   A   
WREN_CMD . . . . .  C ADDR   002FH   R   SEG=CODE_SEG
WREN_INST. . . . .  N NUMB   0006H   A   
WRITE_INST . . . .  N NUMB   0002H   A   
WRSR_CMD . . . . .  C ADDR   004BH   R   SEG=CODE_SEG
WRSR_INST. . . . .  N NUMB   0001H   A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

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