📄 up51s011.lst
字号:
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 + -