📄 iic.lst
字号:
C51 COMPILER V7.50 IIC 07/08/2006 11:59:22 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN IIC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE IIC.C LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "Publicdef.h"
2 #include "publicfunction.h"
3
4 BYTE IIC_Type;
5
6 BIT SDA_IN(void)
7 {
8 1 switch (IIC_Type)
9 1 {
10 2 case IIC_AT24CXX_R:
11 2 return Pin_IIC_Sda_AT24CXX_R;
12 2 case IIC_AT24CXX_D:
13 2 return Pin_IIC_Sda_AT24CXX_D;
14 2 }
15 1 }
16
17 BIT SCL_IN(void)
18 {
19 1 switch (IIC_Type)
20 1 {
21 2 case IIC_AT24CXX_R:
22 2 return Pin_IIC_Scl_AT24CXX_R;
23 2 case IIC_AT24CXX_D:
24 2 return Pin_IIC_Scl_AT24CXX_D;
25 2 }
26 1 }
27
28 void SDA_HIGH(void)
29 {
30 1 switch (IIC_Type)
31 1 {
32 2 case IIC_AT24CXX_R:
33 2 Pin_IIC_Sda_AT24CXX_R=H_LEVEL;
34 2 break;
35 2 case IIC_AT24CXX_D:
36 2 Pin_IIC_Sda_AT24CXX_D=H_LEVEL;
37 2 break;
38 2 }
39 1 }
40 void SDA_LOW(void)
41 {
42 1 switch (IIC_Type)
43 1 {
44 2 case IIC_AT24CXX_R:
45 2 Pin_IIC_Sda_AT24CXX_R=L_LEVEL;
46 2 break;
47 2 case IIC_AT24CXX_D:
48 2 Pin_IIC_Sda_AT24CXX_D=L_LEVEL;
49 2 break;
50 2 }
51 1 }
52 void SCL_HIGH(void)
53 {
54 1 switch (IIC_Type)
55 1 {
C51 COMPILER V7.50 IIC 07/08/2006 11:59:22 PAGE 2
56 2 case IIC_AT24CXX_R:
57 2 Pin_IIC_Scl_AT24CXX_R=H_LEVEL;
58 2 break;
59 2 case IIC_AT24CXX_D:
60 2 Pin_IIC_Scl_AT24CXX_D=H_LEVEL;
61 2 break;
62 2 }
63 1 }
64 void SCL_LOW(void)
65 {
66 1 switch (IIC_Type)
67 1 {
68 2 case IIC_AT24CXX_R:
69 2 Pin_IIC_Scl_AT24CXX_R=L_LEVEL;
70 2 break;
71 2 case IIC_AT24CXX_D:
72 2 Pin_IIC_Scl_AT24CXX_D=L_LEVEL;
73 2 break;
74 2 }
75 1 }
76 void IIC_Start(void)
77 {
78 1 SDA_HIGH();
79 1 SCL_HIGH();
80 1 IIC_DELAY();
81 1 SDA_LOW();
82 1 SCL_LOW();
83 1 }
84
85 void IIC_Stop(void)
86 {
87 1 SCL_HIGH();
88 1 IIC_DELAY();
89 1 SDA_HIGH();
90 1 }
91
92 void IIC_Ack(BIT Ack)
93 {
94 1 if (Ack)
95 1 SDA_HIGH();
96 1 else
97 1 SDA_LOW();
98 1 SCL_HIGH();
99 1 IIC_DELAY();
100 1 SCL_LOW();
101 1 SDA_LOW();
102 1 }
103
104 BIT IIC_SendByte(BYTE IIC_Data)
105 {
106 1 BYTE DATA loop;
107 1 BIT DATA Error=0;
108 1 for (loop=0;loop<=7;loop++)
109 1 {
110 2 if (IIC_Data&(0x80>>loop))
111 2 SDA_HIGH();
112 2 else
113 2 SDA_LOW();
114 2 SCL_HIGH();
115 2 IIC_DELAY();
116 2 SCL_LOW();
117 2 IIC_DELAY();
C51 COMPILER V7.50 IIC 07/08/2006 11:59:22 PAGE 3
118 2 }
119 1 SDA_HIGH();
120 1 SCL_HIGH();
121 1 IIC_DELAY();
122 1 if (SDA_IN()||(SCL_IN()==0))
123 1 Error=btIIC_ERROR;
124 1 SCL_LOW();
125 1 SDA_LOW();
126 1 return Error;
127 1 }
128
129 void IIC_ReceiveByte(BYTE *ptIIC_Data)
130 {
131 1 BYTE loop;
132 1
133 1 *ptIIC_Data=0;
134 1 SDA_HIGH();
135 1 for (loop=0;(loop<=7);loop++)
136 1 {
137 2 SCL_LOW();
138 2 IIC_DELAY();
139 2 SCL_HIGH();
140 2 IIC_DELAY();
141 2 if (SDA_IN())
142 2 *ptIIC_Data|=(0x80>>loop);
143 2 }
144 1 SCL_LOW();
145 1 SDA_LOW();
146 1 }
147
148 BIT IIC_Write(BYTE Addr,BYTE SubAddr,BYTE Number)
149 {
150 1 BYTE DATA loop;
151 1 BIT DATA Error=btIIC_RIGHT;
152 1 IIC_Start();
153 1 if (IIC_SendByte(Addr))
154 1 Error=btIIC_ERROR;
155 1 if (IIC_SendByte(SubAddr))
156 1 Error=btIIC_ERROR;
157 1 for (loop=0;loop<Number;loop++)
158 1 {
159 2 if (IIC_SendByte(*ptGpBuffer++))
160 2 Error=btIIC_ERROR;
161 2 }
162 1 IIC_Stop();
163 1 return Error;
164 1 }
165
166 BIT IIC_WriteW(BYTE Addr,WORD SubAddr,BYTE Number)
167 {
168 1 BYTE DATA loop;
169 1 BIT DATA Error=btIIC_RIGHT;
170 1 IIC_Start();
171 1 if (IIC_SendByte(Addr))
172 1 Error=btIIC_ERROR;
173 1 if (IIC_SendByte(Hi_Byte(SubAddr)))
174 1 Error=btIIC_ERROR;
175 1 if (IIC_SendByte(Lo_Byte(SubAddr)))
176 1 Error=btIIC_ERROR;
177 1 for (loop=0;loop<Number;loop++)
178 1 {
179 2 if (IIC_SendByte(*ptGpBuffer++))
C51 COMPILER V7.50 IIC 07/08/2006 11:59:22 PAGE 4
180 2 Error=btIIC_ERROR;
181 2 }
182 1 IIC_Stop();
183 1 return Error;
184 1 }
185
186 BIT IIC_Read(BYTE Addr,BYTE SubAddr,BYTE Number)
187 {
188 1 BIT DATA Error=0;
189 1 BYTE DATA loop;
190 1 IIC_Start();
191 1 if (IIC_SendByte(Addr))
192 1 Error=btIIC_ERROR;
193 1 if (IIC_SendByte(SubAddr))
194 1 Error=btIIC_ERROR;
195 1 IIC_Start();
196 1 if (IIC_SendByte(Addr+1))
197 1 Error=btIIC_ERROR;
198 1 for (loop=0;loop<Number;loop++)
199 1 {
200 2 IIC_ReceiveByte(ptGpBuffer++);
201 2 IIC_Ack(loop/(Number-1));
202 2 }
203 1 IIC_Stop();
204 1 return Error;
205 1 }
206
207 BIT IIC_ReadW(BYTE Addr,WORD SubAddr,BYTE Number)
208 {
209 1 BIT DATA Error=0;
210 1 BYTE DATA loop;
211 1 IIC_Start();
212 1 if (IIC_SendByte(Addr))
213 1 Error=btIIC_ERROR;
214 1 if (IIC_SendByte(Hi_Byte(SubAddr)))
215 1 Error=btIIC_ERROR;
216 1 if (IIC_SendByte(Lo_Byte(SubAddr)))
217 1 Error=btIIC_ERROR;
218 1 IIC_Start();
219 1 if (IIC_SendByte(Addr+1))
220 1 Error=btIIC_ERROR;
221 1 for (loop=0;loop<Number;loop++)
222 1 {
223 2 IIC_ReceiveByte(ptGpBuffer++);
224 2 IIC_Ack(loop/(Number-1));
225 2 }
226 1 IIC_Stop();
227 1 return Error;
228 1 }
229
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 716 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 1 9
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- 6
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -