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