⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 up51s011.lst

📁 X5045读写演示程序 先用字节写入: 写入11H到地址55H (字节写入) 读取55H
💻 LST
📖 第 1 页 / 共 2 页
字号:
00BC 900055          199             MOV     DPTR,#BYTE_ADDR         ; 设置要读取的地址
00BF C293            200             CLR     SCK
00C1 C292            201             CLR     CS
00C3 7403            202             MOV     A,#READ_INST
00C5 8583F0          203             MOV     B,DPH
00C8 A2F0            204             MOV     C,B.0
00CA 92E3            205             MOV     ACC.3,C
00CC 120000   F      206             LCALL   OUTBYT                  ; 传送读取指令和地址最高位
00CF E582            207             MOV     A,      DPL
00D1 120000   F      208             LCALL   OUTBYT                  ; 传送地址低字节
00D4 120000   F      209             LCALL   INBYT                   ; 读取字节
00D7 C293            210             CLR     SCK
                     211     
00D9 D292            212             SETB    CS
00DB 22              213             RET
                     214     ;******************************************************************************************
                     215     ;* PAGE_WRITE: 页写入
                     216     ;* 传入参数: 无
                     217     ;* 返回值: 无
                     218     
                     219     ;******************************************************************************************
00DC                 220     PAGE_WRITE:
00DC 9001F0          221             MOV     DPTR,#PAGE_ADDR         ; 设置第一个字节的地址
00DF C293            222             CLR     SCK
00E1 C292            223             CLR     CS
00E3 7402            224             MOV     A,#WRITE_INST
00E5 8583F0          225             MOV     B,DPH
00E8 A2F0            226             MOV     C,B.0
00EA 92E3            227             MOV     ACC.3,C
00EC 120000   F      228             LCALL   OUTBYT                  ; 传送写入指令和地址最高位
00EF E582            229             MOV     A,DPL
00F1 120000   F      230             LCALL   OUTBYT                  ; 传送地址低字节
00F4 7422            231             MOV     A,#PAGE_DATA1
00F6 120000   F      232             LCALL   OUTBYT                  ; 传送第一个字节数据
00F9 7433            233             MOV     A,#PAGE_DATA2
00FB 120000   F      234             LCALL   OUTBYT                  ; 传送第二个字节数据
00FE 7444            235             MOV     A,#PAGE_DATA3
0100 120000   F      236             LCALL   OUTBYT                  ; 传送第三个字节数据
0103 C293            237             CLR     SCK
0105 D292            238             SETB    CS
0107 120000   F      239             LCALL   WIP_POLL                ; 检测写入进度
010A 22              240             RET
                     241     
                     242     ;******************************************************************************************
                     243     ;* SEQU_READ: 连续读取3个字节
                     244     ;* 传入参数: 无
                     245     ;* 返回值: A --- 最后一次读取的字节
                     246     ;******************************************************************************************
010B                 247     SEQU_READ:
010B 9001F0          248             MOV     DPTR,#PAGE_ADDR         ; 设置第一个字节的地址
010E C293            249             CLR     SCK                     ;
0110 C292            250             CLR     CS                      ;
0112 7403            251             MOV     A,#READ_INST
0114 8583F0          252             MOV     B,DPH
0117 A2F0            253             MOV     C,B.0
0119 92E3            254             MOV     ACC.3,C
011B 120000   F      255             LCALL   OUTBYT                  ; 传送读取指令和地址最高位
011E E582            256             MOV     A,DPL
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     5

0120 120000   F      257             LCALL   OUTBYT                  ; 传送地址低字节
0123 120000   F      258             LCALL   INBYT                   ; 读取第一个字节
0126 120000   F      259             LCALL   INBYT                   ; 读取第二个字节
0129 120000   F      260             LCALL   INBYT                   ; 读取第三个字节       
012C C293            261             CLR     SCK
012E D292            262             SETB    CS
0130 22              263             RET
                     264     
                     265     ;******************************************************************************************
                     266     ;* RST_WDOG: 复位看门狗定时器
                     267     ;* 传入参数: 无
                     268     ;* 返回值: 无
                     269     ;******************************************************************************************
0131                 270     RST_WDOG:
0131 C292            271             CLR     CS   
0133 00              272             NOP
0134 00              273             NOP                                                        
0135 D292            274             SETB    CS               
0137 22              275             RET
                     276     
                     277     ;******************************************************************************************
                     278     ;* WIP_POLL: 写入进度查询
                     279     ;* 传入参数: 无
                     280     ;* 返回值: 无
                     281     ;******************************************************************************************
0138                 282     WIP_POLL:
0138 7999            283             MOV     R1, #MAX_POLL           ; 设置最大的查询次数
013A                 284     WIP_POLL1:
013A 120000   F      285             LCALL   RDSR_CMD                ; 读取状态寄存器
013D 30E002          286             JNB     ACC.0,WIP_POLL2         ; 如果WIP位为'0', 则写入周期完成, 返回
0140 D9F8            287             DJNZ    R1,WIP_POLL1            ; 如果WIP位为'1'并且未达到最大查询次? 则继续查询
                     288     
0142                 289     WIP_POLL2:
0142 22              290             RET
                     291     
                     292     ;******************************************************************************************
                     293     ;* OUTBYT: 传送字节示莸紼EPROM, 高位在前
                     294     ;* 传入参数: A --- 要传送的字节
                     295     ;* 返回值: 无
                     296     ;******************************************************************************************
0143                 297     OUTBYT:
0143 7808            298             MOV     R0,#08                  ; 设置数据位数
0145                 299     OUTBYT1:
0145 C293            300             CLR     SCK                     ;
0147 33              301             RLC     A                       ;
0148 9294            302             MOV     SI,C                    ; 传送一个位到SI
014A 00              303             NOP
014B D293            304             SETB    SCK                     ;
014D D8F6            305             DJNZ    R0,OUTBYT1              ; 判断是否传完
014F C294            306             CLR     SI                      ;
0151 22              307             RET
                     308     
                     309     ;******************************************************************************************
                     310     ;* INBYT: 从EEPROM接收数据 高位在前
                     311     ;* 传入参数: 无
                     312     ;* 返回值: A --- 接收到的字节
                     313     ;******************************************************************************************
0152                 314     INBYT:
0152 7808            315             MOV     R0,#08                  ; 设置数据位数
0154                 316     INBYT1:
0154 D293            317             SETB    SCK                     ;
0156 00              318             NOP
0157 C293            319             CLR     SCK                     ;
0159 00              320             NOP
015A A295            321             MOV     C,SO                    ; 接收一个位保存到C
015C 33              322             RLC     A                       ;
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     6

015D D8F5            323             DJNZ    R0,INBYT1               ; 判断是否接收完
015F 22              324             RET
                     325     ;******************************************************************************************
                     326     ;* DELAY: 延时程序
                     327     ;* 传入参数: 无
                     328     ;* 返回值:  无
                     329     ;******************************************************************************************
0160                 330     DELAY:                                  ; 延时子程序
0160 78FF            331             MOV     R0,#0FFH
0162 79FF            332             MOV     R1,#0FFH
0164                 333     DLY_LP:
0164 00              334             NOP
0165 00              335             NOP
0166 D8FC            336             DJNZ    R0,DLY_LP
0168 78FF            337             MOV     R0,#0FFH
016A D9F8            338             DJNZ    R1,DLY_LP 
016C 22              339             RET
                     340                     
                     341     
                     342             END
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     7

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   00BCH   R   SEG=CODE_SEG
BYTE_WRITE . . . .  C ADDR   0097H   R   SEG=CODE_SEG
CODE_SEG . . . . .  C SEG    016DH       REL=UNIT
CS . . . . . . . .  B ADDR   0090H.2 A   
DELAY. . . . . . .  C ADDR   0160H   R   SEG=CODE_SEG
DLY_LP . . . . . .  C ADDR   0164H   R   SEG=CODE_SEG
DPH. . . . . . . .  D ADDR   0083H   A   
DPL. . . . . . . .  D ADDR   0082H   A   
EA . . . . . . . .  B ADDR   00A8H.7 A   
INBYT. . . . . . .  C ADDR   0152H   R   SEG=CODE_SEG
INBYT1 . . . . . .  C ADDR   0154H   R   SEG=CODE_SEG
MAIN . . . . . . .  C ADDR   0000H   R   SEG=CODE_SEG
MAIN_LP. . . . . .  C ADDR   0052H   R   SEG=CODE_SEG
MAX_POLL . . . . .  N NUMB   0099H   A   
OUTBYT . . . . . .  C ADDR   0143H   R   SEG=CODE_SEG
OUTBYT1. . . . . .  C ADDR   0145H   R   SEG=CODE_SEG
P0 . . . . . . . .  D ADDR   0080H   A   
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   00DCH   R   SEG=CODE_SEG
RDSR_CMD . . . . .  C ADDR   0086H   R   SEG=CODE_SEG
RDSR_INST. . . . .  N NUMB   0005H   A   
READ_INST. . . . .  N NUMB   0003H   A   
RST_WDOG . . . . .  C ADDR   0131H   R   SEG=CODE_SEG
SCK. . . . . . . .  B ADDR   0090H.3 A   
SEQU_READ. . . . .  C ADDR   010BH   R   SEG=CODE_SEG
SI . . . . . . . .  B ADDR   0090H.4 A   
SO . . . . . . . .  B ADDR   0090H.5 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   
UP51S011 . . . . .  N NUMB   -----       
WIP_POLL . . . . .  C ADDR   0138H   R   SEG=CODE_SEG
WIP_POLL1. . . . .  C ADDR   013AH   R   SEG=CODE_SEG
WIP_POLL2. . . . .  C ADDR   0142H   R   SEG=CODE_SEG
WRDI_CMD . . . . .  C ADDR   0062H   R   SEG=CODE_SEG
WRDI_INST. . . . .  N NUMB   0004H   A   
WREN_CMD . . . . .  C ADDR   0054H   R   SEG=CODE_SEG
WREN_INST. . . . .  N NUMB   0006H   A   
WRITE_INST . . . .  N NUMB   0002H   A   
WRSR_CMD . . . . .  C ADDR   0070H   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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -