?? eeprom.lst
字號:
C51 COMPILER V7.50 EEPROM 01/29/2007 19:51:11 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN EEPROM.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE EEPROM.C LARGE OPTIMIZE(SIZE) DEBUG OBJECTEXTEND
line level source
1 /** 修改人:
2 ** 版 本:
3 ** 日 期:
4 ** 描 述:
5 **
6 **--------------當前版本修訂------------------------------------------------------------------------------
7 ** 修改人: 陳明計
8 ** 日 期: 2003年3月26日
9 ** 描 述: 增加注釋
10 **
11 **------------------------------------------------------------------------------------------------------
12 ********************************************************************************************************/
13 //#include "PUMP.h"
14 #include <reg52.h >
15 #include<INTRINS.H>
16 //#define SDA P3_5
17 //#define SCL P3_4
18 #define uchar unsigned char
19 #define uint unsigned int
20 #define TRUE 1
21 #define FALSE 0
22 //#define SDA P3_5;
23 //#define SCL P3_4;
24 sbit SDA= P3^5;
25 sbit SCL = P3^4;
26
27 void delay(void){
28 1 unsigned char def;
29 1 for (def = 0; def < 70; def++ )//降低時鐘頻率延時
30 1 {
31 2 //get_ADC_val(0);
32 2 }
33 1 return ;
34 1 }
35
36 //向24XX發(fā)開始信號
37 //
38 void iicstart(void){
39 1 SDA = 1;
40 1 delay();
41 1 SCL = 1;
42 1 delay();
43 1 SDA = 0; //發(fā)開始信號
44 1 delay();
45 1 SCL = 0;
46 1 delay();
47 1 SDA = 1; //準備發(fā)送或接?
48 1 delay();
49 1 }
50 //********************************************************************************************************
51 //********************************************************************************************************
-*
52 //向24cxx發(fā)停止信號
53 void iicstop(void){
54 1 SDA = 0;
C51 COMPILER V7.50 EEPROM 01/29/2007 19:51:11 PAGE 2
55 1 delay();
56 1 SCL = 1;
57 1 delay();
58 1 SDA = 1;
59 1 delay();
60 1 SCL = 0;
61 1 delay();
62 1 }
63
64 void IICInit(void)
65 {
66 1 SCL = 0;
67 1 delay();
68 1 iicstop();
69 1 }
70
71 //*******************************************************************************************************
72 //*******************************************************************************************************
73 //發(fā)送應(yīng)答信號
74
75 void iicACK(void)
76 {
77 1 SDA = 0;
78 1 delay();
79 1 SCL = 1;
80 1 delay();
81 1 SCL = 0;
82 1 }
83
84 /*********************************************************************************************************
85 ** ????: IIC_NO_ACK
86 ** ????: ??IIC?????
87 ** ? ?: ?
88 ** ? ?: ?
89 ** ????: ?
90 ** ????: ?
91 ********************************************************************************************************/
92 void IIC_NO_ACK(void)
93 {
94 1 SDA = 1;
95 1 delay();
96 1 SCL = 1;
97 1 delay();
98 1 SCL = 0;
99 1
100 1 return;
101 1 }
102
103
104 //********************************************************************************
105 //********************************************************************************
106 //發(fā)送一個字節(jié)
107
108 unsigned char IICSend(char IIC_data)
109 {
110 1 char i;
111 1
112 1 for (i = 0; i < 8; i++)
113 1 {
114 2 IIC_data = IIC_data << 1;
115 2 F0 = SDA = CY;
116 2 SCL = 1;
C51 COMPILER V7.50 EEPROM 01/29/2007 19:51:11 PAGE 3
117 2 // if (F0 != CY)
118 2 // {
119 2 // SCL = 0;
120 2 // return FALSE;
121 2 // } //此處不明原因為什么會錯
122 2 delay();
123 2 SCL = 0;
124 2 }
125 1 SDA = 1;
126 1 delay();
127 1 SCL = 1;
128 1 delay();
129 1 if (SDA == 1)
130 1 {
131 2 SCL = 0;
132 2 return FALSE;
133 2 }
134 1 else
135 1 {
136 2 SCL = 0;
137 2 return TRUE;
138 2 }
139 1 }
140 //********************************************************************************************************
141 //********************************************************************************************************
142 //接收一個字節(jié)
143 char IICReceive(void)
144 {
145 1 char i,r;
146 1
147 1 r = 0;
148 1 SDA = 1;
149 1 delay();
150 1 for (i = 0; i < 8; i++)
151 1 {
152 2 r = r * 2;
153 2 SCL = 1;
154 2 delay();
155 2
156 2 if (SDA == 1)
157 2 {
158 3 r++;
159 3 delay();
160 3 }
161 2 SCL = 0;
162 2 delay();
163 2 }
164 1 return r;
165 1 }
166
167 /*********************************************************************************************************
168 ** 函數(shù)名稱: Cat24WCxxWrite
169 ** 功能描述: 編程Cat24WCxx(僅允許一個任務(wù)可以調(diào)用)
170 ** 輸 入: addr]:外部引腳設(shè)置的地址(將所有Cat24WCXX看成Cat24WC02)
171 ** nbyte:編程字節(jié)數(shù)目
172 ** index:編程起始的地址
173 **
174 ** 輸 出: ?
175 ** 全局變量: 無
176 ** 調(diào)用模塊: 無
177 ********************************************************************************************************/
178 char byteWrite ( char addr, char byte) {
C51 COMPILER V7.50 EEPROM 01/29/2007 19:51:11 PAGE 4
179 1 char k;
180 1 k = 0xa0;
181 1 EA=0;
182 1 iicstart() ;
183 1 if (IICSend(k)== FALSE) //發(fā)送控制字
184 1 {
185 2 return FALSE;
186 2 }
187 1 if (IICSend(addr)== FALSE) //發(fā)送要寫入的地址
188 1 {
189 2 return FALSE;
190 2 }
191 1 if (IICSend(byte)== FALSE) //發(fā)送要寫入數(shù)據(jù)?
192 1 {
193 2 return FALSE;
194 2 }//
195 1 iicstop();
196 1 // get_ADC_val(0);
197 1 EA=1;
198 1 return TRUE ;
199 1 }
200
201
202 /*********************************************************************************************************
203 ** 函數(shù)名稱: Cat24WCxxRead
204 ** 功能描述: 從Cat24WCxx讀數(shù)據(jù)(僅允許一個任務(wù)可以調(diào)用)
205 ** 輸 入: Data[0]:外部引腳設(shè)置的地址(將所有Cat24WCXX看成Cat24WC02)
206 ** Data[1]:需要讀取字節(jié)數(shù)目
207 ** Data[2]:讀取的起始地址
208 ** 輸 出: Data:讀取得數(shù)據(jù)
209 ** 全局變量: 無
210 ** 調(diào)用模塊: 無
211 ********************************************************************************************************/
212 char byteRead(char addr )
213 {
214 1 char k,L;
215 1 EA=0;
216 1 k = 0xa0;
217 1 iicstart() ;
218 1 if (IICSend(k)== FALSE) //發(fā)送控制字
219 1 {//
220 2 return FALSE;//
221 2 }
222 1 if (IICSend(addr)== FALSE) //發(fā)送要寫入的地址
223 1 {
224 2 return FALSE;
225 2 }
226 1 iicstart() ;
227 1 k = 0xa1;
228 1 if (IICSend(k)== FALSE) //發(fā)送控制?
229 1 {
230 2 return FALSE;
231 2 }
232 1 L = IICReceive();
233 1 IIC_NO_ACK();
234 1 iicstop() ;
235 1 // get_ADC_val(0);
236 1 EA=1;
237 1 return L;
238 1 }
239 //*******************************************************************************
240 //*******************************************************************************
C51 COMPILER V7.50 EEPROM 01/29/2007 19:51:11 PAGE 5
241 char nbyteRead(char addr, char nbyte, char *index)// addr 要讀取的地址 nbyte 讀取的字節(jié)
242 {
243 1 for (/*nbyte++*/; nbyte !=0 ; nbyte--) {
244 2 *index = byteRead(addr);
245 2 index ++;
246 2 addr++;
247 2
248 2 }
249 1 return TRUE ;
250 1 }
251
252
253 //********************************************************************************
254 //********************************************************************************
255 char nbyteWrite ( char addr, char nbyte,char *index)
256 {
257 1 for ( /*nbyte++*/; nbyte!=0 ; nbyte--) {
258 2 byteWrite(addr, *index);
259 2 addr++;
260 2 index++;
261 2 }
262 1 return TRUE ;
263 1
264 1
265 1 }
266
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 381 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 10
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -