⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testboard1.lst

📁 PIC MCU开发用的一个小工具,用于对某些外设芯片子程序的调试,有2个按键2x20的字符LCD,3个I/O,1个UART,非常好用,包含SCHPCB 以及初始化C代码.
💻 LST
📖 第 1 页 / 共 3 页
字号:
   469:                 {writ_com(0xc0);}

   470:          for(;cnt>0;cnt--)

   471:                 {writ_data(*pt);pt++;}

   472:          writ_com(0x0c);

   473:         }

   474: /******************************************

   475: 向指定位置写数据

   476:   作用:想指定位置写数

   477:   入口:写入数据data,写入位置addr(0~39)

   478:   出口:无

   479: ******************************************

   480:         void disp_onedata(unsigned char data,unsigned char addr)

   481:         {

   482:          if(addr>19)

   483:                 {addr-=20;addr+=0xc0;}

   484:          else

   485:                 {;addr+=0x80;}

   486:          writ_com(addr);

   487:          writ_data(data);

   488:         }

   489: /************************************************************

   490: 总线空闲等待函数waitfree()

   491:   作用:等待总线空闲

   492:   入口:无

   493:   出口:无

   494: ************************************************************/

   495:         void waitfree(void)

   496:         {

   497:          TMR1ON=0;

   498:          TMR1IF=0;

   499:          TMR1L=0x65;

   500:          TMR1H=0xf0;

   501:          TMR1ON=1;      //运行T1

   502:          while(!TMR1IF)

   503:                 {

   504:                  if(RA2)

   505:                         {

   506:                          TMR1L=0x65;

   507:                          TMR1H=0xf0;

   508:                          TMR1ON=1;      //运行T1

   509:                         }

   510:                 }

   511:         }

   512: /************************************************************

   513: 延时函数d1mS()

   514:   作用:延时1mS

   515: ************************************************************/

   516:         void d1mS(void)

   517:         {

   518:          unsigned char cnt;

   519:          for(cnt=123;cnt>0;cnt--);

   520:          asm("nop");asm("nop");

   521:         }

   522: /******************************************

   523: 主循环程序main()

   524: 入口:无

   525: 出口:无

   526: *******************************************/

   527:         main()

   528:         {

   529:          unsigned char count;

   530:          sfr_setup();

   531: //       buzz=1;

   532: //       lcd_init();

   533: //       disp_loge(welcome_words,20,0);

   534: //       disp_loge(type_words,20,1);

   535: //       d10mS();

   536: //       buzz=0;

   537: //       for(count=255;count>0;count--)

   538: //              {d10mS();}

   539: //       writ_com(0x01);

   540: //       d4mS();

   541: //       disp_loge(playpar,12,0);

   542: //       disp_loge(playstate,13,1);      

   543:          waitfree();

   544:          asm("movf _PORTA,w");RAIF=0;RAIE=0;IOCA1=1;

   545:          GIE=1;INTE=1;

   546:          while(1)

   547:                 {

   548:                  ;

   549: /*

   550:                  if(softpsw&0x02)

   551:                         {

   552:                          disp_onedata(data_tab(nowdisc),3);

   553:                          disp_onedata(data_tab(nowminH),9);

   554:                          writ_data(data_tab(nowminL));

   555:                          disp_onedata(data_tab(nowsecH),12);

   556:                          writ_data(data_tab(nowsecL));

   557:                          disp_onedata(data_tab(nowtrackH),17);

   558:                          writ_data(data_tab(nowtrackL));

   559:                          if(playpsw&0x01)

   560:                                 {disp_onedata('S',36);writ_data('c');writ_data('a');writ_data('n');}

   561:                          else

   562:                                 {disp_onedata(' ',36);writ_data(' ');writ_data(' ');writ_data(' ');}

   563:                          if(playpsw&0x08)

   564:                                 {disp_onedata('R',36);writ_data('e');writ_data('p');

   565:                                  writ_data('A');}

   566:                          else if(playpsw&0x04)

   567:                                 {disp_onedata('R',36);writ_data('e');writ_data('p');

   568:                                  writ_data('1');}

   569:                          softpsw&=0xfd;

   570:                         }

   571: */

   572:                 }

   573:         }

   574: 

   575: //CDC状态数据移位

   576:         void shiftdata(void)

   577:         {

   578:          unsigned char temp;

   579:          temp=STATUS;

   580:          #asm

   581:                 bcf     _STATUS,6

   582:                 bsf             _STATUS,5

   583:                 rlf     _discpsw0,f

   584:                 rlf     _discpsw1,f

   585:                 rlf     _discpsw2,f

   586:                 rlf     _discpsw3,f

   587:                 rlf     _discpsw4,f

   588:                 rlf     _discpsw5,f

   589:                 rlf     _discpsw6,f

   590:                 rlf     _discpsw7,f

   591:          #endasm

   592:          STATUS=temp;

   593:         }

   594: //数据清除

   595:         void dataclear(void)

   596:         {

   597:          discpsw0=0;discpsw1=0;discpsw2=0;

   598:          discpsw3=0;discpsw4=0;discpsw5=0;

   599:          discpsw6=0;discpsw7=0;

   600:         }

   601: /******************************************

   602: 中断处理函数inthandle()

   603:   作用:

   604:   入口:无;

   605:   出口:无;

   606: *******************************************/

   607:         void interrupt inthandle(void)

   608:         {

   609:          if(INTE&&INTF)

   610:                 {

   611:                  RA0=0;

   612: //************t1控制

   613:                  TMR1IE=0;TMR1ON=0;TMR1IF=0;    //停止1

   614:                  TMR1L=0x65;TMR1H=0xf0;                 //T1初值

   615:                  softpsw|=0x01;                 //树数据读取标志

   616: //************读取数据

   617:                  d1mS();                                //延时准备读数

   618:                  shiftdata();                   //调整数据队列

   619:                  if(RA2)

   620:                         {discpsw0|=0x01;}

   621:                  else

   622:                         {discpsw0&=0xfe;}

   623: //************准备下一位

   624:                  while(RA2);

   625:                  TMR1ON=1;      //运行T1

   626:                  TMR1IE=1;

   627: //************复位INT中断

   628:                  INTF=0;

   629:                 }

   630: 

   631:          if(RAIE&&RAIF)

   632:                 {

   633:                  unsigned char temp; 

   634:                  if(softpsw&0x02)

   635:                                 {

   636:                                  temp=data_rec();

   637:                                  switch(temp)

   638:                                         {

   639:                                          case 0xf0:             //数位1

   640:                                                 data_send(nowdisc);break;

   641:                                          case 0xf1:             //数位2

   642:                                                 data_send(nowtrackH);break;

   643:                                          case 0xf2:             //数位3

   644:                                                 data_send(nowtrackL);break;

   645:                                          case 0xf3:             //数位4

   646:                                                 data_send(nowminH);break;

   647:                                          case 0xf4:             //数位5

   648:                                                 data_send(nowminL);break;

   649:                                          case 0xf5:             //数位6

   650:                                                 data_send(nowsecH);break;

   651:                                          case 0xf6:             //数位7

   652:                                                 data_send(nowsecL);softpsw&=0xfd;RA0=0;break;

   653:                                          default: ;

   654:                                         }

   655:                                 }

   656: /*               if(RA2)

   657:                         {

   658:                          TMR1IE=0;TMR1ON=0;TMR1IF=0;    //停止1

   659:                          TMR1L=0;TMR1H=0;                       //T1初值

   660:                          TMR1ON=1;      //运行T1

   661:                         }

   662:                  else

   663:                         {

   664:                          TMR1ON=0;

   665:                          shiftdata();                   //调整数据队列

   666:                          if(TMR1H<0x04)

   667:                                 {discpsw0&=0xfe;}

   668:                          else

   669:                                 {discpsw0|=0x01;}

   670:                          TMR1IF=0;TMR1L=0x65;TMR1H=0xf0;                        //T1初值

   671:                          TMR1ON=1;TMR1IE=1;     //运行T1                 

   672:                         }*/

   673:                  asm("movf _PORTA,w");RAIF=0;RAIE=0;

   674:                 }

   675:          if(TMR1IE&&TMR1IF)

   676:                 {

   677:                  TMR1IE=0;TMR1ON=0;TMR1IF=0;    //停止1

   678:                  softpsw&=0xFE;                 //关数据读取标志

   679:                  if(discpsw7==0x99)

   680:                         {

   681:                          nowtrackH=discpsw6&0x0f;

   682:                          nowtrackL=discpsw5>>4; //Track

   683:                          nowminH=discpsw4&0x0f; 

   684:                          nowminL=discpsw3>>4;   //Min

   685:                          nowsecH=discpsw3&0x0f;

   686:                          nowsecL=discpsw2>>4;   //sec

   687:                          playpsw&=0xf3;

   688:                          playpsw|=discpsw2&0x0c;        //REP状态

   689:                          if(discpsw1&0x80)                      //SCAN状态

   690:                                 {playpsw|=0x01;}

   691:                          else

   692:                                 {playpsw&=0xfe;}                                

   693:                         }

   694:                  else if(discpsw5==0x9b)

   695:                         {nowdisc=discpsw4&0x0f;} 

   696:                  dataclear();waitfree();softpsw|=0x02;

   697:                  asm("movf _PORTA,w");RAIF=0;RAIE=1;RA0=1;

   698:                 }

   699:         }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -