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

📄 up51s011.lst

📁 X5045读写演示程序 先用字节写入: 写入11H到地址55H (字节写入) 读取55H
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;/*******************************************************************************
                       2     ;*                                                                              *
                       3     ;*    File       : uP51s011.asm                                                 *
                       4     ;*    Date       : 2004-9-5                                                     *
                       5     ;*    Version    : 1.0                                                          *
                       6     ;*                                                                              *
                       7     ;*    Author     : kevin           kevin@dz51.com                               *
                       8     ;*    Company    : Http://www.dz51.com                                          *
                       9     ;*                                                                              *
                      10     ;********************************************************************************
                      11     ;*    Descriptoon:                                                              *
                      12     ;*    Descriptoon:                                                              *
                      13     ;*                 X5045读写演示程序(J3短路2-3脚)                               *
                      14     ;*                                                                              *
                      15     ;*            程序运行首先把字节0x11H到x5045地址55H (字节写入),然后读出地址55H *
                      16     ;*    的数据送给P0口,可以看到P0口8个发光管对应的数据。                         *
                      17     ;*  (LD8---LD1分别对应0B00010001,0x11H)                                       *
                      18     ;*                                                                              *
                      19     ;*   然后进行页写入0X22H/0X33H/0X44H到X5045的地址0X1F0/1/2H,然后读出送P0口     *
                      20     ;*                                                                              *
                      21     ;* 注意:由于读写X5045的I/O口和编程芯片的I/O口是复用的,所以实验本程序的时候不  *
                      22     ;* 要读器件,否则只能下次上电程序读写X5045才能够正常!!!                      *
                      23     
                      24     ;********************************************************************************
                      25     NAME    up51s011
                      26     
                      27     CODE_SEG        SEGMENT CODE
                      28     ;DATA_SEG       SEGMENT DATA
                      29     STACK_SEG       SEGMENT IDATA
                      30     
  0092                31     CS      BIT     P1.2
  0094                32     SI      BIT     P1.4
  0093                33     SCK     BIT     P1.3
  0095                34     SO      BIT     P1.5
                      35     
                      36     
  0006                37     WREN_INST       EQU     06H             ; 写入使能指令(WREN)
  0004                38     WRDI_INST       EQU     04H             ; 写入禁止指令(WRDI)
  0001                39     WRSR_INST       EQU     01H             ; 写入状态寄存器指令(WRSR)
  0005                40     RDSR_INST       EQU     05H             ; 读取状态寄存器指令(RDSR)
  0002                41     WRITE_INST      EQU     02H             ; 写入存储器指令(WRITE)
  0003                42     READ_INST       EQU     03H             ; 读取存储器指令(READ)
                      43     
  0055                44     BYTE_ADDR       EQU     55H             ; 字节模式写入地址
  0011                45     BYTE_DATA       EQU     11H             ; 字节模式写入数据
  01F0                46     PAGE_ADDR       EQU     1F0H            ; 页写入模式地址
  0022                47     PAGE_DATA1      EQU     22H             ; 页模式写入第一个示
  0033                48     PAGE_DATA2      EQU     33H             ; 页模式写入第二个示
  0044                49     PAGE_DATA3      EQU     44H             ; 页模式写入第雀鍪据
                      50     
  0000                51     STATUS_REG      EQU     00H             ; 要写入到状态寄存器的值
                      52     
  0099                53     MAX_POLL        EQU     99H             ; 最大查询次数
                      54     
                      55     
----                  56             RSEG    STACK_SEG
0000                  57     STACK:          DS      20
                      58     
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     2

                      59     ;******************************************************************************************
                      60     ;*      CODE
                      61     ;******************************************************************************************
----                  62             CSEG    AT      0000H           ; 复位向量
0000 020000   F       63             LJMP    MAIN
                      64     
                      65                                                     
                      66     
----                  67             RSEG    CODE_SEG
0000                  68     MAIN:
0000 758100   F       69             MOV     SP,#(STACK-1)           ; 初始化栈指针
0003 C2AF             70             CLR     EA                      ;
                      71     
0005 D295             72             SETB    SO                              ; 初始化I/O口
0007 C294             73             CLR     SI
0009 C293             74             CLR     SCK
000B D292             75             SETB    CS
000D 75E0F0           76             MOV ACC,#0XF0
0010 85E080           77             MOV P0,ACC
0013 120000   F       78             LCALL DELAY 
                      79     
0016 75E00F           80             MOV ACC,#0X0F
0019 85E080           81             MOV P0,ACC
001C 120000   F       82             LCALL DELAY 
                      83     
001F 120000   F       84             LCALL   WREN_CMD                ; 使能写入
0022 120000   F       85             LCALL   WRSR_CMD                ; 写入00H到状态寄存器
0025 120000   F       86             LCALL   WREN_CMD                ; 使能写入
0028 120000   F       87             LCALL   BYTE_WRITE              ; 写入11H到地址55H (字节写入)
002B 120000   F       88             LCALL   BYTE_READ               ; 读取地址55H处的数据(字节读取)
002E 85E080           89             MOV P0,ACC    ;将读取的数据送P0口
0031 120000   F       90             LCALL DELAY 
0034 120000   F       91             LCALL   WREN_CMD                ; 使能写入
0037 120000   F       92             LCALL   PAGE_WRITE              ; 页写入22H/33H/44H到地址1F0/1F1/1F2H
003A 120000   F       93             LCALL   SEQU_READ               ; 连续读取地址1F0/1F1/1F2H
003D 120000   F       94             LCALL   RST_WDOG                ; 清除看门狗
0040 120000   F       95             LCALL   WRDI_CMD                ; 写入禁止指令
                      96     
0043 85E080           97             MOV P0,ACC    ;将读取的数据送P0口
0046 120000   F       98             CALL DELAY
                      99     
0049 7837            100             MOV R0,#55    ;将读取的数据送P0口
                     101     
004B 8880            102             MOV P0,R0
004D 120000   F      103             LCALL DELAY 
                     104     
0050 D292            105             SETB    CS
0052                 106     MAIN_LP:
0052 80FE            107             SJMP    MAIN_LP
                     108     ;******************************************************************************************
                     109     ;* WREN_CMD: 写入使能指令
                     110     ;* 传入参数: 无
                     111     ;* 返回值: 无
                     112     ;******************************************************************************************
0054                 113     WREN_CMD:
0054 C293            114             CLR     SCK
0056 C292            115             CLR     CS
0058 7406            116             MOV     A, #WREN_INST
005A 120000   F      117             LCALL   OUTBYT                  ; 传送写入使能指令
005D C293            118             CLR     SCK
005F D292            119             SETB    CS
0061 22              120             RET
                     121     
                     122     ;******************************************************************************************
                     123     ;* WRDI_CMD: 写入禁止指令
                     124     ;* 传入参数: 无
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     3

                     125     ;* 返回值: 无
                     126     ;******************************************************************************************
0062                 127     WRDI_CMD:
0062 C293            128             CLR     SCK
0064 C292            129             CLR     CS
0066 7404            130             MOV     A,#WRDI_INST
0068 120000   F      131             LCALL   OUTBYT                  ; 传送写入禁止指令
006B C293            132             CLR     SCK
006D D292            133             SETB    CS
006F 22              134             RET
                     135     
                     136     ;******************************************************************************************
                     137     ;* WRSR_CMD: 写入数据到状态寄存器
                     138     ;* 传入参数: 无
                     139     ;* 返回值: 无
                     140     ;******************************************************************************************
0070                 141     WRSR_CMD:
0070 C293            142             CLR     SCK
0072 C292            143             CLR     CS
0074 7401            144             MOV     A,#WRSR_INST
0076 120000   F      145             LCALL   OUTBYT                  ; 传送状态寄存器写入指令
0079 7400            146             MOV     A,#STATUS_REG
007B 120000   F      147             LCALL   OUTBYT                  ; 传送要写入的数据
007E C293            148             CLR     SCK
                     149                                                                
                     150     
0080 D292            151             SETB    CS
0082 120000   F      152             LCALL   WIP_POLL                ; 检测写入进度
0085 22              153             RET
                     154     ;******************************************************************************************
                     155     ;* RDSR_CMD: 读取状态寄存器
                     156     ;* 传入参数: 无
                     157     ;* 返回值: A --- 状态寄存器值
                     158     ;******************************************************************************************
0086                 159     RDSR_CMD:
0086 C293            160             CLR     SCK
0088 C292            161             CLR     CS
008A 7405            162             MOV     A, #RDSR_INST
008C 120000   F      163             LCALL   OUTBYT                  ; 传送状态寄存器读取指令
008F 120000   F      164             LCALL   INBYT                   ; 读取状态寄存器
0092 C293            165             CLR     SCK
0094 D292            166             SETB    CS
0096 22              167             RET
                     168     ;******************************************************************************************
                     169     ;* BYTE_WRITE: 单一字节写入
                     170     ;* 传入参数: 无
                     171     ;* 返回值: 无
                     172     
                     173     ;******************************************************************************************
0097                 174     BYTE_WRITE:
0097 900055          175             MOV     DPTR,#BYTE_ADDR         ; 设置要写入的地址
009A C293            176             CLR     SCK
009C C292            177             CLR     CS
009E 7402            178             MOV     A,#WRITE_INST
00A0 8583F0          179             MOV     B,DPH
00A3 A2F0            180             MOV     C,B.0
00A5 92E3            181             MOV     ACC.3,C
00A7 120000   F      182             LCALL   OUTBYT                  ; 传送写指令和地址最高位
00AA E582            183             MOV     A,DPL
00AC 120000   F      184             LCALL   OUTBYT                  ; 传送地址低字节
00AF 7411            185             MOV     A,#BYTE_DATA
00B1 120000   F      186             CALL    OUTBYT                  ; 传送要写入的字节数据   
00B4 C293            187             CLR     SCK
00B6 D292            188             SETB    CS
00B8 120000   F      189             LCALL   WIP_POLL                ; 检测写入进度
00BB 22              190             RET
A51 MACRO ASSEMBLER  UP51S011                                                             03/20/2005 18:59:08 PAGE     4

                     191     
                     192     ;******************************************************************************************
                     193     ;* BYTE_READ: 单一字节读取
                     194     ;* 传入参数: 无
                     195     ;* 返回值: A --- 读取的字节
                     196     
                     197     ;******************************************************************************************
00BC                 198     BYTE_READ:

⌨️ 快捷键说明

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