📄 at2402.lst
字号:
C51 COMPILER V8.02 AT2402 01/22/2008 14:37:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE AT2402
OBJECT MODULE PLACED IN AT2402.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE AT2402.C BROWSE DEBUG OBJECTEXTEND
line level source
1 /* Name:AT24C02*/
2 #include "reg52.h"
3 #include "at2402.h"
4 // #include "common.h"
5
6
7
8 /********** Function Definition ************/
9
10 void DELAY0(unsigned int t)
11 {
12 1 while(t!=0)
13 1 t--;
14 1 }
15
16 void I2C_Start(void)
17 {
18 1
19 1 SDA=1;
20 1 SCL=1;
21 1 DELAY0(DELAY_TIME);
22 1 SDA=0;
23 1 DELAY0(DELAY_TIME);
24 1 SCL=0;
25 1 DELAY0(DELAY_TIME);
26 1 }
27
28 void I2C_Stop(void)
29 {
30 1 /*I2C,SCL,SDA*/
31 1 SDA=0;
32 1 SCL=1;
33 1 DELAY0(DELAY_TIME);
34 1 SDA=1;
35 1 DELAY0(DELAY_TIME);
36 1 SCL=0;
37 1 DELAY0(DELAY_TIME);
38 1 }
39
40 void SEND_0(void) /* SEND ACK */
41 {
42 1
43 1 SDA=0;
44 1 SCL=1;
45 1 DELAY0(DELAY_TIME);
46 1 SCL=0;
47 1 DELAY0(DELAY_TIME);
48 1 }
49
50 void SEND_1(void)
51 {
52 1
53 1 SDA=1;
54 1 SCL=1;
55 1 DELAY0(DELAY_TIME);
C51 COMPILER V8.02 AT2402 01/22/2008 14:37:12 PAGE 2
56 1 SCL=0;
57 1 DELAY0(DELAY_TIME);
58 1 }
59
60 bit Check_Acknowledge(void)
61 {
62 1
63 1 SDA=1;
64 1 SCL=1;
65 1 DELAY0(DELAY_TIME/2);
66 1 F0=SDA;
67 1 DELAY0(DELAY_TIME/2);
68 1 SCL=0;
69 1 DELAY0(DELAY_TIME);
70 1 if(F0==1)
71 1 return FALSE;
72 1 return TRUE;
73 1 }
74
75 void WriteI2CByte(char b)reentrant
76 {
77 1
78 1 char i;
79 1 for(i=0;i<8;i++)
80 1 if((b<<i)&0x80) SEND_1();
81 1 else
82 1 SEND_0();
83 1 }
84
85
86
87 char ReadI2CByte(void)reentrant
88 {
89 1
90 1 char b=0,i;
91 1 for(i=0;i<8;i++)
92 1 {
93 2 SDA=1;
94 2 SCL=1;
95 2 DELAY0(10);
96 2 F0=SDA;
97 2 DELAY0(10);
98 2 SCL=0;
99 2 if(F0==1)
100 2 {
101 3 b=b<<1;
102 3 b=b|0x01;
103 3 }
104 2 else
105 2 b=b<<1;
106 2 }
107 1 return b;
108 1 }
109
110
111 /**********24c0**********/
112 void Write_One_Byte(char addr,char thedata)
113 {
114 1 bit acktemp=1;
115 1 /*write a byte to mem*/
116 1 I2C_Start();
117 1 WriteI2CByte(0xa0); // 0xa0
C51 COMPILER V8.02 AT2402 01/22/2008 14:37:12 PAGE 3
118 1 acktemp=Check_Acknowledge();
119 1 WriteI2CByte(addr);/*address*/
120 1 acktemp=Check_Acknowledge();
121 1 WriteI2CByte(thedata);/*thedata*/
122 1 acktemp=Check_Acknowledge();
123 1 I2C_Stop();
124 1
125 1 }
126 /*
127 void Write_A_Page(char *buffer,char addr)
128 {
129 bit acktemp=1;
130 // bit wrtmp;
131 int i;
132 //write a page to at24c02
133 I2C_Start();
134 WriteI2CByte(0xa0); //0xa0
135 acktemp=Check_Acknowledge();
136 WriteI2CByte(addr); //address
137 acktemp=Check_Acknowledge();
138 for(i=0;i<7;i++)
139 {
140 WriteI2CByte(buffer[i]);
141 if(!Check_Acknowledge())
142 {
143 I2C_Stop();
144 }
145 }
146 I2C_Stop();
147 }
148 */
149
150 char Read_One_Byte(char addr)
151 { bit acktemp=1;
152 1 char mydata;
153 1 /*read a byte from mem*/
154 1 I2C_Start();
155 1 WriteI2CByte(0xa0); //0xa0
156 1 acktemp=Check_Acknowledge();
157 1 WriteI2CByte(addr);/*address*/
158 1 acktemp=Check_Acknowledge();
159 1 I2C_Start();
160 1 WriteI2CByte(0xa1); //0xa1
161 1 acktemp=Check_Acknowledge();
162 1
163 1
164 1 mydata=ReadI2CByte();
165 1 acktemp=Check_Acknowledge();
166 1 I2C_Stop();
167 1 return mydata;
168 1
169 1 }
170 /*
171 void Read_N_Bytes(char *buffer,char n,char addr)
172 {
173 bit acktemp=1;
174
175 int i=0;
176 //read 8 bytes from mem
177 I2C_Start();
178 WriteI2CByte(0xa0); //0xa0
179 acktemp=Check_Acknowledge();
C51 COMPILER V8.02 AT2402 01/22/2008 14:37:12 PAGE 4
180 WriteI2CByte(addr);//address
181 acktemp=Check_Acknowledge();
182 I2C_Start();
183 WriteI2CByte(0xa1); //0xa1
184
185 acktemp=Check_Acknowledge();
186
187
188
189
190 for(i=0;i<n;i++)
191 {
192 buffer[i]=ReadI2CByte();
193 if(i!=n-1)
194 SEND_0();
195 else
196 SEND_1();
197 }
198
199 I2C_Stop();
200
201 }
202
203 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 365 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -