📄 stc_control_24c02.lst
字号:
C51 COMPILER V8.02 STC_CONTROL_24C02 12/29/2007 12:56:55 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE STC_CONTROL_24C02
OBJECT MODULE PLACED IN stc_control_24c02.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE stc_control_24c02.c COMPACT BROWSE DEBUG OBJECTEXTEND
line level source
1 /*************************版权信息**************************
2 *文件名称: i2c.h
3 *当前版本: v1.0
4 *作者: 吕坤修改
5 *完成日期: 2007-12-29
6 *摘要: 24c02外存操作声明文件
7 ************************************************************/
8
9 #include <reg52.h>
10 extern void Delay(long int time);
11
12 sbit scl=P2^3; /*24c02时钟控制线*/
13 sbit sda=P2^4; /*24c02数据传输线*/
14
15 char x24c02_read(char address); /*从24c02的address地址读取一个数据并返回*/
16 void x24c02_write(char address,char info);/*向24c02的address地址写入字符info*/
17 void x24c02_init(); /*24c02初始化*/
18
19 void flash(); /*数据写入时控制发光二极管闪烁*/
20 void start(); /*I2C总线协议,数据开始*/
21 void stop(); /*I2C总线协议,数据结束*/
22 void writex(char j); /*向I2C总线写入一个数据*/
23 char readx(); /*从I2C总线读出一个数据*/
24 void clock(); /*等待周期*/
25
26 /*调用写入与读出程序库*/
27 void write_uint_to_24c02(char address,unsigned int date); /*向address写入一个无符号整形*/
28 void write_int_to_24c02(char address,int date); /*向address写入一个整形*/
29 void write_string_to_24c02(char address,char *date,char lens); /*向address写入一个字符串*/
30
31 unsigned int read_uint_form_24c02(char address); /*从address读出一个无符号整形*/
32 int read_int_form_24c02(char address); /*从address读出一个无符号整形*/
33 void read_string_form_24c02(char address,char *date,char lens); /*从address读出一个无符号整形*/
34
35 void flash()
36 {
37 1 /*等待闪烁
38 1 DOG=~DOG;
39 1 */
40 1 }
41 /*24c02初始化程序*/
42 void x24c02_init()
43 {
44 1 scl=1;
45 1 flash();
46 1 sda=1;
47 1 flash();
48 1 }
49
50 void start()
51 {
52 1 sda=1;
53 1 flash();
54 1 scl=1;
55 1 flash();
C51 COMPILER V8.02 STC_CONTROL_24C02 12/29/2007 12:56:55 PAGE 2
56 1 sda=0;
57 1 flash();
58 1 scl=0;
59 1 flash();
60 1 }
61
62 void stop()
63 {
64 1 sda=0;
65 1 flash();
66 1 scl=1;
67 1 flash();
68 1 sda=1;
69 1 flash();
70 1 }
71
72 void writex(char j)
73 {
74 1 char i,temp;
75 1 temp=j;
76 1 for (i=0;i<8;i++)/*分拆字节传输*/
77 1 {
78 2 temp=temp<<1;
79 2 scl=0;
80 2 flash();
81 2 sda=CY;
82 2 flash();
83 2 scl=1;
84 2 flash();
85 2 }
86 1 scl=0;
87 1 flash();
88 1 sda=1;
89 1 flash();
90 1 }
91 char readx()
92 {
93 1 char i,j,k=0;
94 1 scl=0;
95 1 flash();
96 1 sda=1;
97 1 for(i=0;i<8;i++)
98 1 {
99 2 flash();
100 2 scl=1;
101 2 flash();
102 2 if (sda==1)
103 2 {
104 3 j=1;
105 3 }
106 2 else
107 2 {
108 3 j=0;
109 3 }
110 2 k=(k<<1)|j;
111 2 scl=0;
112 2 }
113 1 flash();
114 1 return(k);
115 1 }
116 void clock()
117 {
C51 COMPILER V8.02 STC_CONTROL_24C02 12/29/2007 12:56:55 PAGE 3
118 1 char i=0;
119 1 scl=1;
120 1 flash();
121 1 while((sda==1)&&(i<255))
122 1 {
123 2 i++;
124 2 }
125 1 scl=0;
126 1 flash();
127 1 }
128
129 char x24c02_read(char address)
130 {
131 1 char i;
132 1 start();
133 1 writex(0xa0);
134 1 clock();
135 1 writex(address);
136 1 clock();
137 1 start();
138 1 writex(0xa1);
139 1 clock();
140 1 i=readx();
141 1 stop();
142 1 Delay(10);
143 1 return(i);
144 1 }
145 void x24c02_write(char address,char info)
146 {
147 1 EA=0;
148 1 start();
149 1 writex(0xa0);
150 1 clock();
151 1 writex(address);
152 1 clock();
153 1 writex(info);
154 1 clock();
155 1 stop();
156 1 EA=1;
157 1 Delay(50);
158 1 }
159
160 void write_uint_to_24c02(char address,unsigned int date) /*向address写入一个无符号整形*/
161 {
162 1 char byte_to_24c02;
163 1 byte_to_24c02=date;
164 1 x24c02_write(address,byte_to_24c02);
165 1 Delay(30);
166 1 byte_to_24c02=date>>8;
167 1 x24c02_write(address+1,byte_to_24c02);
168 1 }
169
170 void write_int_to_24c02(char address,int date) /*向address写入一个整形*/
171 {
172 1 char byte_to_24c02;
173 1 byte_to_24c02=date;
174 1 x24c02_write(address,byte_to_24c02);
175 1 Delay(30);
176 1 byte_to_24c02=date>>8;
177 1 x24c02_write(address+1,byte_to_24c02);
178 1 }
179 void write_string_to_24c02(char address,char *date,char lens) /*向address写入一个字符串*/
C51 COMPILER V8.02 STC_CONTROL_24C02 12/29/2007 12:56:55 PAGE 4
180 {
181 1 char i,byte_to_24c02;
182 1 for(i=0;i<lens;i++)
183 1 {
184 2 byte_to_24c02=*date;
185 2 x24c02_write(address+i,byte_to_24c02);
186 2 date++;
187 2 }
188 1 }
189
190 unsigned int read_uint_form_24c02(char address) /*从address读出一个无符号整形*/
191 {
192 1 unsigned int return_value;
193 1 char byte_from_24c02;
194 1 byte_from_24c02=x24c02_read(address+1);
195 1 return_value=byte_from_24c02;
196 1 byte_from_24c02=x24c02_read(address);
197 1 return_value<<=8;
198 1 return_value+=byte_from_24c02;
199 1 return return_value;
200 1 }
201 int read_int_form_24c02(char address) /*从address读出一个无符号整形*/
202 {
203 1 int return_value;
204 1 char byte_from_24c02;
205 1 byte_from_24c02=x24c02_read(address+1);
206 1 return_value=byte_from_24c02;
207 1 byte_from_24c02=x24c02_read(address);
208 1 return_value<<=8;
209 1 return_value+=byte_from_24c02;
210 1 return return_value;
211 1 }
212 void read_string_form_24c02(char address,char *date,char lens) /*从address读出一个无符号整形*/
213 {
214 1 char i;
215 1 for(i=0;i<lens;i++)
216 1 {
217 2 *date=x24c02_read(address+i);
218 2 date++;
219 2 }
220 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 583 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- 26
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -