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

📄 rs232.lst

📁 ZLG DP-668 开发板全部程序 BELL 蜂鸣器演示程序 CAN测试程序 CAN双机通信演示程序 EEPROM 24WC02演示程序 LCD 128*64液晶模块演示程序 RED 红外
💻 LST
字号:
C51 COMPILER V6.23a  RS232                                                                 11/20/2002 10:21:01 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          #define  SLA_ADDR 0XC0
   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(1)
  28   2          {
  29   3            if(rec_com[3]==SLA_ADDR)
  30   3              if(timeout==1||rec_ok==1)
  31   3                break;
  32   3          }
  33   2          if(timeout)//超时处理
  34   2          {
  35   3            //send error for commad
  36   3            rec_com[0]=0x12;
  37   3            rec_com[1]=0xa1;
  38   3            rec_com[2]=2;
  39   3            rec_com[3]=0;
  40   3            rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
  41   3            ES0=0;
  42   3            for(i=0;i<5;i++)
  43   3            {
  44   4              S0BUF=rec_com[i];
  45   4              while(TI==0);
  46   4              TI=0;
  47   4            }
  48   3            ES0=1;
  49   3            timeout=0;
  50   3            rec_com[0]=0;
  51   3            rec_com[1]=0;
  52   3            rec_com[3]=0;
  53   3          }
  54   2          if(rec_ok) //接收成功!
  55   2          {
C51 COMPILER V6.23a  RS232                                                                 11/20/2002 10:21:01 PAGE 2   

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

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

 180   3               counter--;
 181   3               RI=0;
 182   3            }
 183   2            while(timeout==0&&counter!=0);
 184   2            if(!timeout)
 185   2              rec_ok=1;  
 186   2            TR0=0;    
 187   2          }
 188   1        if(TI==1)
 189   1          {
 190   2             TI=0;
 191   2          }
 192   1      }
 193          void int_t0() interrupt 1
 194          {
 195   1        static counter=0;
 196   1        counter++;
 197   1        TH0=-60000/256;
 198   1        TL0=-60000%256;
 199   1        if(counter==5)
 200   1        {
 201   2          timeout=1;
 202   2          counter=0;
 203   2        }
 204   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    651    ----
   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 + -