📄 hldkzqv11.lst
字号:
237 1 uchar xdata *op;
238 1 uchar idata *sp; //0x1000 test 0x1000
239 1 //FPGH=send_buf[4];
240 1 //FPGL=send_buf[3];
241 1 if(type)
C51 COMPILER V7.06 HLDKZQV11 08/10/2004 19:20:16 PAGE 5
242 1 op=(send_buf[5]*64);
243 1 else
244 1 op=(send_buf[5]*64)|0x1000;
245 1
246 1 sp=&send_buf[8];
247 1 for(i=0;i<64;i++)*op++=*sp++; //写入RAM 1000H 单元 位图数据
248 1 }
249 //********************************************
250 void delay1s()
251 {
252 1 uint i,j;
253 1 for(i=0;i<0xfff;i++)
254 1 {for(j=0;j<0x50;j++);
255 2 wdgclr=!wdgclr;
256 2 }
257 1 }
258 //***********************************************
259 void test()
260 {
261 1 //uchar xdata *rp;
262 1 uchar xdata *p;
263 1 //uchar xdata *sp;
264 1 p=0x0000;
265 1 memset(p,0x00,1024);
266 1 delay1s();//1
267 1 p=0x0000;
268 1 memset(p,255,255);
269 1 delay1s(); //4
270 1
271 1 p=0x0100;
272 1 memset(p,255,255);
273 1 delay1s(); //4
274 1
275 1 p=0x0200;
276 1 memset(p,255,255);
277 1 delay1s();//8
278 1
279 1 p=0x0300;
280 1 memset(p,255,255);
281 1 delay1s();//15
282 1 /*
283 1 p=0x0000;
284 1 memset(p,0x00,1024);
285 1 p=0x1000;
286 1 memset(p,0x80,4096);
287 1 Program_One_Sector(0);
288 1 delay1s();//1
289 1
290 1 FPGH=0;FPGL=0;
291 1 p=0x0000;
292 1 sp=0x8000;
293 1 rp=memcpy(p,sp,255);
294 1 delay1s();//1
295 1 p=0x0100;
296 1 sp=0x8100;
297 1 rp=memcpy(p,sp,255);
298 1 delay1s();//1
299 1 p=0x0200;
300 1 sp=0x8200;
301 1 rp=memcpy(p,sp,255);
302 1 delay1s();//1
303 1 p=0x0300;
C51 COMPILER V7.06 HLDKZQV11 08/10/2004 19:20:16 PAGE 6
304 1 sp=0x8300;
305 1 rp=memcpy(p,sp,255);
306 1 delay1s();//1XS
307 1 */
308 1 }
309
310 /*
311 ************************************
312 通讯协议解析 接收数据
313 *******************************************8
314 */
315 void receive(void)
316 {
317 1 /*
318 1 uchar xdata *p;
319 1 uchar xdata *rp;
320 1 uchar xdata *sp;*/
321 1 switch(send_buf[2])//命令标志
322 1 {
323 2 case 1:rec_sta=1;TR0=0;//进入接收状态
324 2 break;
325 2 case 2: //接收数据
326 2 rece_picture(0);
327 2 break;
328 2 case 0: //加载某一帧数据到显存
329 2 dis_page=send_buf[4]*256+send_buf[3];
330 2 load_data(dis_page);
331 2 break;
332 2 case 3: //将一扇区数据写闪存
333 2 Program_One_Sector(send_buf[4]*256+send_buf[3]);
334 2 break;
335 2 case 4: //测试
336 2 test();
337 2 break;
338 2 case 5: //接收到显存
339 2 rece_picture(1);
340 2 case 6: //同步信号
341 2 dis_page=send_buf[4]*256+send_buf[3];
342 2 ms=0;
343 2 break;
344 2 case 7: //进入自动播放
345 2 page_sta=send_buf[4]*256+send_buf[3];
346 2 dis_page=page_sta;
347 2 page_end=send_buf[6]*256+send_buf[5];
348 2 zhepe=100/send_buf[8];
349 2 // FPGH=0;FPGL=0;
350 2 /* p=0x1000;
351 2 sp=0x8000;
352 2 rp=memcpy(p,sp,4096);
353 2
354 2 XBYTE[0x10ff]=0xaa;
355 2 XBYTE[0x11ff]=send_buf[4];
356 2 XBYTE[0x12ff]=send_buf[3];
357 2 XBYTE[0x13ff]=send_buf[6];
358 2 XBYTE[0x14ff]=send_buf[5];
359 2 XBYTE[0x15ff]=zhepe;
360 2 Program_One_Sector(0);
361 2 */
362 2 ms=0;
363 2 TR0=1;
364 2 break;
365 2 default:break;
C51 COMPILER V7.06 HLDKZQV11 08/10/2004 19:20:16 PAGE 7
366 2 }
367 1 }
368
369
370
371 //********************************************
372 // 主程序
373 //********************************************
374 void main()
375 {
376 1 //uchar xdata *p;
377 1 PS=1;
378 1 ES=0;
379 1 SM0=1;
380 1 SM1=1;
381 1 T2CON=0X30;
382 1 RCAP2H=0XFF;
383 1 TH2=0XFF;
384 1 RCAP2L=0Xfb; //9600bps= c4 115200bps =fb 57600= f6 19200 = e2
385 1 TL2=0Xfb;
386 1 TR2=1;
387 1
388 1 REN=1;
389 1 TMOD=0x05; //定时器0 模式1 外部时钟
390 1 TL0=V_TL0;
391 1 TH0=V_TH0;
392 1 //TR0=1;
393 1 ET0=1;
394 1 ES=1;
395 1 EA=1;
396 1 SM2=1;
397 1 ADD=(~P1)&0x1f;
398 1 //ADD=1;
399 1 frameok=0;
400 1 test();
401 1 while(1)
402 1 {
403 2 //
404 2
405 2 wdgclr=!wdgclr;
406 2 if(timout)
407 2 {load_data(dis_page);dis_page++;timout=0;
408 3 if(dis_page>page_end)dis_page=page_sta;
409 3 }
410 2
411 2 if(frameok)
412 2 {receive();frameok=0;}
413 2 }//while(1)
414 1 }
415 /************************************************/
416 void send_delay( void)
417 {
418 1 uint Count;
419 1 for (Count=0;Count<=200;Count++);
420 1
421 1 }
422 //*****************************************
423 // 串口中断服务程序
424 //*****************************************
425 void send(void) interrupt 4
426 {
427 1 uchar d;
C51 COMPILER V7.06 HLDKZQV11 08/10/2004 19:20:16 PAGE 8
428 1 if(!TI && RI && !frameok)
429 1 {RI=0;
430 2 d=SBUF;
431 2 if(pointer==0)
432 2 {if(d==ADD)
433 3 {subchk=d;send_buf[0]=d;TB8=1;senden=1;
434 4 send_delay();SBUF=d;while(!TI);TI=0;send_delay();
435 4 senden=0;SM2=0;TB8=0;pointer++;}//71
436 3 else if(d==0xff)
437 3 {subchk=d;SM2=0;pointer++;}
438 3
439 3 }
440 2 else
441 2 {if(pointer==71)
442 3 {send_buf[pointer]=d;
443 4 if(d==subchk)
444 4 {senden=1;send_delay();SBUF=subchk;while(!TI);send_delay();senden=0;TI=0;frameok=1;}
445 4 else
446 4 {senden=1;send_delay();SBUF=~subchk;while(!TI);send_delay();TI=0;senden=0;}
447 4 SM2=1;pointer=0;
448 4 }
449 3 else
450 3 {send_buf[pointer]=d;subchk+=d;pointer++;}
451 3 }
452 2 }//end if
453 1 }
454 //*************************************
455 void timer1() interrupt 1
456 {TL0=V_TL0;
457 1 TH0=V_TH0;
458 1 ms++;
459 1 if(ms>zhepe)
460 1 {timout=1;
461 2 ms=0;
462 2 }
463 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1051 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 10
IDATA SIZE = 72 ----
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 + -