📄 93c46.lst
字号:
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE 93C46
OBJECT MODULE PLACED IN 93c46.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 93c46.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <sys.h>
3 #include <intrins.h>
4
5 const unsigned char LedCode[]={0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0xF7,0xFC,0xB9,0XDE,0xF9,
-0xF1};
6 const unsigned int LedCode1[]={0xBFBF,0x8686,0xDBDB,0xCFCF,0xE6E6,0xEDED,0xFDFD,0x8787,0xFFFF,0xEFEF,0xF7F
-7,0xFCFC,0xB9B9,0XDEDE,0xF9F9,0xF1F1};
7 //const unsigned char Sel[]={0x80,0x81,0x82,0x83};
8
9
10
11
12 //“93c46读写程序”
13
14 sbit CS=P3^7;
15 sbit SK=P3^6;
16 sbit DI=P3^5;
17 sbit DO=P3^4;
18
19 /*
20 extern unsigned char ReadChar(unsigned char address);
21 extern void WriteChar(unsigned char address,unsigned char InData);
22 extern void ReadString(unsigned char data *RamAddress,unsigned char RomAddress,
23 unsigned char Number);
24 extern void WriteString(unsigned char data *RamAddress,unsigned char RomAddress,unsigned char Number);
25 */
26
27 void sel_bit0(void)
28 {
29 1 P2 = 0x00;
30 1 P2 = 0x10;
31 1 P0 = 0x0f;
32 1 P2 = 0x00;
33 1 P0 = 0x00;
34 1 P2 = 0x80;
35 1 }
36
37 void sel_bit1(void)
38 {
39 1 P2 = 0x00;
40 1 P2 = 0x10;
41 1 P0 = 0x1f;
42 1 P2 = 0x00;
43 1 P0 = 0x00;
44 1 P2 = 0x80;
45 1 }
46
47
48 void delay()
49 {
50 1 uchar i = 0;
51 1
52 1 uchar j = 0;
53 1 for (j=0;j<255;j++)
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 2
54 1 {
55 2 for (i=0; i<250; i++)
56 2 ;
57 2 }
58 1 }
59
60 void clkdelay()
61 {
62 1 uchar i=0;
63 1
64 1 for(i=0;i<50;i++)
65 1 {
66 2 ;
67 2 }
68 1 }
69
70 // Write enable must precede all programming modes.
71 void Ewen(void)
72 {
73 1 unsigned char temp,InData;
74 1 CS=0;
75 1 SK=0;
76 1 CS=1;
77 1 clkdelay();
78 1 InData=0x98; // 10011XXXX
79 1 for(temp=9;temp!=0;temp--) // 9
80 1 {
81 2 DI=(bit)(InData&0x80);
82 2 SK=1;
83 2 clkdelay();
84 2 SK=0;
85 2 clkdelay();
86 2 InData<<=1;
87 2 }
88 1 SK=1;// by lh
89 1 CS=0; clkdelay();
90 1
91 1
92 1 }
93
94 // Disables all programming instructions.
95 void Ewds(void)
96 {
97 1 unsigned char temp,InData;
98 1 CS=0;
99 1 SK=0;
100 1 CS=1;
101 1 clkdelay();
102 1 InData=0x80; // 10000XXXX
103 1 for(temp=9;temp!=0;temp--) // 9
104 1 {
105 2 DI=(bit)(InData&0x80);
106 2 SK=1;
107 2 clkdelay();
108 2 SK=0;
109 2 clkdelay();
110 2 InData<<=1;
111 2 }
112 1 SK=1; //by lh
113 1 CS=0; clkdelay();
114 1
115 1 }
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 3
116
117 // Reads data stored in memory, at specified address.
118 unsigned int Read(unsigned char address) {
119 1 unsigned char temp;
120 1 unsigned int result=0;
121 1 Ewen();
122 1 SK=0;
123 1 DI=1; // 110 A5-A0
124 1 CS=0;
125 1 CS=1;
126 1 clkdelay();
127 1 SK=1;
128 1 clkdelay();
129 1 SK=0; // 1
130 1 clkdelay();
131 1 address=((address&0x3f)|0x80); //?
132 1 for(temp=8;temp!=0;temp--)
133 1 { // 8
134 2 DI=(bit) (address&0x80);
135 2 SK=1;
136 2 clkdelay();
137 2 SK=0;
138 2 clkdelay();
139 2 address<<=1;
140 2 }
141 1
142 1 DO=1;
143 1 for(temp=16;temp!=0;temp--)
144 1 { // 16
145 2 SK=1;
146 2 result=(result<<1);
147 2 result=result | ((unsigned int)(DO)); //
148 2 clkdelay();
149 2 SK=0;
150 2 clkdelay();
151 2 }
152 1 CS=0;
153 1 Ewds();
154 1 return(result);
155 1 }
156
157 // Writes memory location An - A0.
158 void Write(unsigned char address,unsigned int InData) {
159 1 unsigned char temp;
160 1 Ewen();
161 1 SK=0;
162 1 DI=1; // 101 A5-A0
163 1
164 1 CS=0;
165 1 CS=1;
166 1 clkdelay();
167 1 SK=1;
168 1 clkdelay();
169 1 SK=0; // 1
170 1 clkdelay();
171 1 address=((address&0x3f)|0x40);
172 1 for(temp=8;temp!=0;temp--) { // 8
173 2 DI=(bit) (address&0x80);
174 2 SK=1;
175 2 clkdelay();
176 2 SK=0;
177 2 clkdelay();
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 4
178 2 address<<=1;
179 2 }
180 1 for(temp=16;temp!=0;temp--) { // 16
181 2 DI=(bit)(InData&0x8000);
182 2 SK=1;
183 2 clkdelay();
184 2 SK=0;
185 2 clkdelay();
186 2 InData<<=1;
187 2 }
188 1 CS=0;
189 1 DO=1;
190 1 CS=1;
191 1 SK=1;
192 1 clkdelay();
193 1 CS=0;
194 1 CS=1;
195 1 while(DO==0)
196 1 { // busy test
197 2 SK=0;
198 2 clkdelay();
199 2 SK=1;
200 2 clkdelay();
201 2 }
202 1 SK=0;
203 1 CS=0;
204 1 Ewds();
205 1 }
206
207 /*
208 // Erase memory location An - A0.
209 void Erase(unsigned char address) {
210 unsigned char temp;
211 Ewen();
212 SK=0; DI=1; // 111 A5-A0
213 CS=0; CS=1;
214 SK=1; SK=0; // 1
215 address =0xc0;
216 for(temp=8;temp!=0;temp--) { // 8
217 DI=address&0x80;
218 SK=1; SK=0;
219 address<<=1;
220 }
221 CS=0; DO=1;
222 CS=1; SK=1;
223 while(DO==0) {
224 SK=0; SK=1;
225 }
226 SK=0; CS=0;
227 Ewds();
228 }
229
230 // Erases all memory locations. Valid only at VCC = 4.5V to 5.5V.
231 void Eral(void) {
232 unsigned char temp,InData;
233 Ewen();
234 CS=0;
235 SK=0;
236 CS=1;
237 InData=0x90; // 10010XXXX
238 for(temp=9;temp!=0;temp--) { // 9
239 DI=InData&0x80;
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 5
240 SK=1; SK=0;
241 InData<<=1;
242 }
243 CS=0; DO=1;
244 CS=1; SK=1;
245 while(DO==0) {
246 SK=0; SK=1;
247 }
248 SK=0; CS=0;
249 Ewds();
250 }
251
252 // Writes all memory locations. Valid only at VCC = 4.5V to 5.5V.
253 void Wral(unsigned int InData) {
254 unsigned char temp,address;
255 Ewen();
256 CS=0;
257 SK=0;
258 CS=1;
259 address=0x88; // 10001XXXX
260 for(temp=9;temp!=0;temp--) { // 9
261 DI=address&0x80;
262 SK=1; SK=0;
263 address<<=1;
264 }
265 for(temp=16;temp!=0;temp--) { // 16
266 DI=InData&0x8000;
267 SK=1; SK=0;
268 InData<<=1;
269 }
270 CS=0; DO=1;
271 CS=1; SK=1;
272 while(DO==0) {
273 SK=0; SK=1;
274 }
275 SK=0; CS=0;
276 Ewds();
277 }
278
279 */
280
281 /*unsigned char ReadChar(unsigned char address) {
282 unsigned char temp=address>>1;
283 if(address&0x01) return((unsigned char)(Read(temp)>>8));
284 else return((unsigned char)(Read(temp)));
285 }
286
287 void WriteChar(unsigned char address,unsigned char InData) {
288 unsigned char temp=address>>1;
289 if(address&0x01) Write(temp,(unsigned int)(Read(temp)&0x00ff (InData<<8)));
290 else Write(temp,(unsigned int)(Read(temp)&0xff00 InData));
291 }
292
293 void ReadString(unsigned char data *RamAddress,unsigned char RomAddress,unsigned char Number) {
294 while(Number!=0) {
295 *RamAddress=ReadChar(RomAddress);
296 RamAddress++;
297 RomAddress++;
298 Number--;
299 }
300 }
301
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 6
302 void WriteString(unsigned char data *RamAddress,unsigned char RomAddress,unsigned char Number) {
303 unsigned int temp;
304 if(Number==0) return;
305 if(RomAddress&0x01) {
306 WriteChar(RomAddress,*RamAddress);
307 RamAddress++;
308 RomAddress++;
309 Number--;
310 }
311 if(Number==0) return;
312 while(Number>>1) {
313 temp=*RamAddress;
314 RamAddress++;
315 temp=temp (*RamAddress)<<8;
316 RamAddress++;
317 Write(RomAddress>>1,temp);
318 RomAddress++;
319 RomAddress++;
320 Number--;
321 Number--;
322 }
323 if(Number) WriteChar(RomAddress,*RamAddress); */
324
325
326
327
328 void ISRit0(void) interrupt 0
329 {
330 1 uchar i;
331 1 unsigned int databuf;
332 1
333 1 IE0=0;
334 1 for(i=0; i<16; i++)
335 1
336 1 {
337 2 // P0=LedCode[i];
338 2 databuf=Read(i);
339 2 P0=(uchar)(databuf&0x00FF);
340 2 delay();
341 2 delay();
342 2 delay();
343 2 delay();
344 2 delay();
345 2 sel_bit0();
346 2 P0=(uchar)(databuf>>8);
347 2 sel_bit1();
348 2 delay();
349 2 delay();
350 2 delay();
351 2 delay();
352 2 delay();
353 2
354 2 }
355 1
356 1 P2=0xFF;
357 1
358 1 }
359
360
361 void main()
362 {
363 1 uchar i;
C51 COMPILER V7.07 93C46 09/21/2007 13:14:00 PAGE 7
364 1 EA=1;
365 1 IT0=1;
366 1 EX0=1;
367 1 for(i=0; i<16; i++)
368 1
369 1 {
370 2 Write(i,LedCode1[i]);
371 2
372 2 // writebyte(0,0xFF);
373 2 delay();
374 2 }
375 1
376 1
377 1
378 1 while(1)
379 1 {
380 2 P0 = 0xff;
381 2 sel_bit0();
382 2 P0 = 0xff;
383 2 sel_bit1();
384 2
385 2 }
386 1 }
387
388
389
390
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 430 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 48 4
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 + -