📄 rom.lst
字号:
67 1 ROM_RD=1;
68 1 rom_cs(0);
69 1 ROM_DATAPORT=value;
70 1 ROM_WR=0;
C51 COMPILER V7.01 ROM 11/16/2007 15:52:11 PAGE 5
71 1 delay10ms(1);
72 1 ROM_WR=1;
73 1 ROM_BUSY=1;
74 1 while(ROM_BUSY==0);
75 1 rom_cs(1);
76 1
77 1 }
78
79 void rom_write_addcol(unsigned char value)
80 {
81 1 ROM_RD=1;
82 1 ROM_ALE=1;//ADDRESS
83 1 ROM_CLE=0;
84 1 rom_cs(0);
85 1 ROM_DATAPORT=value;
86 1 ROM_WR=0;
87 1 delay10ms(1);
88 1 ROM_WR=1;
89 1 ROM_BUSY=1;
90 1 while(ROM_BUSY==0);
91 1 rom_cs(1);
92 1 }
93
94 void rom_write_addrow(unsigned int value)
95 {
96 1 ROM_RD=1;
97 1 ROM_ALE=1;//ADDRESS
98 1 ROM_CLE=0;
99 1 rom_cs(0);
100 1 ROM_DATAPORT=(uchar)value;
101 1 ROM_WR=0;
102 1 delay10ms(1);
103 1 ROM_WR=1;
104 1 ROM_BUSY=1;
105 1 while(ROM_BUSY==0);
106 1 ROM_DATAPORT=(uchar)(value>>8);
107 1 ROM_WR=0;
108 1 delay10ms(1);
109 1 ROM_WR=1;
110 1 ROM_BUSY=1;
111 1 while(ROM_BUSY==0);
112 1 rom_cs(1);
113 1 }
114
115
116 void rom_write_data(unsigned char value)
117 {
118 1 ROM_CLE=0; //value
119 1 ROM_ALE=0;//
120 1 ROM_RD=1;
121 1 rom_cs(0);
122 1 ROM_DATAPORT=value;
123 1 ROM_WR=0;
124 1 delay10ms(1);
125 1 ROM_WR=1;
126 1 ROM_BUSY=1;
127 1 while(ROM_BUSY==0);
128 1 rom_cs(1);
129 1 }
130
131
132 void rom_rd_wr_data_start(uchar value,uchar addcol,uint addrow)
C51 COMPILER V7.01 ROM 11/16/2007 15:52:11 PAGE 6
133 { rom_write_com(value);
134 1 rom_write_addcol(addcol);
135 1 rom_write_addrow(addrow);
136 1 }
137
138
139 void rom_check_busy(void) //NOT BUSY RETURN
140 {
141 1 unsigned char value;
142 1 value=0;
143 1 while((value&0x40)==0)//is busy? yes-->check again
144 1 { rom_write_com(0x70);//get status
145 2 ROM_DATAPORT=0xff;
146 2 ROM_CLE=0; //read the data?!
147 2 ROM_ALE=0;//
148 2 ROM_WR=1;
149 2 rom_cs(0);
150 2 ROM_RD=0;
151 2 value=ROM_DATAPORT;
152 2 ROM_RD=1;
153 2 ROM_BUSY=1;
154 2 while(ROM_BUSY==0);
155 2 rom_cs(1);
156 2
157 2 }
158 1 }
159
160 uchar rom_check_option()
161 {
162 1 unsigned char value;
163 1 value=0;
164 1 do
165 1 {
166 2 rom_write_com(0x70);//get status
167 2 ROM_DATAPORT=0xff;
168 2 ROM_CLE=0; //read the data?!
169 2 ROM_ALE=0;//
170 2 ROM_WR=1;
171 2 rom_cs(0);
172 2 ROM_RD=0;
173 2 value=ROM_DATAPORT;
174 2 ROM_RD=1;
175 2 ROM_BUSY=1;
176 2 while(ROM_BUSY==0);
177 2 rom_cs(1);
178 2 }
179 1 while((value&0x40)==0);
180 1 if((value&0x1)==0)
181 1 return(0);
182 1 else
183 1 return(1);
184 1 }
185
186
187 //-------------->Erase whole block data<--------------------
188
189 unsigned char rom_erase_block(unsigned int add)
190 {
191 1 unsigned char value;
192 1 rom_write_com(0x60);
193 1 // rom_write_addrow(add%32);
194 1 rom_write_addcol((add&0x7)<<5);
C51 COMPILER V7.01 ROM 11/16/2007 15:52:11 PAGE 7
195 1 rom_write_addcol(add>>3);
196 1
197 1 rom_write_com(0xd0);
198 1 //--busy check!
199 1 value=0;
200 1
201 1 rom_write_com(0x70);//get status
202 1 rom_cs(0);
203 1 ROM_DATAPORT=0xff;
204 1 ROM_CLE=0; //read the data?!
205 1 ROM_ALE=0;
206 1 ROM_WR=1;
207 1 ROM_RD=0;
208 1 value=ROM_DATAPORT;
209 1 ROM_RD=1;
210 1 ROM_BUSY=1;
211 1 while(ROM_BUSY==0);
212 1 rom_cs(1);
213 1 delay5us(10);
214 1
215 1 if((value&1)==0)
216 1 return 0;//erase ok
217 1 else
218 1 return 1;//erase error
219 1 }
220
221
222 //-------------->write whole block data------<--------------
223 void rom_write_block_start(unsigned char addcol,unsigned int addrow)
224 {
225 1 rom_rd_wr_data_start(ROM_WR_MODE,addcol,addrow); //----after this can write data to flash.............---
-
226 1 }
227
228
229 unsigned char rom_write_block_end()
230 {
231 1
232 1 rom_write_com(0x10);
233 1 return 0;
234 1 }
235
236
237 void rom_read_block_start(unsigned char addcol,unsigned int addrow)
238 {
239 1 rom_rd_wr_data_start(ROM_RD_MODE1,addcol,addrow);
240 1 }
241
242 uchar rom_read_block_byte(void)
243 {
244 1 uchar value;
245 1 delay5us(2);
246 1 P2=0Xff;
247 1 ROM_DATAPORT=0XFF;
248 1 rom_cs(0);
249 1 ROM_WR=1;
250 1 ROM_ALE=0;
251 1 ROM_CLE=0;
252 1 ROM_RD=0;
253 1 value=ROM_DATAPORT;
254 1 ROM_RD=1;
255 1 ROM_BUSY=1;
C51 COMPILER V7.01 ROM 11/16/2007 15:52:11 PAGE 8
256 1 while(ROM_BUSY==0);
257 1 rom_cs(1);
258 1 ROM_DATAPORT=0XFF;
259 1 return(value);
260 1
261 1 }
262
263 uint rom_read_block_word(void)
264 {
265 1 uint value1,value2;
266 1 value1=rom_read_block_byte();
267 1 value2=rom_read_block_byte();
268 1 value1=value1|(value2<<8);
269 1 return(value1);
270 1 }
271
272 uchar xdata *read_page(uint page)
273 { uint jj;
274 1 uchar xdata ii[528];
275 1 rom_read_block_start(0,page);
276 1 for(jj=0;jj<528;jj++)
277 1 { ii[jj]=rom_read_block_byte();
278 2 }
279 1 return ii;
280 1 }
281
282 uchar rom_write_page(uint addcow,uchar xdata *p)
283 { uint rom_count;
284 1 rom_write_block_start(0,addcow);
285 1 for(rom_count=0;rom_count<PAGE_MODE;rom_count++)
286 1 { rom_write_block_data(*(p+rom_count));
287 2 }
288 1 rom_write_block_end();
289 1 return 0;
290 1 }
291
292
293
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 672 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 528
PDATA SIZE = ---- ----
DATA SIZE = ---- 16
IDATA SIZE = ---- ----
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 + -