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

📄 anayserial.lst

📁 W78E516实现高速公路收费站语音费额显示器资料之三:产品的语音,通讯,显示全套源代码程序.
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE ANAYSERIAL
OBJECT MODULE PLACED IN D:\01工作\云星宇~1\软件调试\终稿\通讯程序\ANAYSERIAL.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\01工作\云星宇~1\软件调试\终稿\通讯程序\ANAYSERIAL.C DB SB OE

line level    source

   1          /**************************************************************/
   2          /**文件名:anayserial.c                                      **/
   3          /**                                                          **/
   4          /**文件描述: 通过RS232接收上位机的数据,对该数据进行分析;     **/
   5          /**          显示相应的内容,发出相应的语音.                  **/
   6          /**          数据类型分为:机器内码形式,点阵形式,固定语句形式 **/
   7          /**                                                          **/
   8          /**创建人: 陈芸    时间: 2007年07月17日                      **/
   9          /**                                                          **/
  10          /**版本号: 01                                                **/
  11          /**修改记录                                                  **/
  12          /**************************************************************/
  13          
  14          #include<reg52.h>
  15          #include<absacc.h>
  16          #include<def_pin.h>
  17          #include<def_para.h>
  18          #include<def_code.h>
  19          
  20          void WDFeed(void);
  21          void Tx(void);
  22          void rom2ram_hanzi(uchr x,ulng y);
  23          void rom2ram_ascii(uchr x,uchr y);
  24          
  25          void main(void)
  26                  {
  27   1              uchr cnt_zi=0,tmpi=0,tmpq=0,tmpw=0,tp=0,tmp=0;
  28   1              uint i=0;
  29   1              ulng tmpoffset=0;
  30   1              uchr style=0,length_h=0,length_l=0,chk=0,length_s=0;
  31   1              uint length_d=0;
  32   1              bit f_over=0;
  33   1      
  34   1              //片内扩展DATA设置
  35   1              CHPENR=0x87;
  36   1              CHPENR=0x59;
  37   1              CHPCON=0x00;  //CHPCON|=0x10;//片内外部存储器写允许   //CHPCON=0x00; ----则片内外部存储器写禁止
  38   1              //串口初始化
  39   1              TMOD=0x21;  //定时器0,方式1;定时器1,方式2
  40   1              TH1=0X0fd;
  41   1              TL1=0x0fd;
  42   1              PCON=0x00;
  43   1              SCON=0x50;
  44   1      
  45   1              //定时器初始化
  46   1              TH0=0xfc;//定时1ms
  47   1              TL0=0x66;
  48   1              //外部中断初始化
  49   1              IT0=1;
  50   1              //设置中断优先级
  51   1              PS=1;
  52   1              PX0=1;
  53   1              PT0=1;
  54   1              //开中断
  55   1              EA=1;
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 2   

  56   1              ES=1;
  57   1              ET0=1;
  58   1              ET1=1;
  59   1              EX0=1;
  60   1              TR1=1;
  61   1              TR0=1;
  62   1      
  63   1              pin_wrram=1;
  64   1              pin_full=1;
  65   1              while(1)
  66   1                      {
  67   2                      WDFeed();
  68   2                      if(f_delaywr==1)
  69   2                              {
  70   3                              f_delaywr=0;
  71   3                              //硬件写置1
  72   3                              pin_wrram=1;
  73   3                              if(f_normdisp==1)
  74   3                                      {
  75   4                                      f_normdisp=0;
  76   4                                      cnt_zi=0;
  77   4                                      tmpi=0;
  78   4                                      for(i=0;i<lengthnorm;i++)
  79   4                                              {
  80   5                                              tp=codebuff[i];
  81   5                                              if(tp>0x80) //汉字
  82   5                                                      {
  83   6                                                      tmpi++;
  84   6                                                      cnt_zi++;
  85   6                                                      if(tmpi==2)
  86   6                                                              {
  87   7                                                              tmpi=0;
  88   7                                                              tmpq=codebuff[i-1]-0xa0;
  89   7                                                              tmpw=codebuff[i]-0xa0;
  90   7                                                              tmpoffset=(ulng)((tmpq-1)*94+(tmpw-1))*32;
  91   7                                                              WDFeed();
  92   7                                                              CHPCON=0x00;
  93   7                                                              rom2ram_hanzi(cnt_zi,tmpoffset);
  94   7                                                              }
  95   6                                                      }
  96   5                                              else  //ASCII 码
  97   5                                                      {
  98   6                                                      if(tmpi!=0)
  99   6                                                              {
 100   7                                                              tmpi=0;
 101   7                                                              break;
 102   7                                                              }
 103   6                                                      else
 104   6                                                              {
 105   7                                                              cnt_zi++;
 106   7                                                              WDFeed();
 107   7                                                              //分析ASCii码
 108   7                                                              CHPCON=0x00;
 109   7                                                              tp=codebuff[i];
 110   7                                                              rom2ram_ascii(cnt_zi,tp);
 111   7                                                              }
 112   6                                                      }
 113   5                                              }
 114   4                                      
 115   4                                      }
 116   3                              if(f_leddisp==1)
 117   3                                      {
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 3   

 118   4                                      f_leddisp=0;
 119   4                                      if(f_over==1)
 120   4                                              {
 121   5                                              for(i=0;i<128;i++)
 122   5                                                      {
 123   6                                                      CHPCON=0x00;
 124   6                                                      ram_ce=0;
 125   6                                                      nDispRam[i]=rxbuff[i];
 126   6                                                      ram_ce=1;
 127   6                                                      }
 128   5                                              for(i=0;i<(length_d-128);i++)
 129   5                                                      {
 130   6                                                      CHPCON|=0x10;
 131   6                                                      tmpi=rxbuff2[i];
 132   6                                                      CHPCON=0x00;
 133   6                                                      ram_ce=0;
 134   6                                                      nDispRam[128+i]=tmpi;
 135   6                                                      ram_ce=1;
 136   6                                                      }
 137   5                                              for(i=0;i<(lengthled-length_d);i++)
 138   5                                                      {
 139   6                                                      ram_ce=0;
 140   6                                                      nDispRam[length_d+i]=0;
 141   6                                                      ram_ce=1;
 142   6                                                      }
 143   5                                              }
 144   4                                      else
 145   4                                              {
 146   5                                              for(i=0;i<length_d;i++)
 147   5                                                      {
 148   6                                                      ram_ce=0;
 149   6                                                      nDispRam[i]=rxbuff[i];
 150   6                                                      ram_ce=1;
 151   6                                                      }
 152   5                                              for(i=0;i<(lengthled-length_d);i++)
 153   5                                                      {
 154   6                                                      ram_ce=0;
 155   6                                                      nDispRam[i+length_d]=0;
 156   6                                                      ram_ce=1;
 157   6                                                      }
 158   5                                              }
 159   4                                      }
 160   3                              f_fixdisp=0;
 161   3                              f_normdisp=0;
 162   3                              f_leddisp=0;
 163   3                              f_wrramover=1;
 164   3                              pin_wrram=0;
 165   3                              }
 166   2                      if(f_anayrx==1) //接收完数据后,对所接收的数据进行分析
 167   2                              {
 168   3                              f_anayrx=0;
 169   3                              f_over=f_over128;
 170   3                              length_d=lengthdisp;
 171   3                              length_s=lengthsound;
 172   3                              style=dispstyle;
 173   3                              length_h=displength_h;
 174   3                              length_l=displength_l;
 175   3                              chk=rx_check;
 176   3                              check=0;
 177   3                              check^=style;
 178   3                              check^=length_h;
 179   3                              check^=length_l;
C51 COMPILER V7.09   ANAYSERIAL                                                            07/20/2007 11:22:34 PAGE 4   

 180   3                              if(f_over==1)
 181   3                                      {
 182   4                                      for(i=0;i<128;i++)
 183   4                                              {
 184   5                                              check^=rxbuff[i];
 185   5                                              }
 186   4                                      for(i=0;i<(length_d-127);i++)
 187   4                                             {
 188   5                                             check^=rxbuff2[i];
 189   5                                             }
 190   4                                      }
 191   3                              else
 192   3                                      {
 193   4                                      for(i=0;i<length_d;i++)
 194   4                                              {
 195   5                                              check^=rxbuff[i];

⌨️ 快捷键说明

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