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

📄 rs232.lst

📁 ZLG DP-668 开发板全部程序 BELL 蜂鸣器演示程序 CAN测试程序 CAN双机通信演示程序 EEPROM 24WC02演示程序 LCD 128*64液晶模块演示程序 RED 红外
💻 LST
字号:
C51 COMPILER V6.23a  RS232                                                                 11/20/2002 09:43:19 PAGE 1   


C51 COMPILER V6.23a, COMPILATION OF MODULE RS232
OBJECT MODULE PLACED IN Rs232.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Rs232.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "reg66x.h"
   2          #include "668i2c.h" /*包含VI2C软件包*/
   3          
   4          #define  uchar unsigned char
   5          #define  CSI24WC02 0xA0            /*定义器件地址*/
   6          
   7          
   8          uchar *temp,j=0,i;
   9          uchar rec_com[64];//接收缓冲区
  10           
  11          bit timeout=0;    //接收超时标志
  12          bit rec_ok=0;     //接收成功标志
  13          
  14          main()
  15          {
  16   1        TMOD=0X21;
  17   1        TH1=0XFA;
  18   1        TL1=0XFA;
  19   1        S0CON=0X50;
  20   1        PCON=0;
  21   1        TR1=1;
  22   1        ET0=1;
  23   1        ES0=1;
  24   1        EA=1;
  25   1        while(1)
  26   1        {
  27   2          while(timeout==0&&rec_ok==0);
  28   2          if(timeout)//超时处理
  29   2          {
  30   3            //send error for commad
  31   3            rec_com[0]=0x12;
  32   3            rec_com[1]=0xa1;
  33   3            rec_com[2]=2;
  34   3            rec_com[3]=0;
  35   3            rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
  36   3            ES0=0;
  37   3            for(i=0;i<5;i++)
  38   3            {
  39   4              S0BUF=rec_com[i];
  40   4              while(TI==0);
  41   4              TI=0;
  42   4            }
  43   3            ES0=1;
  44   3            timeout=0;
  45   3            rec_com[0]=0;
  46   3            rec_com[1]=0;
  47   3          }
  48   2          if(rec_ok) //接收成功!
  49   2          {
  50   3            if(rec_com[1]!=0x20&&rec_com[1]!=0x21)//命令错误!
  51   3            {
  52   4              rec_com[0]=0x12;
  53   4              rec_com[1]=0xa1;
  54   4              rec_com[2]=2;
  55   4              rec_com[3]=0;
C51 COMPILER V6.23a  RS232                                                                 11/20/2002 09:43:19 PAGE 2   

  56   4              rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
  57   4              ES0=0;
  58   4              for(i=0;i<5;i++)
  59   4              {
  60   5                S0BUF=rec_com[i];
  61   5                while(TI==0);
  62   5                TI=0;
  63   5              }
  64   4              ES0=1;
  65   4              //send error for command
  66   4            }
  67   3            else if(rec_com[1]==0x20)//收到读命令
  68   3              {
  69   4                i=rec_com[5];
  70   4                if(IRcvStr(CSI24WC02,rec_com[3],&rec_com[3],rec_com[5]))//读成功
  71   4                {
  72   5                  rec_com[0]=0x12;
  73   5                  rec_com[1]=0xa0;
  74   5                  rec_com[2]=i+2;
  75   5                  for(j=0;j<(i+3);j++)
  76   5                    rec_com[i+4]=rec_com[j]^rec_com[j+1];
  77   5                  ES0=0;
  78   5                  j=j+2;
  79   5                  for(i=0;i<j;i++)
  80   5                  { 
  81   6                    S0BUF=rec_com[i];
  82   6                    while(TI==0);
  83   6                    TI=0;
  84   6                  }
  85   5                  ES0=1;
  86   5                }     
  87   4                //send read ok;
  88   4                else//send read error读失败
  89   4                {
  90   5                  rec_com[0]=0x12;
  91   5                  rec_com[1]=0xa1;
  92   5                  rec_com[2]=2;
  93   5                  rec_com[3]=1;
  94   5                  rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
  95   5                  ES0=0;
  96   5                  for(i=0;i<5;i++)
  97   5                  {
  98   6                    S0BUF=rec_com[i];
  99   6                    while(TI==0);
 100   6                    TI=0;
 101   6                  }
 102   5                  ES0=1;
 103   5                }
 104   4              }
 105   3            else if(rec_com[1]==0x21)//收到写命令
 106   3              {
 107   4                j=rec_com[2]-4;
 108   4                if(ISendStr(CSI24WC02,rec_com[3],&rec_com[5],j))//写成功
 109   4                {
 110   5                  rec_com[0]=0x12;
 111   5                  rec_com[1]=0xa0;
 112   5                  rec_com[2]=1;
 113   5                  rec_com[3]=rec_com[0]^rec_com[1]^rec_com[2];
 114   5                  ES0=0;
 115   5                  for(i=0;i<4;i++)
 116   5                  {
 117   6                    S0BUF=rec_com[i];
C51 COMPILER V6.23a  RS232                                                                 11/20/2002 09:43:19 PAGE 3   

 118   6                    while(TI==0);
 119   6                    TI=0;
 120   6                  }
 121   5                  ES0=1;
 122   5                }
 123   4                else//写失败
 124   4                {
 125   5                  rec_com[0]=0x12;
 126   5                  rec_com[1]=0xa1;
 127   5                  rec_com[2]=3;
 128   5                  rec_com[3]=0;
 129   5                  rec_com[4]=0;
 130   5                  rec_com[5]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
 131   5                  ES0=0;
 132   5                  for(i=0;i<6;i++)
 133   5                  {
 134   6                    S0BUF=rec_com[i];
 135   6                    while(TI==0);
 136   6                    TI=0;
 137   6                  }
 138   5                  ES0=1;
 139   5                }
 140   4              }
 141   3            rec_com[0]=0;
 142   3            rec_com[1]=0;
 143   3            rec_ok=0;
 144   3          }
 145   2        }
 146   1      }
 147          void int_com() interrupt 4
 148          {
 149   1        uchar * tmp,counter;
 150   1        if(RI==1)
 151   1          {
 152   2            TR0=1;
 153   2            TH0=-60000/256;
 154   2            TL0=-60000/256;
 155   2            rec_com[0]=S0BUF;
 156   2            RI=0;
 157   2            while(RI==0&&timeout==0);
 158   2            rec_com[1]=S0BUF;
 159   2            RI=0;
 160   2            while(RI==0&&timeout==0);
 161   2            rec_com[2]=S0BUF;
 162   2            RI=0;
 163   2            tmp=&(rec_com[3]);
 164   2            counter=rec_com[2];
 165   2            do
 166   2            {
 167   3               while(RI==0&&timeout==0);
 168   3               *tmp=S0BUF;
 169   3               tmp++;
 170   3               counter--;
 171   3               RI=0;
 172   3            }
 173   2            while(timeout==0&&counter!=0);
 174   2            if(!timeout)
 175   2              rec_ok=1;  
 176   2            TR0=0;    
 177   2          }
 178   1        if(TI==1)
 179   1          {
C51 COMPILER V6.23a  RS232                                                                 11/20/2002 09:43:19 PAGE 4   

 180   2             TI=0;
 181   2          }
 182   1      }
 183          void int_t0() interrupt 1
 184          {
 185   1        static counter=0;
 186   1        counter++;
 187   1        TH0=-60000/256;
 188   1        TL0=-60000%256;
 189   1        if(counter==5)
 190   1        {
 191   2          timeout=1;
 192   2          counter=0;
 193   2        }
 194   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    625    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     71    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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