?? cat1161.lst
字號:
C51 COMPILER V7.09 CAT1161 10/09/2005 20:45:32 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE CAT1161
OBJECT MODULE PLACED IN E:\C51PRJ\APPNEW\CAT1161.OBJ
COMPILER INVOKED BY: d:\keil\c51\BIN\C51.EXE E:\C51PRJ\APPNEW\CAT1161.C DB SB OE
line level source
1 /****************************************************************************/
2 /* */
3 /* Copyright (c) 2005, 老樹工作室 */
4 /* All rights reserved. */
5 /* */
6 /* http://www.saintone.net Email:hxm0902@163.com */
7 /* QQ:112431149 Tel:010-62966630 */
8 /* */
9 /****************************************************************************/
10 /****************************************************************************/
11 /* 文件名:cat1161.c */
12 /* 版 本:Version 1.0 */
13 /* 描 述:cat1161的eeprom讀寫試驗代碼 */
14 /* 作 者:spot */
15 /* 函 數: */
16 /* iic_wait */
17 /* iic_start */
18 /* iic_stop */
19 /* iic_ack */
20 /* iic_no_ack */
21 /* iic_wait_ack */
22 /* iic_send_byte */
23 /* iic_receive_byte */
24 /* */
25 /* 歷史記錄: */
26 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
27 /****************************************************************************/
28 #include <reg52.h>
29 #include <absacc.h>
30 #include <intrins.h>
31 #include "../includes/types.h"
32
33 sbit SDA = P0^5; /* iic數據傳送位 */
34 sbit SCL = P0^4; /* iic時鐘控制位 */
35
36 /* 函數聲明 */
37 void iic_wait(void); /* iic延時 */
38 void iic_start(void); /* 開啟iic總線 */
39 void iic_stop(void); /* 關閉iic總線 */
40 void iic_ack(void); /* 發送ACK信號 */
41 void iic_no_ack(void); /* 發送NOACK信號 */
42 bit iic_wait_ack(void); /* 等待ACK信號 */
43 void iic_send_byte(u_char demand); /* MCU向iic設備發送一個字節 */
44 u_char iic_receive_byte(void); /* MCU從iic設備接收一個字節 */
45 void write_iic_data(u_char write_data[], u_char address, u_char num); /* 向iic設備寫入N個字節 */
46 void read_iic_data(u_char read_data[], u_char address, u_char num); /* 從iic設備讀取N個字節 */
47 /* 聲明結束 */
48
49 /* iic延時 */
50 void iic_wait(void)
51 {
52 1 _nop_();
53 1 _nop_();
54 1 _nop_();
55 1 _nop_();
C51 COMPILER V7.09 CAT1161 10/09/2005 20:45:32 PAGE 2
56 1 _nop_();
57 1 _nop_();
58 1 }
59
60 /* 開啟iic總線 */
61 void iic_start(void)
62 {
63 1 SDA = 1;
64 1 SCL = 1;
65 1 iic_wait();
66 1 SDA = 0;
67 1 iic_wait();
68 1 SCL = 0;
69 1 }
70
71 /* 關閉iic總線 */
72 void iic_stop(void)
73 {
74 1 SDA=0;
75 1 SCL=0;
76 1 iic_wait();
77 1 SCL=1;
78 1 iic_wait();
79 1 SDA=1;
80 1 }
81
82 /* 發送ACK信號 */
83 void iic_ack(void)
84 {
85 1 SDA=0;
86 1 iic_wait();
87 1 SCL=1;
88 1 iic_wait();
89 1 SCL=0;
90 1 }
91
92 /* 發送NOACK信號 */
93 void iic_no_ack(void)
94 {
95 1 SDA=1;
96 1 iic_wait();
97 1 SCL=1;
98 1 iic_wait();
99 1 SCL=0;
100 1 }
101
102 /****************************************************************************/
103 /* 函數名:iic_wait_ack */
104 /* 功 能:等待ACK信號 */
105 /* 作 者:spot */
106 /* 輸 入:無 */
107 /* 輸 出:1-ACK 0-ERROR */
108 /* */
109 /* 歷史記錄: */
110 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
111 /****************************************************************************/
112 bit iic_wait_ack(void)
113 {
114 1 u_char errtime=255;
115 1
116 1 SDA=1;
117 1 iic_wait();
C51 COMPILER V7.09 CAT1161 10/09/2005 20:45:32 PAGE 3
118 1 SCL=1;
119 1 iic_wait();
120 1
121 1 while(SDA)
122 1 {
123 2 errtime--;
124 2 if(!errtime)
125 2 return 0;
126 2 }
127 1
128 1 SCL=0;
129 1 return 1;
130 1 }
131
132 /****************************************************************************/
133 /* 函數名:iic_send_byte */
134 /* 功 能:MCU向iic設備發送一個字節 */
135 /* 作 者:spot */
136 /* 輸 入: */
137 /* sbyte 待發送的字節數據 */
138 /* */
139 /* 輸 出:無 */
140 /* */
141 /* 歷史記錄: */
142 /* spot 2005-06-20 Creat Inital version. (Version 1.0) */
143 /****************************************************************************/
144 void iic_send_byte(u_char sbyte)
145 {
146 1 u_char i = 8;
147 1
148 1 while(i--)
149 1 {
150 2 SCL = 0;
151 2 _nop_();
152 2 SDA = (bit)(sbyte&0x80);
153 2 sbyte <<= 1;
154 2 iic_wait();
155 2 SCL = 1;
156 2 iic_wait();
157 2 }
158 1
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -