📄 cufirst.lst
字号:
A51 MACRO ASSEMBLER CUFIRST 05/21/2008 02:07:42 PAGE 1
MACRO ASSEMBLER A51 V8.01
OBJECT MODULE PLACED IN cufirst.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE cufirst.a51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;EEPROM PORT DEFINITIONS ETC.
0096 2 SDA1 EQU P1.6
0097 3 SCL1 EQU P1.7
4
5
00A0 6 WTCMD EQU 10100000B ;WRITE DATA COMMAND
00A1 7 RDCMD EQU 10100001B ;READ DATA COMMAND
8
007E 9 HBADD EQU 7Eh
007F 10 MEMORY EQU 7Fh
11
12
13
14
0000 15 ORG 0000h
0000 020003 16 LJMP MAIN
17
0003 18 MAIN:
19
20 ;************************ROUTINE TO SET STATUS AS ZERO***********************
21
22
23
0003 74A0 24 MOV A,#WTCMD ;LOAD WRITE COMMAND
25
0005 1115 26 CALL OUTS ;SEND IT
27
0007 7400 28 MOV A,#00H ;GET BYTE ADDRESS
29
0009 1142 30 CALL OUT ;SEND IT
31
000B 7400 32 MOV A,#00H ;GET DATA
33
000D 1142 34 CALL OUT ;SEND IT
35
000F 1161 36 CALL STOP ;SEND STOP CONDITION
0011 11C7 37 ACALL DELAY_STOP
0013 80FE 38 JMP $
39
40
41
42
43
44
45
46
0015 7A08 47 OUTS: MOV R2,#8 ;LOOP COUNT -- EQUAL TO BIT COUNT
48
0017 D296 49 SETB SDA1 ;INSURE DATA IS HI
50
0019 D297 51 SETB SCL1 ;INSURE CLOCK IS HI
52
001B 00 53 NOP ;NOTE 1
54
001C 00 55 NOP
56
001D 00 57 NOP
58
A51 MACRO ASSEMBLER CUFIRST 05/21/2008 02:07:42 PAGE 2
001E C296 59 CLR SDA1 ;START CONDITION -- DATA = 0
60
0020 00 61 NOP ;NOTE 1
62
0021 00 63 NOP
64
0022 00 65 NOP
66
0023 C297 67 CLR SCL1 ;CLOCK = 0
68
0025 33 69 OTSLP: RLC A ;SHIFT BIT
70
0026 5004 71 JNC BITLS
72
0028 D296 73 SETB SDA1 ;DATA = 1
74
002A 8002 75 JMP OTSL1 ;CONTINUE
76
002C C296 77 BITLS: CLR SDA1 ;DATA = 0
78
002E D297 79 OTSL1: SETB SCL1 ;CLOCK HI
80
0030 00 81 NOP ;NOTE 1
82
0031 00 83 NOP
84
0032 00 85 NOP
86
87
88
0033 C297 89 CLR SCL1 ;CLOCK LOW
90
0035 DAEE 91 DJNZ R2,OTSLP ;DECREMENT COUNTER
92
0037 D296 93 SETB SDA1 ;TURN PIN INTO INPUT
94
0039 00 95 NOP ;NOTE 1
96
97
98
003A D297 99 SETB SCL1 ;CLOCK ACK
100
003C 00 101 NOP ;NOTE 1
102
003D 00 103 NOP
104
003E 00 105 NOP
106
107
108
003F C297 109 CLR SCL1
110
0041 22 111 RET
112
113
114
115
116 ;**********************************************************************
117
118 ; THIS ROUTINE SENDS OUT CONTENTS OF ACCUMLATOR TO EEPROM
119
120 ; without sending a START condition.
121
122 ;**********************************************************************
123
124
A51 MACRO ASSEMBLER CUFIRST 05/21/2008 02:07:42 PAGE 3
125
126
0042 7A08 127 OUT: MOV R2,#8 ;LOOP COUNT -- EQUAL TO BIT COUNT
128
0044 33 129 OTLP: RLC A ;SHIFT BIT
130
0045 5004 131 JNC BITL
132
0047 D296 133 SETB SDA1 ;DATA = 1
134
0049 8002 135 JMP OTL1 ;CONTINUE
136
004B C296 137 BITL: CLR SDA1 ;DATA = 0
138
004D D297 139 OTL1: SETB SCL1 ;CLOCK HI
140
004F 00 141 NOP ;NOTE 1
142
0050 00 143 NOP
144
0051 00 145 NOP
146
147
148
0052 C297 149 CLR SCL1 ;CLOCK LOW
150
0054 DAEE 151 DJNZ R2,OTLP ;DECREMENT COUNTER
152
0056 D296 153 SETB SDA1 ;TURN PIN INTO INPUT
154
0058 00 155 NOP ;NOTE 1
156
157
158
0059 D297 159 SETB SCL1 ;CLOCK ACK
160
005B 00 161 NOP ;NOTE 1
162
005C 00 163 NOP
164
005D 00 165 NOP
166
167
168
005E C297 169 CLR SCL1
170
0060 22 171 RET
172
173
174
175
176
177
178
0061 C296 179 STOP: CLR SDA1 ;STOP CONDITION SET DATA LOW
180
0063 00 181 NOP ;NOTE 1
182
0064 00 183 NOP
184
0065 00 185 NOP
186
187
188
0066 D297 189 SETB SCL1 ;SET CLOCK HI
190
A51 MACRO ASSEMBLER CUFIRST 05/21/2008 02:07:42 PAGE 4
0068 00 191 NOP ;NOTE 1
192
0069 00 193 NOP
194
006A 00 195 NOP
196
197
198
006B D296 199 SETB SDA1 ;SET DATA HIGH
200
006D 22 201 RET
202
203 ;*******************************************************************
204
205 ; THIS ROUTINE READS A BYTE OF DATA FROM EEPROM
206
207 ; From EEPROM current address pointer.
208
209 ; Returns the data byte in R1
210
211 ;*******************************************************************
212
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -