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 + -
显示快捷键?