📄 hldkzqts.lst
字号:
209 1 *DestBuf=Src;
210 1 Check_Toggle_Ready(DestBuf); /* wait for TOGGLE bit to get ready */
211 1 }
212
213
214 /************************************************************************/
215 /* PROCEDURE: Program_One_Sector */
216 /* */
217 /* This procedure can be used to program a total of 4096 bytes of data */
218 /* to the SST39VF016. */
219 /* */
220 /* NOTES: 1. It is necessary to first erase the sector before the */
221 /* programming. */
222 /* 2. This sample code assumes the destination address passed */
C51 COMPILER V7.06 HLDKZQTS 07/20/2004 13:59:29 PAGE 5
223 /* from the calling function is the starting address of the */
224 /* sector. */
225 /* */
226 /* Input: */
227 /* Src SOURCE address containing the data which will be */
228 /* written to the 39VF016 */
229 /* Dst DESTINATION address which will be written with the */
230 /* data passed in from Src */
231 /* */
232 /* Output: */
233 /* None */
234 /************************************************************************/
235
236 void Program_One_Sector (uint Dst)
237 {
238 1 uchar xdata *SourceBuf;
239 1 uchar xdata *DestBuf;
240 1
241 1 uint Index;
242 1 page=Dst;
243 1 SourceBuf = 0x1000;
244 1 DestBuf = 0x8000;
245 1
246 1 Erase_One_Sector(Dst); /* erase the sector first */
247 1
248 1 for (Index = 0; Index < 4096; Index++)
249 1 {
250 2 Program_One_Byte( *SourceBuf, DestBuf);
251 2 DestBuf++;
252 2 SourceBuf++;
253 2 }
254 1 }
255
256 //***********************************************
257 // 接收数据
258 //************************************************
259 void rece_picture(void)
260 {
261 1 uchar i;
262 1 uchar xdata *op;
263 1 uchar idata *sp; //0x1000 test 0x1000
264 1 FPGH=send_buf[4];
265 1 FPGL=send_buf[3];
266 1 op=(send_buf[5]*64)|0x1000;
267 1 sp=&send_buf[8];
268 1 for(i=0;i<64;i++)*op++=*sp++; //写入RAM 1000H 单元 位图数据
269 1 }
270
271 /*
272 ************************************
273 通讯协议解析 接收数据
274 *******************************************8
275 */
276 void receive(void)
277 {
278 1
279 1 switch(send_buf[2])//命令标志
280 1 {
281 2 case 1:rec_sta=1;//进入接收状态
282 2 break;
283 2 case 2: //接收数据
284 2 rece_picture();
C51 COMPILER V7.06 HLDKZQTS 07/20/2004 13:59:29 PAGE 6
285 2 break;
286 2 case 0: //加载某一帧数据到显存
287 2 dis_page=send_buf[4]*256+send_buf[3];
288 2 load_data(dis_page);
289 2 break;
290 2 case 3: //将一扇区数据写闪存
291 2 Program_One_Sector(send_buf[4]*256+send_buf[3]);
292 2 break;
293 2 default:break;
294 2 }
295 1 }
296 //********************************************
297 void delay1s()
298 {
299 1 uint i,j;
300 1 for(i=0;i<0xfff;i++)
301 1 for(j=0;j<0x11;j++);
302 1 led=!led;
303 1 }
304 //***********************************************
305 void test()
306 {
307 1 uchar xdata *rp;
308 1 uchar xdata *p;
309 1 uchar xdata *sp;
310 1 uchar j;
311 1 uint i;
312 1 p=0x0000;
313 1 memset(p,0x00,1024);
314 1 delay1s();//1
315 1
316 1 FPGH=4;FPGL=0;
317 1 p=0x0000;
318 1 sp=0x8000;
319 1 rp=memcpy(p,sp,255);
320 1 delay1s();//1
321 1 p=0x0100;
322 1 sp=0x8100;
323 1 rp=memcpy(p,sp,255);
324 1 delay1s();//1
325 1 p=0x0200;
326 1 sp=0x8200;
327 1 rp=memcpy(p,sp,255);
328 1 delay1s();//1
329 1 p=0x0300;
330 1 sp=0x8300;
331 1 rp=memcpy(p,sp,255);
332 1 delay1s();//1XS
333 1
334 1
335 1 p=0x0000;
336 1 memset(p,0x00,1024);
337 1 delay1s();//1
338 1 p=0x0000;
339 1 memset(p,255,255);
340 1 delay1s(); //4
341 1
342 1 p=0x0100;
343 1 memset(p,255,255);
344 1 delay1s(); //4
345 1
346 1 p=0x0200;
C51 COMPILER V7.06 HLDKZQTS 07/20/2004 13:59:29 PAGE 7
347 1 memset(p,255,255);
348 1 delay1s();//8
349 1
350 1 p=0x0300;
351 1 memset(p,255,255);
352 1 delay1s();//15
353 1
354 1 }
*** WARNING C280 IN LINE 310 OF HLDKZQTS.C: 'j': unreferenced local variable
*** WARNING C280 IN LINE 311 OF HLDKZQTS.C: 'i': unreferenced local variable
355
356 //********************************************
357 // 主程序
358 //********************************************
359 void main()
360 {
361 1 uchar xdata *p;
362 1 PS=1;
363 1 ES=0;
364 1 SM0=1;
365 1 SM1=1;
366 1 T2CON=0X30;
367 1 RCAP2H=0XFF;
368 1 TH2=0XFF;
369 1 RCAP2L=0Xf6; //9600bps c4 115200bps fb 57600 f6
370 1 TL2=0Xf6;
371 1 TR2=1;
372 1 EA=1;
373 1 REN=1;
374 1 ES=1;
375 1 SM2=1;
376 1 ADD=(~P1)&0x1f;
377 1 frameok=0;
378 1 cler();
379 1
380 1 p=0x1000;
381 1 memset(p,0x01,4096);
382 1 Program_One_Sector(1024);
383 1
384 1 while(1)
385 1 {test();
386 2 }
387 1 while(1)
388 1 {
389 2 if(frameok)
390 2 {receive();frameok=0;}
391 2 }//while(1)
392 1 }
393 //*****************************************
394 // 串口中断服务程序
395 //*****************************************
396 void send(void) interrupt 4
397 {
398 1 uchar d;
399 1 if(!TI && RI && !frameok)
400 1 {RI=0;
401 2 d=SBUF;
402 2 if(pointer==0)
403 2 {if(d==ADD)
404 3 {subchk=d;send_buf[0]=d;TB8=1;senden=1;
405 4 delayms(1);SBUF=d;while(!TI);TI=0;delayms(1);
406 4 senden=0;SM2=0;TB8=0;pointer++;paklen=68;}//71
C51 COMPILER V7.06 HLDKZQTS 07/20/2004 13:59:29 PAGE 8
407 3 else if(d==0xff)
408 3 {subchk=d;SM2=0;TB8=0;pointer++;paklen=5;}
409 3
410 3 }
411 2 else
412 2 {if(pointer==paklen)
413 3 {send_buf[pointer]=d;
414 4 if(d==subchk)
415 4 {senden=1;delayms(1);SBUF=subchk;while(!TI);delayms(1);senden=0;TI=0;frameok=1;}
416 4 else
417 4 {senden=1;delayms(1);SBUF=~subchk;while(!TI);delayms(1);TI=0;senden=0;}
418 4 SM2=1;pointer=0;
419 4 }
420 3 else
421 3 {send_buf[pointer]=d;subchk+=d;pointer++;}
422 3 }
423 2 }//end if
424 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1061 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 17
IDATA SIZE = 72 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -