📄 eeprom.lst
字号:
C51 COMPILER V7.09 EEPROM 07/26/2006 15:18:12 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE EEPROM
OBJECT MODULE PLACED IN eeprom.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE eeprom.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #include"main.h"
4 #include"port.h"
5 #include"delay.h"
6 #include "eeprom.h"
7 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
8
9 //#include"eeprom.h"
10 #define NUM 10
11 uChar idata sendbuf[NUM];
12 uChar idata receivebuf[NUM];
13 //bit bdata SystemError;
14 bit SystemError;
15 void iic_start(void)
16 {
17 1 EA=0;
18 1 SDA=1;
19 1 SCL=1;
20 1 delayNOP();
21 1 SDA=0;
22 1 delayNOP();
23 1 SCL=0;
24 1 }
25 void iic_stop(void)
26 {
27 1 SDA=0;
28 1 SCL=1;
29 1 delayNOP();
30 1 SDA=1;
31 1 delayNOP();
32 1 SCL=0;
33 1 }
34
35 void slave_ACK(void)
36 {
37 1 SDA=0;
38 1 SCL=1;
39 1 delayNOP();
40 1 SDA=1;
41 1 SCL=0;
42 1 }
43
44 void slave_NOACK(void)
45 {
46 1 SDA=1;
47 1 SCL=1;
48 1 delayNOP();
49 1 SDA=0;
50 1 SCL=0;
51 1 }
52
53 void check_ACK(void)
54 {
55 1 SDA=1;
C51 COMPILER V7.09 EEPROM 07/26/2006 15:18:12 PAGE 2
56 1 SCL=1;
57 1 F0=0;
58 1 if(SDA==1)
59 1 F0=1;
60 1 SCL=0;
61 1 }
62
63 void IICSendByte(uChar ch)
64 {
65 1 uChar idata n=8;
66 1 while(n--)
67 1 {
68 2 if((ch&0x80)==0x80)
69 2 {
70 3 SDA=1;
71 3 SCL=1;
72 3 delayNOP();
73 3 SDA=0;
74 3 SCL=0;
75 3 }
76 2 else
77 2 {
78 3 SDA=0;
79 3 SCL=1;
80 3 delayNOP();
81 3 SCL=0;
82 3 }
83 2 ch=ch<<1;
84 2 }
85 1 }
86 uChar IICreceiveByte(void)
87 {
88 1 uChar idata n=8;
89 1 uChar tdata;
90 1 while(n--)
91 1 {
92 2 SDA=1;
93 2 SCL=1;
94 2 tdata=tdata<<1;
95 2 if(SDA==1)
96 2 tdata=tdata|0x01;
97 2 else
98 2 tdata=tdata&0xfe;
99 2 SCL=0;
100 2 }
101 1 return(tdata);
102 1 }
103
104 void writeNByte(uChar slave_add,uChar n)
105 {
106 1 uChar idata send_da,i=0;
107 1 iic_start();
108 1 IICSendByte(slave_add);
109 1 check_ACK();
110 1 if(F0==1)
111 1 {
112 2 SystemError=1;
113 2 return;
114 2 }
115 1 while(n--)
116 1 {
117 2 send_da=sendbuf[i++];
C51 COMPILER V7.09 EEPROM 07/26/2006 15:18:12 PAGE 3
118 2 IICSendByte(send_da);
119 2 check_ACK();
120 2 if(F0==1)
121 2 {
122 3 SystemError=1;
123 3 return;
124 3 }
125 2 }
126 1 iic_stop();
127 1 }
128
129 void receiveNByte(uChar idata slave_add,uChar n)
130 {
131 1 uChar idata receive_da,i=0;
132 1 iic_start();
133 1 IICSendByte(slave_add);
134 1 check_ACK();
135 1 if(F0==1)
136 1 {
137 2 SystemError=1;
138 2 return;
139 2 }
140 1 while(n--)
141 1 {
142 2 receive_da=IICreceiveByte();
143 2 receivebuf[i++]=receive_da;
144 2 slave_ACK();
145 2 }
146 1 slave_NOACK();
147 1 iic_stop();
148 1 }
149 /*
150 void writeByte2dev(unsigned char address_H,unsigned char address_L,unsigned char wr_data)
151 {
152 iic_start();
153 IICSendByte(0x00);//设备地址
154 check_ACK();//检查应答位,
155 if(F0==1)
156 {
157 SystemError=1;//若非应答表明器件错误或已坏,置错误标志位SystemError
158 return;
159 }
160 IICSendByte(0x01);
161 check_ACK();
162 if(F0==1)
163 {
164 SystemError=1;
165 return;
166 }
167 IICSendByte(0x0a);//片内低8bit地址
168 check_ACK();//检查应答位,
169 if(F0==1)
170 {
171 SystemError=1;
172 return;
173 }
174 IICSendByte(0xff);
175 check_ACK();
176 if(F0==1)
177 {
178 SystemError=1;
179 return;
C51 COMPILER V7.09 EEPROM 07/26/2006 15:18:12 PAGE 4
180 }
181 iic_stop();//全部发完则停止,
182
183 }
184 */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 261 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 20 6
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -