📄 tx.lst
字号:
C51 COMPILER V6.23a TX 12/03/2003 13:59:02 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE TX
OBJECT MODULE PLACED IN tx.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tx.c ROM(SMALL) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*
2 * Copyright (c) 2000, By hao taizhong
3 *
4 * $Workfile: AT24CXX.c $
5 * $Revision: 3.2 $
6 * $Modtime: 2000-8-6 $
7 *
8 * Purpose:
9 *
10 * Compiler: Franklin_C 3.96 Compiler
11 * Ext Packages:
12 *
13 */
14
15 #include"mcu-define.h"
*** ERROR C318 IN LINE 15 OF tx.c: can't open file 'mcu-define.h'
16 #include"macro.h"
*** ERROR C318 IN LINE 16 OF tx.c: can't open file 'macro.h'
17 #include "at24cxxa.h"
*** ERROR C318 IN LINE 17 OF tx.c: can't open file 'at24cxxa.h'
18 #include"max813l.h"
*** ERROR C318 IN LINE 18 OF tx.c: can't open file 'max813l.h'
19
20 #define AT24C512 1
21 //#define AT24C256 1
22 //#define AT24C128 1
23 //#define AT24C64 1
24 //#define AT24C32 1
25
26 #ifdef AT24C512
27 #define SIZEPERCHIP 0x10000
28 #endif
29
30 #ifdef AT24C256
#define SIZEPERCHIP 0x8000
#endif
33
34 #ifdef AT24C128
#define SIZEPERCHIP 0x4000
#endif
37 #ifdef AT24C64
#define SIZEPERCHIP 0x2000
#endif
40
41 #ifdef AT24C32
#define SIZEPERCHIP 0x1000
#endif
44
45 static code BYTE CHIP_READ_ID = 1;
*** ERROR C129 IN LINE 45 OF TX.C: missing ';' before 'CHIP_READ_ID'
46 static code BYTE CHIP_WRITE_ID= 0;
47 static code BYTE CONTROL_CODE =0xa0;
48
49 static BYTE A_AT24XXShIn(void) ;
50 static void A_AT24XXShOut(BYTE ch);
C51 COMPILER V6.23a TX 12/03/2003 13:59:02 PAGE 2
51 static void A_AT24XXStart( void );
52 static void A_AT24XXStop(void) ;
53 static BYTE A_AT24XXCurRead(BYTE chipid);
54 static void A_AT24XXWait(BYTE chipid) ;
55 static void A_AT24XXBitIn(void) ;
56
57
58 sbit A_SCL=P2^1;
59 sbit A_SDA=P2^0;
60
61 static bdata BYTE A_i2data;
62 sbit A_i2b0=A_i2data^0;
63 sbit A_i2b7=A_i2data^7;
64
65 static void A_AT24XXStart(void)
66 {
67 A_SDA=1;
68 A_SCL=0;
69 A_SCL=1;
70 A_SDA=0;
71 A_SCL=0;
72
73 }
74
75 static void A_AT24XXStop(void)
76 {
77 A_SDA=0;
78 A_SCL=1;
79 A_SDA=1;
80
81 }
82 static void A_AT24XXShOut(BYTE ch) {
83 BYTE i;
84 A_i2data=ch;
85 for (i=0;i<8;i++){
86 A_SDA=A_i2b7;
87 A_SCL=1;
88 A_SCL=0;
89 A_i2data<<=1;
90 }
91 }
92
93 static BYTE A_AT24XXCurRead(BYTE chipid)
94 {
95 BYTE ret;
96
97 A_AT24XXStart();
98 A_AT24XXShOut(CONTROL_CODE | chipid | CHIP_READ_ID);//0xa1
99 A_AT24XXBitIn();
100 ret=A_AT24XXShIn();
101 A_AT24XXBitIn();
102 return ret;
103 }
104
105
106 BYTE A_AT24XXReadRandByte(DWORD addr)
107 {
108 BYTE ret;
109 BYTE chipid;
110 WORD subaddr;
111
112 subaddr =addr &(SIZEPERCHIP-1);
C51 COMPILER V6.23a TX 12/03/2003 13:59:02 PAGE 3
113
114 chipid=addr/SIZEPERCHIP;
115 chipid <<=1;
116
117 A_AT24XXStart() ; // write start
118
119 A_AT24XXShOut(CONTROL_CODE | chipid | CHIP_WRITE_ID);//AT24xx device chip
120 address and write mark
121 A_AT24XXWait(chipid);
122 A_AT24XXBitIn();
123 A_AT24XXShOut(HIBYTE(subaddr));
124 A_AT24XXBitIn();
125 A_AT24XXShOut(LOBYTE(subaddr));
126 A_AT24XXBitIn();
127 ret = A_AT24XXCurRead(chipid);
128 A_AT24XXStop(); // read stop
129 return ret;
130 }
131
132
133 void A_AT24XXWriteByte(DWORD addr,BYTE dat)
134 {
135 BYTE chipid;
136 WORD subaddr;
137
138 subaddr =addr &(SIZEPERCHIP-1);
139
140 chipid=addr/SIZEPERCHIP;
141
142 chipid<<=1;
143
144 A_AT24XXStart();
145 A_AT24XXShOut(CONTROL_CODE | chipid | CHIP_WRITE_ID);
146 A_AT24XXWait(chipid);
147 A_AT24XXBitIn();
148 A_AT24XXShOut(HIBYTE(subaddr));
149 A_AT24XXBitIn();
150 A_AT24XXShOut(LOBYTE(subaddr));
151 A_AT24XXBitIn();
152 A_AT24XXShOut(dat);
153 A_AT24XXBitIn();
154 A_AT24XXStop(); // stop
155 }
156
157
158 static BYTE A_AT24XXShIn(void)
159 {
160 register BYTE i;
161 A_i2data=0;
162 for (i=0;i<8;i++) {
163 A_i2data <<=1;
164 A_SDA=1;
165 A_i2b0=A_SDA;
166 A_SCL = 1 ;
167 A_SCL=0;
168 }
169 return A_i2data;
170 }
171
172 /*
173 WORD A_AT24XXReadRandWord(DWORD addr)
174 {
C51 COMPILER V6.23a TX 12/03/2003 13:59:02 PAGE 4
175 register WORD ret;
176 ret=A_AT24XXReadRandByte(addr);
177 ret<<=8;
178 addr++;
179 ret+=A_AT24XXReadRandByte(addr);
180
181 return ret;
182 }
183 */
184 /*
185 void A_AT24XXWriteWord(DWORD addr,WORD dat)
186 {
187 BYTE dl,dh;
188 dl = dat;
189 dh = dat>>8;
190 A_AT24XXWriteByte(addr, dh);
191 addr++;
192 A_AT24XXWriteByte(addr,dl);
193 }
194 */
195 static void A_AT24XXWait(BYTE chipid)
196 { BYTE i;
197 for(i=5;;i++) {
198 A_SDA=1;
199 clr_WDT();
200 if(i==0) return;
201 if(A_SDA) {
202 A_AT24XXStart();
203 A_AT24XXShOut(CONTROL_CODE | chipid | CHIP_WRITE_ID);
204 }
205 else return;
206 }
207 }
208 static void A_AT24XXBitIn(void) {
209 A_SDA=1;
210 A_i2b0=A_SDA;
211 A_SCL=1;
212 A_SCL=0;
213 }
214
215 /*end of AT24Cxx utilities */
216
C51 COMPILATION COMPLETE. 0 WARNING(S), 5 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -