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

📄 anayserial.lst

📁 W78E516实现高速公路收费站语音费额显示器资料之三:产品的语音,通讯,显示全套源代码程序.
💻 LST
📖 第 1 页 / 共 4 页
字号:
 400                  {
 401   1              wdi=1;
 402   1              wdi=0;
 403   1              }
 404          void serial(void) interrupt 4
 405                  {
 406   1              uchr tp=0;
 407   1              if(RI==1)
 408   1                      {
 409   2                      RI=0;
 410   2                      if(f_rerx==1)
 411   2                              {
 412   3                              if(SBUF==start)
 413   3                                      {
 414   4                                      f_rerx=0;
 415   4                                      cnt_rx=0;
 416   4                                      }
 417   3                              }
 418   2                      else
 419   2                              {
 420   3                              cnt_rx++; //rxbuff[cnt_rx-1]=SBUF;
 421   3                              if(cnt_rx==1)
 422   3                                      {
 423   4                                      dispstyle=SBUF;
 424   4                                      }
 425   3                              if(cnt_rx==2)//显示数据会大于256,所以用两个字节来表示数据长度
 426   3                                      {
 427   4                                      displength_h=SBUF;
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 8   

 428   4                                      }
 429   3                              if(cnt_rx==3)
 430   3                                      {
 431   4                                      displength_l=SBUF;
 432   4                                      lengthdisp=displength_h*256+displength_l;
 433   4                                      if(lengthdisp>384)
 434   4                                              {
 435   5                                              f_rerx=1;
 436   5                                              f_transerr=1;
 437   5                                              Tx();
 438   5                                              }
 439   4                                      if(lengthdisp>127)
 440   4                                              {
 441   5                                              f_over128=1;
 442   5                                              }
 443   4                                      else
 444   4                                              {
 445   5                                              f_over128=0;
 446   5                                              }
 447   4                                      }
 448   3                              if((cnt_rx>3)&&(cnt_rx<(lengthdisp+4)))
 449   3                                      {
 450   4                                      if(cnt_rx<132)
 451   4                                              {
 452   5                                              rxbuff[cnt_rx-4]=SBUF; //0->127
 453   5                                              }
 454   4      
 455   4                                      else
 456   4                                              {
 457   5                                              CHPCON|=0x10;
 458   5                                              rxbuff2[cnt_rx-132]=SBUF; //128->384
 459   5                                              CHPCON=0x00;
 460   5                                              }
 461   4                                      }
 462   3                              if(cnt_rx==lengthdisp+4)
 463   3                                      {
 464   4                                      lengthsound=SBUF;
 465   4                                      CHPCON|=0x10;
 466   4                                      }
 467   3                              if((cnt_rx>(lengthdisp+4))&&(cnt_rx<(lengthdisp+lengthsound+5)))
 468   3                                      {
 469   4                                      soundbuff[cnt_rx-lengthdisp-5]=SBUF;
 470   4                                      }
 471   3                              if(cnt_rx==(lengthsound+lengthdisp+5))
 472   3                                      {
 473   4                                      rx_check=SBUF;
 474   4                                      }
 475   3                              if(cnt_rx==(lengthsound+lengthdisp+6))
 476   3                                      {
 477   4                                      f_rerx=1;
 478   4                                      if(SBUF==end)
 479   4                                              {
 480   5                                              f_anayrx=1;
 481   5                                              }
 482   4                                      else
 483   4                                              {
 484   5                                              f_transerr=1;
 485   5                                              Tx();
 486   5                                              }
 487   4                                      }
 488   3                              }
 489   2                      }
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 9   

 490   1              if(TI==1)
 491   1                      {
 492   2                      TI=0;
 493   2                      if(cnt_tx==1)
 494   2                              {
 495   3                              SBUF=end;
 496   3                              cnt_tx=0;
 497   3                              f_transerr=0;
 498   3                              f_transsuc=0;
 499   3                              }
 500   2                      if(cnt_tx==2)
 501   2                              {
 502   3                              cnt_tx--;
 503   3                              if(f_transerr==1)
 504   3                                      {
 505   4                                      SBUF=txerr;
 506   4                                      }
 507   3                              if(f_transsuc==1)
 508   3                                      {
 509   4                                      SBUF=txsuc;
 510   4                                      }
 511   3                              }
 512   2                      }
 513   1              }
 514          void timer0(void) interrupt 1
 515                  {
 516   1              TH0=0xfc;//定时1ms
 517   1              TL0=0x66;
 518   1              TR0=1;
 519   1              if(f_t_delaywr==1)
 520   1                      {
 521   2                      cnt_delaywr++;
 522   2                      if(cnt_delaywr==10)
 523   2                              {
 524   3                              cnt_delaywr=0;
 525   3                              f_t_delaywr=0;
 526   3                              f_delaywr=1;
 527   3                              }
 528   2                      }
 529   1              if(f_t_delayisd==1)
 530   1                      {
 531   2                      cnt_delayisd++;
 532   2                      if(cnt_delayisd==150)
 533   2                              {
 534   3                              cnt_delayisd=0;
 535   3                              f_t_delayisd=0;
 536   3                              //f_delayisd=1;
 537   3                              f_handlesound=1;
 538   3                              }
 539   2                      }
 540   1              }
 541          void int0(void) interrupt 0
 542                  {
 543   1              if(isd_ce==0)
 544   1                      {
 545   2                      f_t_delayisd=1;
 546   2                      }
 547   1              isd_ce=1;
 548   1              }
 549          void Tx(void)
 550                  {
 551   1              cnt_tx=2;
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 10  

 552   1              SBUF=0x10;
 553   1              }
 554          void rom2ram_hanzi(uchr x,ulng y)
 555                  {
 556   1              uchr tp;
 557   1              uchr i=0,j=0,m=0;
 558   1              uint temp=0;
 559   1              //m=(uchr)(y/65536);  //m直接取值会出错。
 560   1              temp=(uint)(y/256);
 561   1              m=(uchr)(temp/256);
 562   1              if(m==0)
 563   1                      {
 564   2                      rom_a17=0;
 565   2                      rom_a16=0;
 566   2                      }
 567   1              if(m==1)
 568   1                      {
 569   2                      rom_a17=0;
 570   2                      rom_a16=1;
 571   2                      }
 572   1              if(m==2)
 573   1                      {
 574   2                      rom_a17=1;
 575   2                      rom_a16=0;
 576   2                      }
 577   1              if(m==3)
 578   1                      {
 579   2                      rom_a17=1;
 580   2                      rom_a16=1;
 581   2                      }
 582   1              temp=y-m*65536;
 583   1              for(i=0;i<32;i++)
 584   1                      {
 585   2                      j=i/2;
 586   2                      rom_ce=0;
 587   2                      tp=XBYTE[temp+i];
 588   2                      rom_ce=1;
 589   2                      if((i%2)==0)
 590   2                              {
 591   3                              if(x<13)
 592   3                                      {
 593   4                                      ram_ce=0;
 594   4                                      nDispRam[12*j+x-2]=tp;
 595   4                                      }
 596   3                              else
 597   3                                      {
 598   4                                      ram_ce=0;
 599   4                                      nDispRam[12*(j+16)+x-2-12]=tp;
 600   4                                      }
 601   3                              ram_ce=1;
 602   3                              }
 603   2                      if((i%2)==1)

⌨️ 快捷键说明

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