📄 24c04.lst
字号:
C51 COMPILER V7.50 24C04 05/03/2009 21:32:15 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE 24C04
OBJECT MODULE PLACED IN 24c04.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 24c04.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "intrins.h"
2 #include "reg51.h"
3
4 #define WriteDeviceAddress 0xa0 //写驱动地址指令
5 #define ReadDeviceAddress 0xa1 //读驱动地址指令
6
7 sbit AT24C02_SCL = 0xB6;
8 sbit AT24C02_SDA = 0xB7;
9
10 /*-------------------------------------------------
11 功能100uS延时子程序
12 -------------------------------------------------*/
13 void Delay_xuS(unsigned int x)
14 {
15 1 unsigned int i,j;
16 1 for( i =0;i < x;i++ )
17 1 {
18 2 for( j =0;j<50;j++ );
19 2 }
20 1 }
21
22 /*-------------------------------------------------
23 功能:1MS延时子程序
24 -------------------------------------------------*/
25 void Delay_xMs(unsigned int x)
26 {
27 1 unsigned int i,j;
28 1 for( i =0;i < x;i++ )
29 1 {
30 2 for( j =0;j<100;j++ );
31 2 }
32 1 }
33
34
35
36 /*-------------------------------------------------------------
37 功能:发起始信号
38 ------------------------------------------------------------*/
39 void Start_Cond()
40 {
41 1 AT24C02_SCL = 0;
42 1 _nop_();
43 1 AT24C02_SDA = 1;
44 1 _nop_();
45 1 AT24C02_SCL = 1;
46 1 _nop_();
47 1 AT24C02_SDA = 0;
48 1 _nop_();
49 1 }
50
51 /*-------------------------------------------------------------
52 功能:发停止信号
53 ------------------------------------------------------------*/
54 void Stop_Cond()
55 {
C51 COMPILER V7.50 24C04 05/03/2009 21:32:15 PAGE 2
56 1 AT24C02_SCL = 0;
57 1 _nop_();
58 1 AT24C02_SDA = 0;
59 1 _nop_();
60 1 AT24C02_SCL = 1;
61 1 _nop_();
62 1 AT24C02_SDA = 1;
63 1 _nop_();
64 1 }
65
66 /*-------------------------------------------------------------
67 功能:发确认信号
68 ------------------------------------------------------------*/
69 void Ack()
70 {
71 1 AT24C02_SCL = 0;
72 1 _nop_();
73 1 AT24C02_SDA = 0;
74 1 AT24C02_SCL = 1;
75 1 _nop_();
76 1 AT24C02_SCL = 0;
77 1 _nop_();
78 1 AT24C02_SDA = 1;
79 1 }
80
81 /*-------------------------------------------------------------
82 功能:发无确认信号
83 ------------------------------------------------------------*/
84 void NoAck()
85 {
86 1 AT24C02_SCL = 0;
87 1 _nop_();
88 1 AT24C02_SDA = 1;
89 1 _nop_();
90 1 AT24C02_SCL = 1;
91 1 _nop_();
92 1 AT24C02_SCL = 0;
93 1 _nop_();
94 1 }
95
96 /*-------------------------------------------------------------
97 功能:写一个字节数据
98 ------------------------------------------------------------*/
99 bit Write8Bit(unsigned char input)
100 {
101 1 unsigned char i;
102 1 for (i=0;i<8;i++)
103 1 {
104 2 AT24C02_SCL = 0;
105 2 input <<= 1;
106 2 AT24C02_SDA = CY;
107 2 AT24C02_SCL = 1;
108 2
109 2 }
110 1 AT24C02_SCL = 0;
111 1 _nop_();
112 1 AT24C02_SDA = 1;
113 1 AT24C02_SCL = 1;
114 1 _nop_();
115 1 CY = AT24C02_SDA;
116 1 return(CY) ;
117 1 }
C51 COMPILER V7.50 24C04 05/03/2009 21:32:15 PAGE 3
118
119 /*-------------------------------------------------------------
120 功能:读一个字节数据
121 ------------------------------------------------------------*/
122 unsigned char Read8Bit()
123 {
124 1 unsigned char temp,rbyte=0;
125 1 for (temp = 8;temp != 0;temp--)
126 1 {
127 2 AT24C02_SCL = 0;
128 2 _nop_();
129 2 rbyte = (rbyte << 1) | AT24C02_SDA;
130 2 AT24C02_SCL = 1;
131 2 _nop_();
132 2 }
133 1 return rbyte;
134 1 }
135
136 /*-------------------------------------------------------------
137 功能:从EEPROM中给定一个地址连续读NLEN个字节数据存放在以指针
138 nContent开头的往下内容。
139 ------------------------------------------------------------*/
140 bit Read_Flash ( unsigned char *nContent, unsigned char nAddr, unsigned char nLen )
141 {
142 1 unsigned char Addr;
143 1 Addr = nAddr;
144 1 Start_Cond(); //写开始信号
145 1 Write8Bit(WriteDeviceAddress); //写驱动地址
146 1 Write8Bit(Addr); //写从EEPROM中读的开始地址
147 1 Start_Cond(); //写开始信号
148 1 Write8Bit(ReadDeviceAddress); //写读数据指令
149 1 while(--nLen)
150 1 {
151 2
152 2 *nContent=Read8Bit(); //读出内容
153 2 nContent++; //指针加1
154 2 Ack(); //发确认信号
155 2 }
156 1 *nContent=Read8Bit(); //读一字节
157 1 NoAck(); //没有确认信号
158 1 Stop_Cond(); //发停止信号
159 1 return(0); //返回
160 1 }
161
162 /*-------------------------------------------------------------
163 功能:初始化EEPROM子程序内容为FF
164 ------------------------------------------------------------*/
165 bit Init_Flash ( unsigned int nPage ) // 8 Byte/1Page init 0xFF
166 {
167 1 unsigned char nLen;
168 1 unsigned char Addr;
169 1 nLen=8;
170 1 Addr=8 *nPage;
171 1 Start_Cond();
172 1 Write8Bit(WriteDeviceAddress);
173 1 Write8Bit(Addr);
174 1 for(;nLen!=0;nLen--)
175 1 {
176 2 if(Write8Bit(0xff)) break; //if Write8Bit() Return 1 Write Flase
177 2 }
178 1 Stop_Cond();
179 1 return(CY);
C51 COMPILER V7.50 24C04 05/03/2009 21:32:15 PAGE 4
180 1 }
181
182 /*-------------------------------------------------------------
183 功能:从EEPROM中给定一个地址连续写NLEN个字节数据存放在以指针
184 nContent开头的往下内容。
185 ------------------------------------------------------------*/
186 bit Write_Flash ( unsigned char *nContent, unsigned char nAddr,unsigned char nLen)
187 {
188 1 unsigned char i,temp;
189 1 unsigned char Addr;
190 1 Addr = nAddr;
191 1 Start_Cond(); //写开始信号
192 1 Write8Bit(WriteDeviceAddress); //写驱动地址
193 1 Write8Bit(Addr); //写从EEPROM中写的开始地址
194 1 for(i = 0;i < nLen;i++)
195 1 {
196 2 if(Addr%8==0) //每页8字节 //换页
197 2 {
198 3 Stop_Cond();
199 3 _nop_();
200 3 Start_Cond();
201 3 Write8Bit(WriteDeviceAddress);
202 3 Write8Bit(Addr);
203 3 }
204 2 temp = *nContent;
205 2 if(Write8Bit(temp)) break; //CY
206 2 nContent++;
207 2 Addr++;
208 2 }
209 1 Stop_Cond(); //发停止信号
210 1 return(CY);
211 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 313 ----
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 + -