?? dispfinal.lst
字號:
305 1 osd2_cs=0;
306 1 left_shift(0x0e);
307 1 while(osd_busy);
308 1 left_shift(selectable_tv); //normal_tv); //display position control
309 1 while(osd_busy);
310 1 left_shift(disp_position_high); //display position control
311 1 while(osd_busy);
312 1 left_shift(disp_position_low);
313 1 while(osd_busy);
314 1 left_shift(charsize); //charater size,smooth and mask pulse control command
315 1 while(osd_busy);
316 1 left_shift(smooth);
317 1 while(osd_busy);
318 1 left_shift(no_background);
319 1 while(osd_busy);
320 1 left_shift(back_color_fring);
321 1 delay(1);
322 1 while(osd_busy);
323 1 left_shift(clear_vram);
324 1 delay(10);
325 1 while(osd_busy);
326 1 left_shift(disp_control); //display on osc on blinking 1:1 1hz
327 1 write_osd_date();
328 1 osd1_cs=1;
329 1 osd2_cs=1;
330 1 osd1_cs=0;
331 1 osd2_cs=0;
332 1 write_osd_time();
333 1 while(osd_busy);
334 1 osd1_cs=1;
335 1 osd2_cs=1;
336 1 osd1_cs=0;
337 1 osd2_cs=0;
338 1 left_shift(0x0e);
339 1 while(osd_busy);
340 1 left_shift(disp_position_high); //display position control
341 1 while(osd_busy);
342 1 left_shift(disp_position_low);
343 1 while(osd_busy);
344 1 left_shift(charsize); //charater size,smooth and mask pulse control command
345 1 while(osd_busy);
346 1 left_shift(smooth);
347 1 while(osd_busy);
348 1 left_shift(no_background);
349 1 while(osd_busy);
350 1 left_shift(back_color_fring);
351 1 delay(1);
352 1 while(osd_busy);
353 1 left_shift(clear_vram);
354 1 delay(10);
355 1 while(osd_busy);
356 1 left_shift(disp_control); //display on osc on blinking 1:1 1hz
357 1 write_osd_date();
358 1 osd1_cs=1;
359 1 osd2_cs=1;
360 1 osd1_cs=0;
361 1 osd2_cs=0;
362 1 write_osd_time();
363 1 while(osd_busy);
364 1 osd1_cs=1;
365 1 osd2_cs=1;
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 7
366 1 }
367
369 void televisionmode(void)
370 {
371 1 unsigned char i;
372 1 i=receive_buf[0]&0x03;
373 1 if(i==0)
374 1 {
375 2 osd1_cs=0;
376 2 osd2_cs=0;
377 2 }
378 1 if(i==1) osd1_cs=0;
379 1 if(i==2) osd2_cs=0;
380 1 i=receive_buf[1]&0x03;
381 1 while(osd_busy);
382 1 left_shift(normal_tv|i);
383 1 while(osd_busy);
384 1 osd1_cs=1;
385 1 osd2_cs=1;
386 1 }
387 //-------------------------------------------------------------------------------
388 unsigned long calculate_addr(unsigned char x,unsigned char y)
389 {
390 1 unsigned long data pos;
391 1 pos=((x-0xa1)*0x5eL+(y-0xa1))*0x20;
392 1 return(pos);
393 1 }
394 //-------------------------------------------------------------------------
395 void write_osd_cram(unsigned char channel)
396 {
397 1 unsigned char data i,number;
398 1 unsigned long data pos;
399 1 // delay(10); //9.2
400 1 // pointer=receive_buf[0]&0x03; //receive_buf[0] contains command and track
401 1 if(channel==0)
402 1 {
403 2 osd1_cs=0;
404 2 i=cram_addr;
405 2 while(osd_busy); //write create character addr
406 2 left_shift(i);
407 2 i=0x00;
408 2 while(osd_busy);
409 2 left_shift(i);
410 2 for(i=0;i<32;)
411 2 {
412 3 if(character_code[0][i]>0x80)
413 3 {
414 4 pos=calculate_addr(character_code[0][i],character_code[0][i+1]);
415 4 number=(unsigned char)(pos>>16);
416 4 if((number&0x01)!=0) AD16=1;
417 4 else AD16=0;
418 4 if((number&0x02)!=0) AD17=1;
419 4 else AD17=0;
420 4 create_character((unsigned int)pos);
421 4 i++;
422 4 i++;
423 4 }
424 3 else break;
425 3 }
426 2 while(osd_busy);
427 2 osd1_cs=1;
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 8
428 2 }
429 1 if(channel==1)
430 1 {
431 2 osd2_cs=0;
432 2 i=cram_addr;
433 2 while(osd_busy); //write create character addr
434 2 left_shift(i);
435 2 i=0x00;
436 2 while(osd_busy);
437 2 left_shift(i);
438 2 for(i=0;i<32;)
439 2 {
440 3 if(character_code[1][i]>0x80)
441 3 {
442 4 pos=calculate_addr(character_code[1][i],character_code[1][i+1]);
443 4 number=(unsigned char)(pos>>16);
444 4 if((number&0x01)!=0) AD16=1;
445 4 else AD16=0;
446 4 if((number&0x02)!=0) AD17=1;
447 4 else AD17=0;
448 4 create_character((unsigned int)pos);
449 4 i++;
450 4 i++;
451 4 }
452 3 else break;
453 3 }
454 2 while(osd_busy)
455 2 osd2_cs=1;
456 2 }
457 1 }
458 //--------------------------------------------------------------------------
459 void write_osd_vram(unsigned char pos,unsigned char channel)
460 {
461 1 unsigned char data i,j;
462 1 if(channel==0) osd1_cs=0;
463 1 else osd2_cs=0;
464 1 i=(receive_buf[1]&0x30)>>4;
465 1 left_shift(charsize|i);
466 1 while(osd_busy); left_shift(smooth|pos);
467 1 i=char_position|((disp_lines>>3)&0x01);
468 1 j=disp_lines<<5&0xe0|disp_words;
469 1 while(osd_busy);
470 1 left_shift(i); //command and lines.3
471 1 while(osd_busy);
472 1 left_shift(j); //lines.2-0 and words
473 1 if(start_blink==1) left_shift(char_blink);
474 1 else left_shift(char_attribute);
475 1 for(i=0;i<24;i++)
476 1 {
477 2 if(i+disp_words>=24)
478 2 {
479 3 address_buf[i]=0xef;
480 3 continue;
481 3 }
482 2 if((start_blink==(i+1))&(i!=0))
483 2 {
484 3 if(channel==0)
485 3 {
486 4 osd1_cs=1;
487 4 _nop_();
488 4 osd1_cs=0;
489 4 }
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 9
490 3 else
491 3 {
492 4 osd2_cs=1;
493 4 _nop_();
494 4 osd2_cs=0;
495 4 }
496 3 left_shift(char_blink);
497 3 }
498 2 if(end_blink==(i+1))
499 2 {
500 3 if(channel==0)
501 3 {
502 4 osd1_cs=1;
503 4 _nop_();
504 4 osd1_cs=0;
505 4 }
506 3 else
507 3 {
508 4 osd2_cs=1;
509 4 _nop_();
510 4 osd2_cs=0;
511 4 }
512 3 left_shift(char_attribute);
513 3 }
514 2 if(address_buf[i]==0xef) break;
515 2 left_shift(address_buf[i]);
516 2 address_buf[i]=0xef;
517 2 }
518 1 while(osd_busy);
519 1 { osd1_cs=1;
520 2 osd2_cs=1; }
521 1 }
522 //---------------------------------------------------------------------------
523 void create_character(unsigned int pos) //requista address
524 {
525 1 unsigned char data i,pow;
526 1 while(osd_busy); //write a space line
527 1 left_shift(cram_data);
528 1 while(osd_busy);
529 1 left_shift(0x00);
530 1 while(osd_busy); //write a space line
531 1 left_shift(cram_data);
532 1 while(osd_busy);
533 1 left_shift(0x00);
534 1 for(i=0;i<16;i++) //write character dot information
535 1 {
536 2 pow=XBYTE[pos++];
537 2 pow=pow&0x0f|cram_data;
538 2 while(osd_busy);
539 2 left_shift(pow);
540 2 pow=XBYTE[pos++];
541 2 while(osd_busy);
542 2 left_shift(pow);
543 2 }
544 1 }
545
546 //----------------------------------------------------------------------------
547 void detemine_command(void)
548 {
549 1 unsigned char data comm;
550 1 receive_flag=0;
551 1 ES=0;
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 10
552 1 for(comm=0;comm<29;comm++)
553 1 {
554 2 receive_buf[comm]=receive_buf2[comm];
555 2 }
556 1 ES=1;
557 1 comm=receive_buf[0]&0xf0;
558 1 switch(comm)
559 1 {
560 2 case 0x10: timer_position(); break;
561 2 case 0x20: timer_setup(); break;
562 2 case 0x30: clear_disp(); break;
563 2 case 0x40: disp_character(); break;
564 2 case 0x50: release_alarm(); break;
565 2 case 0x60: video_change(); break;
566 2 case 0x70: background_set(); break;
567 2 case 0x80: close_time(); break;
568 2 case 0x90: close_date(); break;
569 2 case 0xa0: televisionmode(); break;
570 2 default: break;
571 2 }
572 1 }
573
574 //--------------------------------------------------------------------------
575 unsigned char get_strokes(unsigned char pow)
576 {
577 1 char data t,i=0,j=47;
578 1 while(j>=i)
579 1 {
580 2 t=(i+j)/2;
581 2 if(pow==disp_strokes[t].ascii)
582 2 {
583 3 return(disp_strokes[t].stroke);
584 3 }
585 2 else
586 2 {
587 3 if(pow<disp_strokes[t].ascii)
588 3 {
589 4 j=t-1;
590 4 }
591 3 else
592 3 {
593 4 if(pow>disp_strokes[t].ascii)
594 4 i=t+1;
595 4 }
596 3 }
597 2 }
598 1 return(0xce);
599 1 }
600 //---------------------------------------------------------------------------
601 unsigned char get_ch_strokes(unsigned char high_data,unsigned char low_data)
602 {
603 1 char data t,i=0,j=49;
604 1 while(j>=i)
605 1 {
606 2 t=(i+j)/2;
607 2 if((high_data==disp_ch_strokes[t].code_high)&(low_data==disp_ch_strokes[t].code_low))
608 2 {
609 3 return(disp_ch_strokes[t].ch_stroke);
610 3 }
611 2 else
612 2 {
613 3 if((high_data<disp_ch_strokes[t].code_high)||\
C51 COMPILER V6.12 DISPFINAL 09/08/2004 09:49:09 PAGE 11
614 3 ((high_data==disp_ch_strokes[t].code_high)&&\
615 3 (low_data<disp_ch_strokes[t].code_low)))
616 3 {
617 4 j=t-1;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -