wl006.lst

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

LST
414
字号
A51 MACRO ASSEMBLER  WL006                                                                11/03/2004 11:05:11 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ; /*******************************************************************************
                       2     ; *                                                                              *
                       3     ; *    File       : wl006.asm                                                    *
                       4     ; *    Date       : 2004-11-5                                                    *
                       5     ; *    Version    : 1.1                                                          *
                       6     ; *                                                                              *
                       7     ; ********************************************************************************
                       8     ; *    Descriptoon:                                                              *
                       9     ; *                AT93C46读写演示程序                                           *
                      10     ; *                从地址0x00开始写入数据"www.mcu-diy.com", 然后再读出          *
                      11     ; *                                                                              *
                      12     ; *                注意:在擦除或写入数据之前,必须先写入EWEN指令                *
                      13     ; *                                                                              *
                      14     ; *                                                                              *
                      15     ; *******************************************************************************/
                      16             NAME    WL006
                      17     
                      18     CODE_SEG        SEGMENT CODE 
                      19     DATA_SEG        SEGMENT DATA
                      20     STACK_SEG       SEGMENT IDATA
                      21     
----                  22             RSEG  DATA_SEG
                      23             
0000                  24     INDATA:         DS      1
0001                  25     ADDR:           DS      1
                      26     
----                  27             RSEG    STACK_SEG
0000                  28     STACK:          DS      20
                      29     
                      30     
  0094                31     CS      BIT     P1.4
  0090                32     SK      BIT     P1.0
  0092                33     DI      BIT     P1.2
  0093                34     DO      BIT     P1.3
                      35     
                      36     ;===============================================================================
----                  37             CSEG    AT      0000H
0000 020000   F       38             JMP     MAIN
                      39     
                      40     ;===============================================================================
----                  41             RSEG  CODE_SEG
0000                  42     MAIN:
                      43             USING   0
0000 758100   F       44             MOV     SP,#(STACK-1)           ; 设置堆栈
                      45             
0003 C294             46             CLR     CS                      ; 初始化端口
0005 C290             47             CLR     SK
0007 D292             48             SETB    DI
0009 D293             49             SETB    DO
                      50     
000B 120000   F       51             LCALL   EWEN                    ; 使能写入操作
000E 120000   F       52             LCALL   ERASE                   ; 擦除全部内容
                      53             
0011 E4               54             CLR     A                       ; 写入显示代码到AT93C46
0012 F500     F       55             MOV     ADDR,A
0014                  56     WRITE_LP:
0014 E500     F       57             MOV     A,ADDR
0016 900000   F       58             MOV     DPTR,#DIS_CODE
A51 MACRO ASSEMBLER  WL006                                                                11/03/2004 11:05:11 PAGE     2

0019 93               59             MOVC    A,@A+DPTR
                      60             
001A FD               61             MOV     R5,A                    ; 数据到R5
001B AF00     F       62             MOV     R7,ADDR                 ; 地址到R7
001D 120000   F       63             LCALL   WRITE
                      64             
0020 0500     F       65             INC     ADDR                    ; 地址加1
0022 E500     F       66             MOV     A,ADDR
0024 C3               67             CLR     C
0025 9408             68             SUBB    A,#08H                  ; 共8个字节,判断是否完成
0027 40EB             69             JC      WRITE_LP
                      70             
0029 120000   F       71             LCALL   EWDS                    ; 禁止写入操作  
                      72             
                      73     
002C E4               74             CLR     A
002D F500     F       75             MOV     ADDR,A
                      76             
002F                  77     MAIN_LP:                                ; 循环读取AT93C46内容,并输出到P0口
002F AF00     F       78             MOV     R7,ADDR
0031 120000   F       79             LCALL   READ
                      80             
0034 8F80             81             MOV     P0,R7
0036 0500     F       82             INC     ADDR
0038 530007   F       83             ANL     ADDR,#07H               ; 循环读取地址为0x00~0x07
                      84     
003B 7FFA             85             MOV     R7,#250
003D 120000   F       86             LCALL   DELAYMS                 ; 延时250ms
                      87             
0040 80ED             88             SJMP    MAIN_LP
                      89     
                      90     
                      91     ;===============================================================================
----                  92             RSEG    CODE_SEG
0042                  93     WRITE:
                      94     ; 定入数据到AT93C46
                      95     ; 传入参数:R7 --- 要写入数据的地址
                      96     ; 传入参数:R5 --- 要写入的数据
                      97     ; 返回值:无
                      98     
                      99             USING   0
0042 8D00     F      100             MOV     INDATA,R5               ; 暂存要写入的数据
                     101     
0044 AD07            102             MOV     R5,AR7                  ; 地址
0046 7F40            103             MOV     R7,#040H                ; 写入指令
0048 120000   F      104             LCALL   INOP                    ; 调用INOP子程序,写入指令和地址
                     105     
004B AF00     F      106             MOV     R7,INDATA               ; 数据
004D 120000   F      107             LCALL   SHIN                    ; 移入数据
                     108     
0050 C294            109             CLR     CS
                     110     
0052 7F0A            111             MOV     R7,#10
0054 020000   F      112             LJMP    DELAYMS                 ; 延时10ms,Twp
                     113     ; END OF WRITE
                     114     
                     115     ;===============================================================================
----                 116             RSEG  CODE_SEG
0057                 117     READ:
                     118     ; 读取AT93C46内的数据
                     119     ; 传入参数:R7 --- 地址
                     120     ; 返回值:R7 --- 读取的数据
                     121     
                     122             USING   0
                     123             
0057 AD07            124             MOV     R5,AR7
A51 MACRO ASSEMBLER  WL006                                                                11/03/2004 11:05:11 PAGE     3

0059 7F80            125             MOV     R7,#080H
005B 120000   F      126             LCALL   INOP                    ; 调用INOP子程序,写入指令和地址
                     127     
005E 120000   F      128             LCALL   SHOUT                   ; 调用SHOUT,读出数据保存到R7
                     129             
0061 C294            130             CLR     CS
                     131     
0063 22              132             RET     
                     133     ; END OF READ
                     134     
                     135     ;===============================================================================
----                 136             RSEG  CODE_SEG
0064                 137     EWEN:
                     138     ; 写入使能指令
                     139     ; 传入参数:无
                     140     ; 返回值:无
                     141     
                     142             USING   0
                     143     
0064 7D60            144             MOV     R5,#060H
0066 E4              145             CLR     A
0067 FF              146             MOV     R7,A
0068 120000   F      147             LCALL   INOP
                     148     
006B C294            149             CLR     CS
                     150     
006D 22              151             RET     
                     152     ; END OF EWEN
                     153     
                     154     
                     155     ;===============================================================================
----                 156             RSEG  CODE_SEG
006E                 157     EWDS:
                     158     ; 写入禁止指令
                     159     ; 传入参数:无
                     160     ; 返回值:无
                     161     
                     162             USING   0
                     163             
006E E4              164             CLR     A
006F FD              165             MOV     R5,A
0070 FF              166             MOV     R7,A
0071 120000   F      167             LCALL   INOP
                     168     
0074 C294            169             CLR     CS
                     170     
0076 22              171             RET     
                     172     ; END OF EWDS
                     173     
                     174     ;===============================================================================
----                 175             RSEG  CODE_SEG
0077                 176     ERASE:
                     177     ; 擦除所有内容
                     178     ; 传入参数:无
                     179     ; 返回值:无
                     180     
                     181             USING   0
                     182             
0077 7D40            183             MOV     R5,#040H
0079 E4              184             CLR     A
007A FF              185             MOV     R7,A
007B 120000   F      186             LCALL   INOP
                     187     
007E 7F1E            188             MOV     R7,#01EH
0080 120000   F      189             LCALL   DELAYMS
                     190     
A51 MACRO ASSEMBLER  WL006                                                                11/03/2004 11:05:11 PAGE     4

0083 C294            191             CLR     CS
                     192     

⌨️ 快捷键说明

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