📄 wl007.lst
字号:
A51 MACRO ASSEMBLER WL007 08/19/2005 20:30:40 PAGE 1
MACRO ASSEMBLER A51 V7.10
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 ;* 标题: ME300系列单片机开发系统演示程序 - AT24C02读写演示程序 *
3 ;* 硬件: ME300A+ *
4 ;* 文件: wl007.asm *
5 ;* 日期: 2004-1-5 *
6 ;* 版本: 1.0 *
7 ;* 作者: 伟纳电子 - Freeman *
8 ;* 邮箱: freeman@willar.com *
9 ;* 网站: http://www.willar.com *
10 ;********************************************************************************
11 ;* 描述: *
12 ;* AT24C02读写演示程序 *
13 ;* *
14 ;* *
15 ;* *
16 ;* *
17 ;********************************************************************************
18 ;* 【版权】 Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
19 ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
20 ;********************************************************************************
21
22 NAME WL007
23
00A1 24 OP_READ EQU 0xa1 ; 器件地址以及读取操作
00A0 25 OP_WRITE EQU 0xa0 ; 器件地址以及写入操作
007F 26 MAX_ADDR EQU 0x7f ; AT24C02最大地址
27
28 CODE_SEG SEGMENT CODE
29 DATA_SEG SEGMENT DATA
30 STACK_SEG SEGMENT IDATA
31
32
---- 33 RSEG DATA_SEG
0000 34 ADDR: DS 1
0001 35 TMP2: DS 1
0002 36 TMP3: DS 1
37
---- 38 RSEG STACK_SEG
0000 39 STACK: DS 20
40
00B3 41 SCL BIT P3.3
0093 42 SDA BIT P1.3
43
44 ;===============================================================================
---- 45 CSEG AT 0000H ; 复位向量
0000 020000 F 46 JMP MAIN
47
48
49
50 ;===============================================================================
---- 51 RSEG CODE_SEG
0000 52 MAIN:
53 ; 主程序开始
54
55 USING 0
56
0000 758100 F 57 MOV SP, #(STACK-1) ; 设置堆栈
58
A51 MACRO ASSEMBLER WL007 08/19/2005 20:30:40 PAGE 2
0003 D293 59 SETB SDA
0005 D2B3 60 SETB SCL
61
0007 7F5A 62 MOV R7,#05AH ; 全部填充0xff
0009 120000 F 63 LCALL FILL_BYTE
64
000C E4 65 CLR A
000D F500 F 66 MOV ADDR,A
000F 67 MAIN_LP1: ; 将表格DIS_CODE内数据写入到EEPROM
68
000F E500 F 69 MOV A,ADDR
0011 900000 F 70 MOV DPTR,#DIS_CODE
0014 93 71 MOVC A,@A+DPTR ; 查表
72
0015 FD 73 MOV R5,A ; 数据到R5
0016 AF00 F 74 MOV R7,ADDR ; 地址到R7
0018 120000 F 75 LCALL WRITE_BYTE
76
001B 0500 F 77 INC ADDR ; 地址加1
001D E500 F 78 MOV A,ADDR
001F C3 79 CLR C
0020 9408 80 SUBB A,#08H ; 共8字节,判断是否完成
0022 40EB 81 JC MAIN_LP1 ;
82
0024 E4 83 CLR A ;
0025 F500 F 84 MOV ADDR,A ;
0027 85 MAIN_LP2: ; 循环读取AT24C02内容,并输出到P0口
0027 AF00 F 86 MOV R7,ADDR ; 地址到R7
0029 120000 F 87 LCALL READ_RANDOM
002C 8F80 88 MOV P0,R7 ; 将读取的数据传送到P0
89
002E 0500 F 90 INC ADDR ; 地址加1
0030 530007 F 91 ANL ADDR,#07H ; 循环读取范围为0x00~0x07
92
0033 7FFA 93 MOV R7,#0FAH ; delay
0035 120000 F 94 LCALL DELAYMS
95
0038 80ED 96 SJMP MAIN_LP2
97 ; END OF MAIN
98
99 ;===============================================================================
---- 100 RSEG CODE_SEG
003A 101 START:
102 ; 开始位
103 ; 传入参数: 无
104 ; 返回值:无
105
003A D293 106 SETB SDA
003C D2B3 107 SETB SCL
003E 00 108 NOP
003F 00 109 NOP
0040 C293 110 CLR SDA
0042 00 111 NOP
0043 00 112 NOP
0044 00 113 NOP
0045 00 114 NOP
0046 C2B3 115 CLR SCL
0048 22 116 RET
117 ; END OF START
118
119 ;===============================================================================
120
---- 121 RSEG CODE_SEG
0049 122 STOP:
123 ; 停止位
124 ; 传入参数: 无
A51 MACRO ASSEMBLER WL007 08/19/2005 20:30:40 PAGE 3
125 ; 返回值:无
126
0049 C293 127 CLR SDA
004B 00 128 NOP
004C 00 129 NOP
004D D2B3 130 SETB SCL
004F 00 131 NOP
0050 00 132 NOP
0051 00 133 NOP
0052 00 134 NOP
0053 D293 135 SETB SDA
0055 22 136 RET
137 ; END OF STOP
138
139 ;===============================================================================
---- 140 RSEG CODE_SEG
0056 141 SHIN:
142 ; 从AT24Cxx移入数据到MCU
143 ; 传入参数: 无
144 ; 返回值:R7 --- 移出的数据
145
146 USING 0
0056 E4 147 CLR A
0057 FE 148 MOV R6,A
0058 149 SHIN_LP:
0058 D2B3 150 SETB SCL
005A EF 151 MOV A,R7
005B 25E0 152 ADD A,ACC
005D FF 153 MOV R7,A
005E A293 154 MOV C,SDA
0060 E4 155 CLR A
0061 33 156 RLC A
0062 4207 157 ORL AR7,A
0064 C2B3 158 CLR SCL
0066 0E 159 INC R6
0067 BE08EE 160 CJNE R6,#08H,SHIN_LP ; 共8位,判断是否完成
161
006A 22 162 RET
163 ; END OF SHIN
164
165 ;===============================================================================
---- 166 RSEG CODE_SEG
006B 167 SHOUT:
168 ; 从MCU移出数据到AT24Cxx
169 ; 传入参数: R7 --- 要移出的数据
170 ; 返回值:C --- AT24Cxx的应答位
171
172 USING 0
173
006B E4 174 CLR A
006C FE 175 MOV R6,A
006D 176 SHOUT_LP: ; 循环移入8个位
006D EF 177 MOV A,R7
006E 33 178 RLC A
006F 9293 179 MOV SDA,C
0071 00 180 NOP
0072 D2B3 181 SETB SCL
0074 00 182 NOP
0075 00 183 NOP
0076 C2B3 184 CLR SCL
0078 EF 185 MOV A,R7
0079 25E0 186 ADD A,ACC
007B FF 187 MOV R7,A
007C 0E 188 INC R6
007D BE08ED 189 CJNE R6,#08H,SHOUT_LP ; 共8位,判断是否完成
190
A51 MACRO ASSEMBLER WL007 08/19/2005 20:30:40 PAGE 4
0080 D293 191 SETB SDA ; 读取应答
0082 00 192 NOP
0083 00 193 NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -