📄 iicbusc.lst
字号:
C51 COMPILER V7.50 IICBUSC 04/07/2006 23:20:56 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE IICBUSC
OBJECT MODULE PLACED IN IICBUSC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IICBUSC.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "52init.h"
2 #define iicnop 2
3 bit bACK;
4 sbit pSDA=P3^7;
5 sbit pSCL=P3^6;
6
7 void iicdelay(uchar delay_num) //22.1184 the loop time is 0.543us
8 {
9 1 uchar i,k; //delay_num 8us/num
10 1 for(i=delay_num;i>0;i--)
11 1 {
12 2 for(k=15;k>0;k--)
13 2 {;}
14 2 }
15 1 }
16 void iicStart()
17 {
18 1 uchar i;
19 1 pSDA=1;
20 1 pSCL=1;
21 1 while(pSCL==0){;}
22 1 for(i=0;i<iicnop;i++){_nop_();}
23 1 pSDA=0;
24 1 for(i=0;i<iicnop;i++){_nop_();}
25 1 pSCL=0;
26 1 }
27 void iicStop()
28 {
29 1 uchar i;
30 1 pSDA=0;
31 1 pSCL=1;
32 1 while(pSCL==0){;}
33 1 pSDA=1;
34 1 for(i=0;i<iicnop;i++){_nop_();}
35 1 for(i=0;i<iicnop;i++){_nop_();}
36 1 pSCL=0;
37 1 }
38 void iicMack()
39 {
40 1 uchar i;
41 1 pSDA=0;
42 1 pSCL=1;
43 1 for(i=0;i<iicnop;i++){_nop_();}
44 1 pSCL=0;
45 1 pSDA=1;
46 1 }
47 void iicMnack()
48 {
49 1 uchar i;
50 1 pSDA=1;
51 1 pSCL=1;
52 1 for(i=0;i<iicnop;i++){_nop_();}
53 1 pSCL=0;
54 1 pSDA=0;
55 1 }
C51 COMPILER V7.50 IICBUSC 04/07/2006 23:20:56 PAGE 2
56 void iicCack()
57 {
58 1 uchar i;
59 1 pSDA=1;
60 1 pSCL=1;
61 1 bACK=0;
62 1 if(pSDA==0)
63 1 {
64 2 pSCL=0;
65 2 for(i=0;i<iicnop;i++){_nop_();}
66 2 }
67 1 else
68 1 {
69 2 bACK=1;
70 2 pSCL=0;
71 2 for(i=0;i<iicnop;i++){_nop_();}
72 2 }
73 1 }
74 void iicwrbyt0()
75 {
76 1 uchar i;
77 1 pSDA=0;
78 1 pSCL=1;
79 1 for(i=0;i<iicnop;i++){_nop_();}
80 1 pSCL=0;
81 1 }
82 void iicwrbyt1()
83 {
84 1 uchar i;
85 1 pSDA=1;
86 1 pSCL=1;
87 1 for(i=0;i<iicnop;i++){_nop_();}
88 1 pSCL=0;
89 1 pSDA=0;
90 1 }
91 void iicwrbyt(uchar WrData)
92 {
93 1 uchar i,j;
94 1 if((WrData&0x80)>0)
95 1 {pSDA=1;}
96 1 else
97 1 {pSDA=0;}
98 1 pSCL=1;
99 1 while(pSCL==0){;}
100 1 for(i=0;i<iicnop;i++){_nop_();}
101 1 pSCL=0;
102 1 pSDA=0;
103 1 WrData=_crol_(WrData,1);
104 1 for(j=1;j<8;j++)
105 1 {
106 2 if((WrData&0x80)>0)
107 2 {iicwrbyt1();}
108 2 else
109 2 {iicwrbyt0();}
110 2 WrData=_crol_(WrData,1);
111 2 }
112 1 }
113 uchar iicrdbyt()
114 {
115 1 uchar RdData=0xff,j;
116 1 for(j=0;j<8;j++)
117 1 {
C51 COMPILER V7.50 IICBUSC 04/07/2006 23:20:56 PAGE 3
118 2 pSDA=1;
119 2 pSCL=1;
120 2 if(pSDA==0)
121 2 {
122 3 RdData=RdData&0x7f;
123 3 RdData=_crol_(RdData,1);
124 3 pSCL=0;
125 3 }
126 2 else
127 2 {
128 3 RdData=RdData|0x80;
129 3 RdData=_crol_(RdData,1);
130 3 pSCL=0;
131 3 }
132 2 }
133 1 return(RdData);
134 1 }
135
136 void iic24cxxwr(uchar WrAddr,uchar WrData)
137 {
138 1 do{
139 2 do{
140 3 do{
141 4 iicStart();
142 4 iicwrbyt(0xa0);
143 4 iicCack();
144 4 }while(bACK==1);
145 3 iicwrbyt(WrAddr);
146 3 iicCack();
147 3 }while(bACK==1);
148 2 iicwrbyt(WrData);
149 2 iicCack();
150 2 }while(bACK==1);
151 1 iicStop();
152 1 //LcdPrintf("debug position \n");
153 1 }
154 uchar iic24cxxrd(uchar RdAddr)
155 {
156 1 uchar temp;
157 1 do{
158 2 do{
159 3 do{
160 4 iicStart();
161 4 iicwrbyt(0xa0);
162 4 iicCack();
163 4 }while(bACK==1);
164 3 iicwrbyt(RdAddr);
165 3 iicCack();
166 3 }while(bACK==1);
167 2 iicStart();
168 2 iicwrbyt(0xa1);
169 2 iicCack();
170 2 }while(bACK==1);
171 1 temp=iicrdbyt();
172 1 iicMnack();
173 1 iicStop();
174 1 return(temp);
175 1 }
176 void iic4221wr(uchar WrAddr,uchar WrData)
177 {
178 1 do{
179 2 do{
C51 COMPILER V7.50 IICBUSC 04/07/2006 23:20:56 PAGE 4
180 3 do{
181 4 iicStart();
182 4 iicwrbyt(0x20);
183 4 iicCack();
184 4 }while(bACK==1);
185 3 iicwrbyt(WrAddr);
186 3 iicCack();
187 3 }while(bACK==1);
188 2 iicwrbyt(WrData);
189 2 iicCack();
190 2 }while(bACK==1);
191 1 iicStop();
192 1 }
193 uchar iic4221rd(uchar RdAddr)
194 {
195 1 uchar temp;
196 1 do{
197 2 do{
198 3 do{
199 4 iicStart();
200 4 iicwrbyt(0x20);
201 4 iicCack();
202 4 }while(bACK==1);
203 3 iicwrbyt(RdAddr);
204 3 iicCack();
205 3 }while(bACK==1);
206 2 iicStart();
207 2 iicwrbyt(0x21);
208 2 iicCack();
209 2 }while(bACK==1);
210 1 temp=iicrdbyt();
211 1 iicStop();
212 1 return(temp);
213 1 }
214 void iic4221wrb(uchar WrAddr,uchar WrData)
215 {
216 1 do{
217 2 do{
218 3 do{
219 4 iicStart();
220 4 iicwrbyt(0x22);
221 4 iicCack();
222 4 }while(bACK==1);
223 3 iicwrbyt(WrAddr);
224 3 iicCack();
225 3 }while(bACK==1);
226 2 iicwrbyt(WrData);
227 2 iicCack();
228 2 }while(bACK==1);
229 1 iicStop();
230 1 }
231 uchar iic4221rdb(uchar RdAddr)
232 {
233 1 uchar temp;
234 1 do{
235 2 do{
236 3 do{
237 4 iicStart();
238 4 iicwrbyt(0x22);
239 4 iicCack();
240 4 }while(bACK==1);
241 3 iicwrbyt(RdAddr);
C51 COMPILER V7.50 IICBUSC 04/07/2006 23:20:56 PAGE 5
242 3 iicCack();
243 3 }while(bACK==1);
244 2 iicStart();
245 2 iicwrbyt(0x23);
246 2 iicCack();
247 2 }while(bACK==1);
248 1 temp=iicrdbyt();
249 1 iicStop();
250 1 return(temp);
251 1 }
252
253
254
255
256
257
258
259
260
261
262
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 546 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -