📄 14.lst
字号:
C51 COMPILER V8.02 14 03/12/2007 19:31:22 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE 14
OBJECT MODULE PLACED IN 14.OBJ
COMPILER INVOKED BY: d:\Keil 8\C51\BIN\C51.EXE 14.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<AT89X51.H>
2 #include<intrins.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6 #define addwr 0xa0
7 #define addrd 0xa1
8
9 sbit sda=P3^7;
10 sbit scl=P3^6;
11 sbit wp=P3^5;
12
13 void mdelay(uchar j)
14 {
15 1 uint i;
16 1 for(;j>0;j--)
17 1 {
18 2 for(i=0;i<125;i--)
19 2 {;}
20 2 }
21 1 }
22
23 void start(void)
24 {
25 1 sda=1;
26 1 scl=1;
27 1 _nop_();_nop_();_nop_();_nop_();
28 1 sda=0;
29 1 _nop_();_nop_();_nop_();_nop_();
30 1 }
31
32 void stop(void)
33 {
34 1 sda=0;
35 1 scl=1;
36 1 _nop_();_nop_();_nop_();_nop_();
37 1 sda=1;
38 1 _nop_();_nop_();_nop_();_nop_();
39 1
40 1 }
41
42 void ack(void)
43 {
44 1 sda=0;
45 1 _nop_();_nop_();_nop_();_nop_();
46 1 scl=1;
47 1 _nop_();_nop_();_nop_();_nop_();
48 1 scl=0;
49 1 }
50
51 void noack(void)
52 {
53 1 sda=1;
54 1 _nop_();_nop_();_nop_();_nop_();
55 1 scl=1;
C51 COMPILER V8.02 14 03/12/2007 19:31:22 PAGE 2
56 1 _nop_();_nop_();_nop_();_nop_();
57 1 scl=0;
58 1 }
59
60 void send(uchar Data)
61 {
62 1 uchar bitcounter=8;
63 1 uchar temp;
64 1 do
65 1 {
66 2 temp=Data;
67 2 scl=0;
68 2 _nop_();_nop_();_nop_();_nop_();
69 2 if((temp&0x80)==0x80)
70 2 sda=1;
71 2 else
72 2 sda=0;
73 2 scl=1;
74 2 temp=Data<<1;
75 2 Data=temp;
76 2 bitcounter--;
77 2 }while(bitcounter);
78 1 scl=0;
79 1 }
80
81 uchar read(void)
82 {
83 1 uchar temp=0;
84 1 uchar temp1=0;
85 1 uchar bitcounter=8;
86 1 sda=1;
87 1 do
88 1 {
89 2 scl=0;
90 2 _nop_();_nop_();_nop_();_nop_();
91 2 scl=1;
92 2 _nop_();_nop_();_nop_();_nop_();
93 2 if(sda)
94 2 temp=temp|0x01;
95 2 else
96 2 temp=temp&0xfe;
97 2 if(bitcounter-1)
98 2 {
99 3 temp1=temp<<1;
100 3 temp=temp1;
101 3 }
102 2 bitcounter--;
103 2 }while(bitcounter);
104 1 return(temp);
105 1 }
106
107 void wrtorom(uchar Data[],uchar address,uchar num)
108 {
109 1 uchar i;
110 1 uchar *pData;
111 1 pData=Data;
112 1 for(i=0;i<num;i++)
113 1 {
114 2 start();
115 2 send(0xa0);
116 2 ack();
117 2 send(address+i);
C51 COMPILER V8.02 14 03/12/2007 19:31:22 PAGE 3
118 2 ack();
119 2 send(*(pData+i));
120 2 ack();
121 2 stop();
122 2 mdelay(20);
123 2 }
124 1 }
125
126 void rdfromrom(uchar Data[],uchar address,uchar num)
127 {
128 1 uchar i;
129 1 uchar *pData;
130 1 pData=Data;
131 1 for(i=0;i<num;i++)
132 1 {
133 2 start();
134 2 send(0xa0);
135 2 ack();
136 2 send(address+i);
137 2 ack();
138 2 start();
139 2 send(0xa1);
140 2 ack();
141 2 *(pData+i)=read();
142 2 scl=0;
143 2 noack();
144 2 stop();
145 2 }
146 1 }
147
148 void main()
149 {
150 1 uchar number[4]={1,2,3,4};
151 1 wp=1;
152 1 wrtorom(number,4,4);
153 1 mdelay(20);
154 1 number[0]=0;
155 1 number[1]=0;
156 1 number[2]=0;
157 1 number[3]=0;
158 1 rdfromrom(number,4,4) ;
159 1 }
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
C51 COMPILER V8.02 14 03/12/2007 19:31:22 PAGE 4
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 370 ----
CONSTANT SIZE = 4 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 21
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 + -