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