wl008.lst

来自「单片机开发资料 基于51单片机的单片机开发板 包括《实验例程」· LST 代码 · 共 375 行 · 第 1/2 页

LST
375
字号
A51 MACRO ASSEMBLER  WL008                                                                11/03/2004 11:08:47 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN wl008.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE wl008.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*                                                                              *
                       3     ;*    File       : wl008.asm                                                    *
                       4     ;*    Date       : 2004-11-5                                                    *
                       5     ;*    Version    : 1.0                                                          *
                       6     ;*                                                                              *
                       7     ;********************************************************************************
                       8     ;*    Descriptoon:                                                              *
                       9     ;*                 X5045读写演示程序                                            *
                      10     ;*                                                                              *
                      11     ;*                                                                              *
                      12     ;*                                                                              *
                      13     ;********************************************************************************
                      14     NAME    WL008
                      15     
                      16     CODE_SEG        SEGMENT CODE
                      17     ;DATA_SEG       SEGMENT DATA
                      18     STACK_SEG       SEGMENT IDATA
                      19     
  0094                20     CS      BIT     P1.4
  0092                21     SI      BIT     P1.2
  0090                22     SCK     BIT     P1.0
  0093                23     SO      BIT     P1.3
                      24     
  0006                25     WREN_INST       EQU     06H             ; 写入使能指令(WREN)
  0004                26     WRDI_INST       EQU     04H             ; 写入禁止指令(WRDI)
  0001                27     WRSR_INST       EQU     01H             ; 写入状态寄存器指令(WRSR)
  0005                28     RDSR_INST       EQU     05H             ; 读取状态寄存器指令(RDSR)
  0002                29     WRITE_INST      EQU     02H             ; 写入存储器指令(WRITE)
  0003                30     READ_INST       EQU     03H             ; 读取存储器指令(READ)
                      31     
  0055                32     BYTE_ADDR       EQU     55H             ; 字节模式写入地址
  0011                33     BYTE_DATA       EQU     11H             ; 字节模式写入数据
  01F0                34     PAGE_ADDR       EQU     1F0H            ; 页写入模式地址
  0022                35     PAGE_DATA1      EQU     22H             ; 页模式写入第一个示
  0033                36     PAGE_DATA2      EQU     33H             ; 页模式写入第二个示
  0044                37     PAGE_DATA3      EQU     44H             ; 页模式写入第雀鍪据
                      38     
  0000                39     STATUS_REG      EQU     00H             ; 要写入到状态寄存器的值
                      40     
  0099                41     MAX_POLL        EQU     99H             ; 最大查询次数
                      42     
                      43     
----                  44             RSEG    STACK_SEG
0000                  45     STACK:          DS      20
                      46     
                      47     ;******************************************************************************************
                      48     ;*      CODE
                      49     ;******************************************************************************************
----                  50             CSEG    AT      0000H           ; 复位向量
0000 020000   F       51             LJMP    MAIN
                      52     
                      53                                                     
                      54     
----                  55             RSEG    CODE_SEG
0000                  56     MAIN:
0000 758100   F       57             MOV     SP,#(STACK-1)           ; 初始化栈指针
0003 C2AF             58             CLR     EA                      ;
A51 MACRO ASSEMBLER  WL008                                                                11/03/2004 11:08:47 PAGE     2

                      59     
0005 D293             60             SETB    SO                              ; 初始化I/O口
0007 C292             61             CLR     SI
0009 C290             62             CLR     SCK
000B D294             63             SETB    CS
000D 120000   F       64             LCALL   WREN_CMD                ; 使能写入
0010 120000   F       65             LCALL   WRSR_CMD                ; 写入00H到状态寄存器
0013 120000   F       66             LCALL   WREN_CMD                ; 使能写入
0016 120000   F       67             LCALL   BYTE_WRITE              ; 写入11H到地址55H (字节写入)
0019 120000   F       68             LCALL   BYTE_READ               ; 读取地址55H处的数据(字节读取)
001C 120000   F       69             LCALL   WREN_CMD                ; 使能写入
001F 120000   F       70             LCALL   PAGE_WRITE              ; 页写入22H/33H/44H到地址1F0/1F1/1F2H
0022 120000   F       71             LCALL   SEQU_READ               ; 连续读取地址1F0/1F1/1F2H
0025 120000   F       72             LCALL   RST_WDOG                ; 清除看门狗
0028 120000   F       73             LCALL   WRDI_CMD                ; 写入禁止指令
                      74             
002B D294             75             SETB    CS
002D                  76     MAIN_LP:
002D 80FE             77             SJMP    MAIN_LP
                      78     ;******************************************************************************************
                      79     ;* WREN_CMD: 写入使能指令
                      80     ;* 传入参数: 无
                      81     ;* 返回值: 无
                      82     ;******************************************************************************************
002F                  83     WREN_CMD:
002F C290             84             CLR     SCK
0031 C294             85             CLR     CS
0033 7406             86             MOV     A, #WREN_INST
0035 120000   F       87             LCALL   OUTBYT                  ; 传送写入使能指令
0038 C290             88             CLR     SCK
003A D294             89             SETB    CS
003C 22               90             RET
                      91     
                      92     ;******************************************************************************************
                      93     ;* WRDI_CMD: 写入禁止指令
                      94     ;* 传入参数: 无
                      95     ;* 返回值: 无
                      96     ;******************************************************************************************
003D                  97     WRDI_CMD:
003D C290             98             CLR     SCK
003F C294             99             CLR     CS
0041 7404            100             MOV     A,#WRDI_INST
0043 120000   F      101             LCALL   OUTBYT                  ; 传送写入禁止指令
0046 C290            102             CLR     SCK
0048 D294            103             SETB    CS
004A 22              104             RET
                     105     
                     106     ;******************************************************************************************
                     107     ;* WRSR_CMD: 写入数据到状态寄存器
                     108     ;* 传入参数: 无
                     109     ;* 返回值: 无
                     110     ;******************************************************************************************
004B                 111     WRSR_CMD:
004B C290            112             CLR     SCK
004D C294            113             CLR     CS
004F 7401            114             MOV     A,#WRSR_INST
0051 120000   F      115             LCALL   OUTBYT                  ; 传送状态寄存器写入指令
0054 7400            116             MOV     A,#STATUS_REG
0056 120000   F      117             LCALL   OUTBYT                  ; 传送要写入的数据
0059 C290            118             CLR     SCK
                     119                                                                
                     120     
005B D294            121             SETB    CS
005D 120000   F      122             LCALL   WIP_POLL                ; 检测写入进度
0060 22              123             RET
                     124     ;******************************************************************************************
A51 MACRO ASSEMBLER  WL008                                                                11/03/2004 11:08:47 PAGE     3

                     125     ;* RDSR_CMD: 读取状态寄存器
                     126     ;* 传入参数: 无
                     127     ;* 返回值: A --- 状态寄存器值
                     128     ;******************************************************************************************
0061                 129     RDSR_CMD:
0061 C290            130             CLR     SCK
0063 C294            131             CLR     CS
0065 7405            132             MOV     A, #RDSR_INST
0067 120000   F      133             LCALL   OUTBYT                  ; 传送状态寄存器读取指令
006A 120000   F      134             LCALL   INBYT                   ; 读取状态寄存器
006D C290            135             CLR     SCK
006F D294            136             SETB    CS
0071 22              137             RET
                     138     ;******************************************************************************************
                     139     ;* BYTE_WRITE: 单一字节写入
                     140     ;* 传入参数: 无
                     141     ;* 返回值: 无
                     142     
                     143     ;******************************************************************************************
0072                 144     BYTE_WRITE:
0072 900055          145             MOV     DPTR,#BYTE_ADDR         ; 设置要写入的地址
0075 C290            146             CLR     SCK
0077 C294            147             CLR     CS
0079 7402            148             MOV     A,#WRITE_INST
007B 8583F0          149             MOV     B,DPH
007E A2F0            150             MOV     C,B.0
0080 92E3            151             MOV     ACC.3,C
0082 120000   F      152             LCALL   OUTBYT                  ; 传送写指令和地址最高位
0085 E582            153             MOV     A,DPL
0087 120000   F      154             LCALL   OUTBYT                  ; 传送地址低字节
008A 7411            155             MOV     A,#BYTE_DATA
008C 120000   F      156             CALL    OUTBYT                  ; 传送要写入的字节数据   
008F C290            157             CLR     SCK
0091 D294            158             SETB    CS
0093 120000   F      159             LCALL   WIP_POLL                ; 检测写入进度
0096 22              160             RET
                     161     
                     162     ;******************************************************************************************
                     163     ;* BYTE_READ: 单一字节读取
                     164     ;* 传入参数: 无
                     165     ;* 返回值: A --- 读取的字节
                     166     
                     167     ;******************************************************************************************
0097                 168     BYTE_READ:
0097 900055          169             MOV     DPTR,#BYTE_ADDR         ; 设置要读取的地址
009A C290            170             CLR     SCK
009C C294            171             CLR     CS
009E 7403            172             MOV     A,#READ_INST
00A0 8583F0          173             MOV     B,DPH
00A3 A2F0            174             MOV     C,B.0
00A5 92E3            175             MOV     ACC.3,C

⌨️ 快捷键说明

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