?? cat1161.lst
字號:
159 1 SCL=0;
160 1 }
161
162 /****************************************************************************/
163 /* 函數名:iic_receive_byte */
164 /* 功 能:MCU從iic設備接收一個字節 */
165 /* 作 者:spot */
166 /* 輸 入:無 */
167 /* 輸 出:ddata 接收數據 */
168 /* */
169 /* 歷史記錄: */
170 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
171 /****************************************************************************/
172 u_char iic_receive_byte(void)
173 {
174 1 u_char i=8;
175 1 u_char ddata=0;
176 1
177 1 SDA=1;
178 1 while(i--)
179 1 {
C51 COMPILER V7.09 CAT1161 10/09/2005 20:45:32 PAGE 4
180 2 ddata <<= 1;
181 2 SCL=0;
182 2 iic_wait();
183 2 SCL=1;
184 2 iic_wait();
185 2 ddata |= SDA;
186 2 }
187 1 SCL=0;
188 1 return ddata;
189 1 }
190
191 /****************************************************************************/
192 /* 函數名:write_iic_data */
193 /* 功 能:向iic設備寫入N個字節 */
194 /* 作 者:spot */
195 /* 輸 入: */
196 /* write_data 存放寫入字節的數組 */
197 /* address 指定從address處開始寫入 */
198 /* num 寫入的字節數 */
199 /* */
200 /* 輸 出:無 */
201 /* */
202 /* 歷史記錄: */
203 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
204 /****************************************************************************/
205 void write_iic_data(u_char write_data[], u_char address, u_char num)
206 {
207 1 u_char n;
208 1
209 1 iic_start();
210 1 iic_send_byte(0xa0);
211 1 iic_wait_ack();
212 1 iic_send_byte(address);
213 1 iic_wait_ack();
214 1
215 1 for(n=0; n<num; n++)
216 1 {
217 2 iic_send_byte(write_data[n]);
218 2 iic_wait_ack();
219 2 }
220 1
221 1 iic_stop();
222 1 }
223
224 /****************************************************************************/
225 /* 函數名:read_iic_data */
226 /* 功 能:從iic設備讀取N個字節 */
227 /* 作 者:spot */
228 /* 輸 入: */
229 /* read_data 存放讀取字節的數組 */
230 /* address 指定從address處開始讀取 */
231 /* num 讀取的字節數 */
232 /* */
233 /* 輸 出:無 */
234 /* */
235 /* 歷史記錄: */
236 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
237 /****************************************************************************/
238 void read_iic_data(u_char read_data[], u_char address, u_char num)
239 {
240 1 u_char n;
241 1
C51 COMPILER V7.09 CAT1161 10/09/2005 20:45:32 PAGE 5
242 1 iic_start();
243 1 iic_send_byte(0xa0);
244 1 iic_wait_ack();
245 1 iic_send_byte(address);
246 1 iic_wait_ack();
247 1
248 1 iic_start();
249 1 iic_send_byte(0xa1);
250 1 iic_wait_ack();
251 1
252 1 for (n=0; n<num; n++)
253 1 {
254 2 read_data[n] = iic_receive_byte();
255 2
256 2 if (n != (num - 1)) /* 最后一個數據不應答 */
257 2 {
258 3 iic_ack();
259 3 }
260 2 }
261 1
262 1 iic_no_ack();
263 1 iic_stop();
264 1 }
265
C51 COMPILER V7.09 CAT1161 10/09/2005 20:45:32 PAGE 6
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
iic_no_ack . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
u_long . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
u_short. . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
_read_iic_data . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
read_data. . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
address. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
num. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
iic_receive_byte . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
ddata. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
_write_iic_data. . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
write_data . . . . . . . . . . . . . AUTO DATA PTR 0000H 3
address. . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
num. . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0004H 1
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0004H 1
u_int. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
_iic_send_byte . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
sbyte. . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
i. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0006H 1
iic_ack. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
iic_start. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
iic_wait . . . . . . . . . . . . . . . PUBLIC CODE PROC 0007H -----
SDA. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0085H 1
iic_wait_ack . . . . . . . . . . . . . PUBLIC CODE PROC 0012H -----
errtime. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
iic_stop . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
SCL. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0084H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
u_char . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 256 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
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 + -