wl007.lst

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

LST
407
字号
A51 MACRO ASSEMBLER  WL007                                                                11/03/2004 11:06:31 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ; /*******************************************************************************
                       2     ; *                                                                              *
                       3     ; *    File       : wl007.asm                                                    *
                       4     ; *    Date       : 2004-11-5                                                    *
                       5     ; *    Version    : 1.0                                                          *
                       6     ; *                                                                              *
                       7     ; ********************************************************************************
                       8     ; *    Descriptoon:                                                              *
                       9     ; *                读写AT24C02演示程序                                           *
                      10     ; *                                                                              *
                      11     ; *                                                                              *
                      12     ; *                                                                              *
                      13     ; *******************************************************************************/
                      14     
                      15     NAME    WL007
                      16     
  00A1                17     OP_READ         EQU     0xa1            ; 器件地址以及读取操作
  00A0                18     OP_WRITE        EQU     0xa0            ; 器件地址以及写入操作
  007F                19     MAX_ADDR        EQU     0x7f            ; AT24C01最大地址
                      20     
                      21     CODE_SEG        SEGMENT CODE 
                      22     DATA_SEG        SEGMENT DATA
                      23     STACK_SEG       SEGMENT IDATA
                      24     
                      25     
----                  26             RSEG  DATA_SEG
0000                  27     ADDR:   DS      1
0001                  28     TMP2:   DS      1
0002                  29     TMP3:   DS      1
                      30     
----                  31             RSEG    STACK_SEG
0000                  32     STACK:          DS      20
                      33     
  0090                34     SCL     BIT     P1.0
  0091                35     SDA     BIT     P1.1
                      36     
                      37     ;===============================================================================
----                  38     CSEG    AT      0000H                   ; 复位向量
0000 020000   F       39             JMP     MAIN
                      40     
                      41     
                      42     
                      43     ;===============================================================================
----                  44             RSEG  CODE_SEG
0000                  45     MAIN:
                      46     ; 主程序开始
                      47     
                      48             USING   0
                      49             
0000 758100   F       50             MOV     SP, #(STACK-1)          ; 设置堆栈
                      51             
0003 D291             52             SETB    SDA
0005 D290             53             SETB    SCL
                      54     
0007 7F5A             55             MOV     R7,#05AH                ; 全部填充0xff
0009 120000   F       56             LCALL   FILL_BYTE
                      57     
000C E4               58             CLR     A
A51 MACRO ASSEMBLER  WL007                                                                11/03/2004 11:06:31 PAGE     2

000D F500     F       59             MOV     ADDR,A
000F                  60     MAIN_LP1:                               ; 将表格DIS_CODE内数据写入到EEPROM
                      61     
000F E500     F       62             MOV     A,ADDR
0011 900000   F       63             MOV     DPTR,#DIS_CODE
0014 93               64             MOVC    A,@A+DPTR               ; 查表
                      65             
0015 FD               66             MOV     R5,A                    ; 数据到R5      
0016 AF00     F       67             MOV     R7,ADDR                 ; 地址到R7
0018 120000   F       68             LCALL   WRITE_BYTE
                      69     
001B 0500     F       70             INC     ADDR                    ; 地址加1
001D E500     F       71             MOV     A,ADDR
001F C3               72             CLR     C
0020 9408             73             SUBB    A,#08H                  ; 共8字节,判断是否完成
0022 40EB             74             JC      MAIN_LP1                ; 
                      75             
0024 E4               76             CLR     A                       ; 
0025 F500     F       77             MOV     ADDR,A                  ; 
0027                  78     MAIN_LP2:                               ; 循环读取AT24C01内容,并输出到P0口
0027 AF00     F       79             MOV     R7,ADDR                 ; 地址到R7
0029 120000   F       80             LCALL   READ_RANDOM
002C 8F80             81             MOV     P0,R7                   ; 将读取的数据传送到P0
                      82             
002E 0500     F       83             INC     ADDR                    ; 地址加1
0030 530007   F       84             ANL     ADDR,#07H               ; 循环读取范围为0x00~0x07
                      85             
0033 7FFA             86             MOV     R7,#0FAH                ; delay
0035 120000   F       87             LCALL   DELAYMS
                      88             
0038 80ED             89             SJMP    MAIN_LP2
                      90     ; END OF MAIN
                      91     
                      92     ;===============================================================================
----                  93             RSEG  CODE_SEG
003A                  94     START:
                      95     ; 开始位
                      96     ; 传入参数: 无
                      97     ; 返回值:无
                      98     
003A D291             99             SETB    SDA
003C D290            100             SETB    SCL
003E 00              101             NOP 
003F 00              102             NOP  
0040 C291            103             CLR     SDA
0042 00              104             NOP
0043 00              105             NOP     
0044 00              106             NOP     
0045 00              107             NOP     
0046 C290            108             CLR     SCL
0048 22              109             RET     
                     110     ; END OF START
                     111     
                     112     ;===============================================================================
                     113     
----                 114             RSEG  CODE_SEG
0049                 115     STOP:
                     116     ; 停止位
                     117     ; 传入参数: 无
                     118     ; 返回值:无
                     119     
0049 C291            120             CLR     SDA
004B 00              121             NOP     
004C 00              122             NOP     
004D D290            123             SETB    SCL
004F 00              124             NOP     
A51 MACRO ASSEMBLER  WL007                                                                11/03/2004 11:06:31 PAGE     3

0050 00              125             NOP     
0051 00              126             NOP     
0052 00              127             NOP     
0053 D291            128             SETB    SDA
0055 22              129             RET     
                     130     ; END OF STOP
                     131     
                     132     ;===============================================================================
----                 133             RSEG  CODE_SEG
0056                 134     SHIN:
                     135     ; 从AT24Cxx移入数据到MCU
                     136     ; 传入参数: 无
                     137     ; 返回值:R7 --- 移出的数据
                     138     
                     139             USING   0
0056 E4              140             CLR     A
0057 FE              141             MOV     R6,A
0058                 142     SHIN_LP:
0058 D290            143             SETB    SCL
005A EF              144             MOV     A,R7
005B 25E0            145             ADD     A,ACC
005D FF              146             MOV     R7,A
005E A291            147             MOV     C,SDA
0060 E4              148             CLR     A
0061 33              149             RLC     A
0062 4207            150             ORL     AR7,A
0064 C290            151             CLR     SCL
0066 0E              152             INC     R6
0067 BE08EE          153             CJNE    R6,#08H,SHIN_LP         ; 共8位,判断是否完成
                     154             
006A 22              155             RET     
                     156     ; END OF SHIN
                     157     
                     158     ;===============================================================================
----                 159             RSEG  CODE_SEG
006B                 160     SHOUT:
                     161     ; 从MCU移出数据到AT24Cxx
                     162     ; 传入参数: R7 --- 要移出的数据
                     163     ; 返回值:C --- AT24Cxx的应答位
                     164     
                     165             USING   0
                     166     
006B E4              167             CLR     A
006C FE              168             MOV     R6,A
006D                 169     SHOUT_LP:                               ; 循环移入8个位
006D EF              170             MOV     A,R7
006E 33              171             RLC     A
006F 9291            172             MOV     SDA,C
0071 00              173             NOP     
0072 D290            174             SETB    SCL
0074 00              175             NOP     
0075 00              176             NOP     
0076 C290            177             CLR     SCL
0078 EF              178             MOV     A,R7
0079 25E0            179             ADD     A,ACC
007B FF              180             MOV     R7,A
007C 0E              181             INC     R6
007D BE08ED          182             CJNE    R6,#08H,SHOUT_LP        ; 共8位,判断是否完成
                     183             
0080 D291            184             SETB    SDA                     ; 读取应答
0082 00              185             NOP     
0083 00              186             NOP     
0084 D290            187             SETB    SCL
0086 00              188             NOP     
0087 00              189             NOP     
0088 00              190             NOP     
A51 MACRO ASSEMBLER  WL007                                                                11/03/2004 11:06:31 PAGE     4

⌨️ 快捷键说明

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