📄 45db041.lst
字号:
C51 COMPILER V7.06 45DB041 11/01/2008 17:59:16 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 45DB041
OBJECT MODULE PLACED IN 45db041.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 45db041.c BROWSE DEBUG OBJECTEXTEND CODE
stmt level source
1 #include <stc89c54rd+.h>
2 #include <stdio.h>
3 #include <string.h>
4 #include <intrins.h>
5 #include <ctype.h>
6 #include <string.h>
7 #include <stdlib.h>
8 #include <math.h>
9 #include "main.h"
10 #include <absacc.h>
11 #include "45db041.h"
12 unsigned char read_byte(void)
13 {
14 1 unsigned char i;
15 1 unsigned char data999=0;
16 1 // f_io=1; //SET_45IO();
17 1 for (i=0;i<8;i++)
18 1 {
19 2 f_clk=1; //SET_45SCK();
20 2 data999<<=1;
21 2 data999|=f_io;
22 2 f_clk=0; //CLEAR_45SCK();
23 2 }
24 1 return data999;
25 1 }
26
27 void write_byte(unsigned char data1)
28 {
29 1 unsigned char i;
30 1 for(i=0;i<8;i++)
31 1 {
32 2 if (data1&0x80)
33 2 f_io=1; //SET_45IO();
34 2 else
35 2 f_io=0; //CLEAR_45IO();
36 2 f_clk=1;
37 2 f_clk=0;
38 2 data1<<=1;
39 2 }
40 1 }
41 unsigned char read_mainmemory(unsigned int pagenum,unsigned int bits)
42 {
43 1 unsigned char i;
44 1 unsigned char byte11,temp11;
45 1 f_cs=0; //CLEAR_45CS();
46 1 write_byte(0x52);
47 1 i=pagenum>>6;
48 1 write_byte((unsigned char)i);
49 1 i=pagenum<<2;
50 1 byte11=bits>>8;
51 1 i=(unsigned char)i+(unsigned char)byte11;
52 1 write_byte((unsigned char)i);
53 1 write_byte((unsigned char)bits);
54 1 write_byte(0x00);
55 1 write_byte(0x00);
C51 COMPILER V7.06 45DB041 11/01/2008 17:59:16 PAGE 2
56 1 write_byte(0x00);
57 1 write_byte(0x00);
58 1 CLOCK1();
59 1
60 1 temp11=read_byte();
61 1 f_cs=1; //SET_45CS();
62 1 return temp11;
63 1 }
64 unsigned char read_status(void)
65 {
66 1 unsigned char temp2;
67 1 f_cs=0; //CLEAR_45CS();
68 1 f_clk=0; //CLEAR_45SCK();
69 1 f_io=1; //SET_45IO();
70 1 write_byte(0x57);
71 1 CLOCK1();
72 1 // NOP();
73 1 temp2=read_byte();
74 1 f_cs=1; //SET_45CS();
75 1 return temp2;
76 1 }
77
78 /*void write_buffer1(unsigned int bitnum,unsigned char *pt)
79 {
80 unsigned int i;
81 f_cs=0;
82 f_clk=0;
83 f_io=1;
84 write_byte(0x84);
85 write_byte(0x00);
86 i=bitnum>>8;
87 write_byte((unsigned char)i);
88 write_byte((unsigned char)bitnum);
89 for(i=0;i<264;i++)
90 write_byte(*pt++);
91 // DELAY();
92 f_cs=1;
93 }*/
94 void write_mainmemory(unsigned int pagenum,unsigned char *pt)
95 {
96 1 unsigned int i;
97 1 f_cs=0;
98 1 f_io=1;
99 1 f_clk=0;
100 1 write_byte(0x82);
101 1 i=pagenum>>6;
102 1 write_byte((unsigned char)i);
103 1 i=pagenum<<2;
104 1 write_byte((unsigned char)i);
105 1 write_byte(0x00);
106 1 for(i=0;i<264;i++)
107 1 write_byte(*pt++);
108 1 // NOP();
109 1 f_io=1;
110 1 f_clk=0;
111 1 f_cs=1;
112 1 for(i=0;i<10000;i++);
113 1 }
114 void write_buffer2(unsigned int bitnum,unsigned char *pt)
115 {
116 1 unsigned int i;
117 1 f_cs=0;
C51 COMPILER V7.06 45DB041 11/01/2008 17:59:16 PAGE 3
118 1 DELAY();
119 1 write_byte(0x87);
120 1 write_byte(0x00);
121 1 i=bitnum>>8;
122 1 write_byte((unsigned char)i);
123 1 write_byte((unsigned char)bitnum);
124 1 for(i=0;i<264;i++)
125 1 write_byte(*pt++);
126 1 f_cs=1;
127 1 }
128 void write_buffer1mainmemory(unsigned int pagenum)
129 {
130 1 unsigned int i;
131 1 unsigned char flag;
132 1 // write_buffer1(chip_cs,0,yyj02);
133 1 while(1)
134 1 {
135 2 flag=read_status();
136 2 if((flag&0x80)==0x80)
137 2 break;
138 2 }
139 1 f_cs=0;
140 1 f_clk=0;
141 1 f_io=1;
142 1 DELAY();
143 1 write_byte(0x83);
144 1 i=pagenum>>6;
145 1 write_byte((unsigned char)i);
146 1 i=pagenum<<2;
147 1 write_byte((unsigned char)i);
148 1 write_byte(0x00);
149 1 // DELAY();
150 1 f_cs=1;
151 1 }
152 /*void write_buffer2mainmemory(unsigned int pagenum)
153 {
154 unsigned int i;
155 unsigned char flag;
156 // write_buffer2(chip_cs,0,yyj02);
157 while(1)
158 {
159 flag=read_status();
160 if((flag&0x80)==0x80)
161 break;
162 }
163 f_cs=0;
164 f_clk=0;
165 f_io=1;
166 DELAY();
167 write_byte(0x86);
168 i=pagenum>>6;
169 write_byte((unsigned char)i);
170 i=pagenum<<2;
171 write_byte((unsigned char)i);
172 write_byte(0x00);
173 // DELAY();
174 f_cs=1;
175 }
176
177 void read_startarry(unsigned int pagenum,unsigned int bitnum,
178 unsigned char *pt,unsigned int len)
179 {
C51 COMPILER V7.06 45DB041 11/01/2008 17:59:16 PAGE 4
180 unsigned int i;
181 unsigned char flag;
182 while(1)
183 {
184 flag=read_status();
185 if(flag&0x80)
186 break;
187 }
188 f_cs=0;
189 f_io=1;
190 f_clk=0;
191 DELAY();
192 write_byte(0x68);
193 i=pagenum>>6;
194 write_byte((unsigned char)i);
195 i=pagenum<<2+bitnum>>8;
196 write_byte((unsigned char)i);
197 write_byte((unsigned char)bitnum);
198 write_byte(0x00);
199 write_byte(0x00);
200 write_byte(0x00);
201 write_byte(0x00);
202 CLOCK1();
203 for(i=0;i<len;i++)
204 *pt++=read_byte();
205 f_cs=1;
206 }
207 void compare_buffer1page(unsigned int pagenum)
208 {
209 unsigned int i;
210 unsigned char flag;
211 while(1)
212 {
213 flag=read_status();
214 if(flag&0x80)
215 break;
216 }
217 f_cs=0;
218 f_io=1;
219 f_clk=0;
220 DELAY();
221 write_byte(0x60);
222 i=pagenum>>6;
223 write_byte((unsigned char)i);
224 i=pagenum<<2;
225 write_byte((unsigned char)i);
226 write_byte(0x00);
227 f_cs=1;
228 } */
229 void CLOCK1(void)
230 {
231 1 f_clk=1;
232 1 DELAY();
233 1 f_clk=0;
234 1 }
235 void DELAY(void)
236 {
237 1 unsigned char i;
238 1 for (i=0;i<2;i++);
239 1 }
C51 COMPILER V7.06 45DB041 11/01/2008 17:59:16 PAGE 5
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION read_byte (BEGIN)
; SOURCE LINE # 12
; SOURCE LINE # 13
; SOURCE LINE # 15
;---- Variable 'data999' assigned to Register 'R7' ----
0000 E4 CLR A
0001 FF MOV R7,A
; SOURCE LINE # 17
;---- Variable 'i' assigned to Register 'R6' ----
0002 FE MOV R6,A
0003 ?C0001:
; SOURCE LINE # 18
; SOURCE LINE # 19
0003 D2B7 SETB f_clk
; SOURCE LINE # 20
0005 EF MOV A,R7
0006 25E0 ADD A,ACC
0008 FF MOV R7,A
; SOURCE LINE # 21
0009 A2B6 MOV C,f_io
000B E4 CLR A
000C 33 RLC A
000D 4207 ORL AR7,A
; SOURCE LINE # 22
000F C2B7 CLR f_clk
; SOURCE LINE # 23
0011 0E INC R6
0012 BE08EE CJNE R6,#08H,?C0001
0015 ?C0002:
; SOURCE LINE # 24
; SOURCE LINE # 25
0015 ?C0004:
0015 22 RET
; FUNCTION read_byte (END)
; FUNCTION L?0044 (BEGIN)
0000 L?0045:
0000 FF MOV R7,A
0001 L?0046:
0001 120000 R LCALL _write_byte
0004 E4 CLR A
0005 FF MOV R7,A
; FUNCTION _write_byte (BEGIN)
; SOURCE LINE # 27
;---- Variable 'data1' assigned to Register 'R7' ----
; SOURCE LINE # 28
; SOURCE LINE # 30
;---- Variable 'i' assigned to Register 'R6' ----
0006 E4 CLR A
0007 FE MOV R6,A
0008 ?C0005:
; SOURCE LINE # 31
; SOURCE LINE # 32
0008 EF MOV A,R7
0009 30E704 JNB ACC.7,?C0008
; SOURCE LINE # 33
000C D2B6 SETB f_io
000E 8002 SJMP ?C0009
0010 ?C0008:
C51 COMPILER V7.06 45DB041 11/01/2008 17:59:16 PAGE 6
; SOURCE LINE # 35
0010 C2B6 CLR f_io
0012 ?C0009:
; SOURCE LINE # 36
0012 D2B7 SETB f_clk
; SOURCE LINE # 37
0014 C2B7 CLR f_clk
; SOURCE LINE # 38
0016 EF MOV A,R7
0017 25E0 ADD A,ACC
0019 FF MOV R7,A
; SOURCE LINE # 39
001A 0E INC R6
001B BE08EA CJNE R6,#08H,?C0005
; SOURCE LINE # 40
001E ?C0010:
001E 22 RET
; FUNCTION _write_byte (END)
; FUNCTION _read_mainmemory (BEGIN)
; SOURCE LINE # 41
0000 8E00 R MOV pagenum,R6
0002 8F00 R MOV pagenum+01H,R7
;---- Variable 'bits' assigned to Register 'R4/R5' ----
; SOURCE LINE # 42
; SOURCE LINE # 45
0004 C2E8 CLR f_cs
; SOURCE LINE # 46
0006 7F52 MOV R7,#052H
0008 120000 R LCALL _write_byte
; SOURCE LINE # 47
000B E500 R MOV A,pagenum+01H
000D AE00 R MOV R6,pagenum
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -