📄 iic.lst
字号:
C51 COMPILER V6.23a IIC 09/12/2006 06:49:11 PAGE 1
C51 COMPILER V6.23a, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN IIC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IIC.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <stdio.h>
2 #include <reg51.h>
3 #include <absacc.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7 #define ulong unsigned long
8
9 sbit scl=P3^0; //24c02 SCL
10 sbit sda=P3^1; //24c02 SDA
11
12 uchar code disptable[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01, //0,1,2,3,4,5,6,7,8
13 0x09,0x11,0xc1,0x63,0x85,0x61,0x71,0xff}; //9,null
14 sbit P20=P2^0;
15 sbit P21=P2^1;
16 sbit P22=P2^2;
17 sbit P23=P2^3;
18 sbit P24=P2^4;
19 sbit P25=P2^5;
20
21 bdata uchar flag;
22 sbit flag0=flag^0;
23 sbit flag1=flag^1;
24 sbit flag2=flag^2;
25 sbit flag3=flag^3;
26 sbit flag4=flag^4;
27 sbit flag5=flag^5;
28 sbit flag6=flag^6;
29 sbit flag7=flag^7;
30
31 uchar x24c02_read(uchar address); //从24c02的地址address中读取一个字节数据
32 void x24c02_write(uchar address,uchar info);//向24c02的address地址中写入一字节数据info
33
34 void x24c02_init(); //24c02初始化子程序
35 void delay1(uchar x);
36 void x24c01_init();
37 void start();
38 void stop();
39 void writex(uchar j);
40 uchar readx();
41 void clock();
42 uchar i;
43 void delay(uchar x) { /*--延时子程序--*/
44 1 uchar y;
45 1 while(x-->0) {
46 2 for(y=0;y<125;y++) {;}
47 2 }
48 1 }
49 void x24c02_init()
50 {
51 1 scl=1; sda=1;
52 1 }
53 void start()
54 {
55 1 sda=1;
C51 COMPILER V6.23a IIC 09/12/2006 06:49:11 PAGE 2
56 1 scl=1;
57 1 sda=0;
58 1 scl=0;
59 1 }
60 void stop()
61 {
62 1 scl=0;
63 1 sda=0;
64 1 scl=1;
65 1 sda=1;
66 1 }
67 void writex(uchar j)
68 {
69 1 uchar i,temp;
70 1 temp=j;
71 1 for (i=0;i<8;i++)
72 1 {
73 2 sda=(bit)(temp&0x80);
74 2 scl=1;
75 2 scl=0;
76 2 temp=temp<<1;
77 2 }
78 1 scl=0;
79 1 sda=1;
80 1 }
81 uchar readx()
82 {
83 1 uchar i,j,k=0;
84 1 scl=0;
85 1 sda=1;
86 1 for (i=0;i<8;i++)
87 1 {
88 2 scl=1;
89 2 if (sda==1) j=1;
90 2 else j=0;
91 2 k=(k<<1)|j;
92 2 scl=0;
93 2 }
94 1 return(k);
95 1 }
96 void clock()
97 {
98 1 uchar i=0;
99 1 sda=1;
100 1 scl=1;
101 1 i=sda;
102 1 scl=0;
103 1 }
104 uchar x24c02_read(uchar address)
105 {
106 1 uchar i;
107 1 start();
108 1 writex(0xa0);
109 1 clock();
110 1 writex(address);
111 1 clock();
112 1 start();
113 1 writex(0xa1);
114 1 clock();
115 1 i=readx();
116 1 stop();
117 1 delay(5);
C51 COMPILER V6.23a IIC 09/12/2006 06:49:11 PAGE 3
118 1 return(i);
119 1 }
120 void x24c02_write(uchar address,uchar info)
121 {
122 1 EA=0;
123 1 start();
124 1 writex(0xa0);
125 1 clock();
126 1 writex(address);
127 1 clock();
128 1 writex(info);
129 1 clock();
130 1 stop();
131 1 EA=1;
132 1 delay(5);
133 1 }
134 void disp(void)
135 {
136 1 P0=0x25;
137 1 P20=1;
138 1 delay(5);
139 1 P20=0;
140 1 P0=0x99;
141 1 P21=1;
142 1 delay(5);
143 1 P21=0; //显示24
144 1 P0=0xff;
145 1 P22=1;
146 1 delay(5);
147 1 P22=0;
148 1 P0=0xff;
149 1 P23=1;
150 1 delay(5);
151 1 P23=0;
152 1 P0=disptable[i/16];
153 1 P24=1;
154 1 delay(5);
155 1 P24=0;
156 1 P0=disptable[i%16];
157 1 P25=1;
158 1 delay(5);
159 1 P25=0;
160 1 }
161 void disperr(void)
162 {
163 1 P0=0x25;
164 1 P20=1;
165 1 delay(5);
166 1 P20=0;
167 1 P0=0x99;
168 1 P21=1;
169 1 delay(5);
170 1 P21=0; //显示24err
171 1 P0=0xff;
172 1 P22=1;
173 1 delay(5);
174 1 P22=0;
175 1 P0=0x61;
176 1 P23=1;
177 1 delay(5);
178 1 P23=0;
179 1 P0=0xf1;
C51 COMPILER V6.23a IIC 09/12/2006 06:49:11 PAGE 4
180 1 P24=1;
181 1 delay(5);
182 1 P24=0;
183 1 P0=0xf5;
184 1 P25=1;
185 1 delay(5);
186 1 P25=0;
187 1 }
188 void dispgood(void)
189 {
190 1 P0=0x25;
191 1 P20=1;
192 1 delay(5);
193 1 P20=0;
194 1 P0=0x99;
195 1 P21=1;
196 1 delay(5);
197 1 P21=0; //显示24 good
198 1 P0=0x09;
199 1 P22=1;
200 1 delay(5);
201 1 P22=0;
202 1 P0=0x03;
203 1 P23=1;
204 1 delay(5);
205 1 P23=0;
206 1 P0=0x03;
207 1 P24=1;
208 1 delay(5);
209 1 P24=0;
210 1 P0=0x85;
211 1 P25=1;
212 1 delay(5);
213 1 P25=0;
214 1 }
215 //====================================================================//
216 void main ()
217 {
218 1 uchar data addr,dat,j;
219 1 x24c02_init();
220 1 flag0=1;flag1=0;
221 1 addr=0;
222 1 dat=0x55;
223 1 while(flag0)
224 1 {
225 2 x24c02_write(addr,dat);
226 2 i=dat;
227 2 for(j=0;j<20;j++)
228 2 disp();
229 2 j=x24c02_read(addr);
230 2 if(j!=dat)flag1=1;
231 2 addr++;
232 2 dat++;
233 2 if(addr==0x11)flag0=0;
234 2 }
235 1 if(flag1){
236 2 i=0;
237 2 while(1)disperr();
238 2 }
239 1 else{
240 2 i=255;
241 2 while(1){
C51 COMPILER V6.23a IIC 09/12/2006 06:49:11 PAGE 5
242 3 dispgood();
243 3 }
244 2 }
245 1 //x24c02_init();
246 1 }
247 //===================================================================//
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 451 ----
CONSTANT SIZE = 17 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
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 + -