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

📄 rs232.lst

📁 嵌入式系统中一些外围设备驱动示例程序集
💻 LST
字号:
C51 COMPILER V7.06   RS232                                                                 07/04/2003 09:23:58 PAGE 1   


C51 COMPILER V7.06, 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          /****************************************Copyright (c)**************************************************
   2          **                               广州周立功单片机发展有限公司
   3          **                                     研    究    所
   4          **                                        产品一部 
   5          **
   6          **                                 http://www.zlgmcu.com
   7          **
   8          **--------------文件信息--------------------------------------------------------------------------------
   9          **文   件   名:         RS232.C
  10          **创   建   人:         叶皓贲
  11          **最后修改日期:         2003-3-4
  12          **描        述:         DP-1581串口及I2C eeprom演示程序
  13          **
  14          **--------------历史版本信息----------------------------------------------------------------------------
  15          ** 创建人: 叶皓贲
  16          ** 版  本: 1.0
  17          ** 日 期: 2003-3-4
  18          ** 描 述: DP-1581演示程序
  19          **
  20          **------------------------------------------------------------------------------------------------------
  21          ** 修改人:
  22          ** 版  本:
  23          ** 日 期:
  24          ** 描 述:
  25          **
  26          **--------------当前版本修订------------------------------------------------------------------------------
  27          ** 修改人: 
  28          ** 日 期:
  29          ** 描 述:
  30          **
  31          **------------------------------------------------------------------------------------------------------
  32          ********************************************************************************************************/
  33          
  34          #include "config.h"
  35          
  36          /* 全局变量 */
  37          
  38          uchar *temp,j=0,i;
  39          uchar rec_com[64];//接收缓冲区
  40           
  41          bit timeout=0;    //接收超时标志
  42          bit rec_ok=0;     //接收成功标志
  43          
  44          main()
  45          {
  46   1        TMOD=0X21;
  47   1        TH1=0XFd;
  48   1        TL1=0XFd;
  49   1        SCON=0X50;
  50   1        PCON=0;
  51   1        TR1=1;
  52   1        ET0=1;
  53   1        ES=1;
  54   1        EA=1;
  55   1        while(1)
C51 COMPILER V7.06   RS232                                                                 07/04/2003 09:23:58 PAGE 2   

  56   1        {
  57   2          while(timeout==0&&rec_ok==0);
  58   2          if(timeout)//超时处理
  59   2          {
  60   3            //send error for commad
  61   3            rec_com[0]=0x12;
  62   3            rec_com[1]=0xa1;
  63   3            rec_com[2]=2;
  64   3            rec_com[3]=0;
  65   3            rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
  66   3            ES=0;
  67   3            for(i=0;i<5;i++)
  68   3            {
  69   4              SBUF=rec_com[i];
  70   4              while(TI==0);
  71   4              TI=0;
  72   4            }
  73   3            ES=1;
  74   3            timeout=0;
  75   3            rec_com[0]=0;
  76   3            rec_com[1]=0;
  77   3          }
  78   2          if(rec_ok) //接收成功!
  79   2          {
  80   3            if(rec_com[1]!=0x20&&rec_com[1]!=0x21)//命令错误!
  81   3            {
  82   4              rec_com[0]=0x12;
  83   4              rec_com[1]=0xa1;
  84   4              rec_com[2]=2;
  85   4              rec_com[3]=0;
  86   4              rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
  87   4              ES=0;
  88   4              for(i=0;i<5;i++)
  89   4              {
  90   5                SBUF=rec_com[i];
  91   5                while(TI==0);
  92   5                TI=0;
  93   5              }
  94   4              ES=1;
  95   4              //send error for command
  96   4            }
  97   3            else if(rec_com[1]==0x20)//收到读命令
  98   3              {
  99   4                i=rec_com[5];
 100   4                if(IRcvStr(CSI24WC02,rec_com[3],&rec_com[3],rec_com[5]))//读成功
 101   4                {
 102   5                  rec_com[0]=0x12;
 103   5                  rec_com[1]=0xa0;
 104   5                  rec_com[2]=i+2;
 105   5                  for(j=0;j<(i+3);j++)
 106   5                    rec_com[i+4]=rec_com[j]^rec_com[j+1];
 107   5                  ES=0;
 108   5                  j=j+2;
 109   5                  for(i=0;i<j;i++)
 110   5                  { 
 111   6                    SBUF=rec_com[i];
 112   6                    while(TI==0);
 113   6                    TI=0;
 114   6                  }
 115   5                  ES=1;
 116   5                }     
 117   4                //send read ok;
C51 COMPILER V7.06   RS232                                                                 07/04/2003 09:23:58 PAGE 3   

 118   4                else//send read error读失败
 119   4                {
 120   5                  rec_com[0]=0x12;
 121   5                  rec_com[1]=0xa1;
 122   5                  rec_com[2]=2;
 123   5                  rec_com[3]=1;
 124   5                  rec_com[4]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
 125   5                  ES=0;
 126   5                  for(i=0;i<5;i++)
 127   5                  {
 128   6                    SBUF=rec_com[i];
 129   6                    while(TI==0);
 130   6                    TI=0;
 131   6                  }
 132   5                  ES=1;
 133   5                }
 134   4              }
 135   3            else if(rec_com[1]==0x21)//收到写命令
 136   3              {
 137   4                j=rec_com[2]-4;
 138   4                if(ISendStr(CSI24WC02,rec_com[3],&rec_com[5],j))//写成功
 139   4                {
 140   5                  rec_com[0]=0x12;
 141   5                  rec_com[1]=0xa0;
 142   5                  rec_com[2]=1;
 143   5                  rec_com[3]=rec_com[0]^rec_com[1]^rec_com[2];
 144   5                  ES=0;
 145   5                  for(i=0;i<4;i++)
 146   5                  {
 147   6                    SBUF=rec_com[i];
 148   6                    while(TI==0);
 149   6                    TI=0;
 150   6                  }
 151   5                  ES=1;
 152   5                }
 153   4                else//写失败
 154   4                {
 155   5                  rec_com[0]=0x12;
 156   5                  rec_com[1]=0xa1;
 157   5                  rec_com[2]=3;
 158   5                  rec_com[3]=0;
 159   5                  rec_com[4]=0;
 160   5                  rec_com[5]=rec_com[0]^rec_com[1]^rec_com[2]^rec_com[3];
 161   5                  ES=0;
 162   5                  for(i=0;i<6;i++)
 163   5                  {
 164   6                    SBUF=rec_com[i];
 165   6                    while(TI==0);
 166   6                    TI=0;
 167   6                  }
 168   5                  ES=1;
 169   5                }
 170   4              }
 171   3            rec_com[0]=0;
 172   3            rec_com[1]=0;
 173   3            rec_ok=0;
 174   3          }
 175   2        }
 176   1      }
 177          void int_com() interrupt 4
 178          {
 179   1        uchar * tmp,counter;
C51 COMPILER V7.06   RS232                                                                 07/04/2003 09:23:58 PAGE 4   

 180   1        if(RI==1)
 181   1          {
 182   2            TR0=1;
 183   2            TH0=-60000/256;
 184   2            TL0=-60000/256;
 185   2            rec_com[0]=SBUF;
 186   2            RI=0;
 187   2            while(RI==0&&timeout==0);
 188   2            rec_com[1]=SBUF;
 189   2            RI=0;
 190   2            while(RI==0&&timeout==0);
 191   2            rec_com[2]=SBUF;
 192   2            RI=0;
 193   2            tmp=&(rec_com[3]);
 194   2            counter=rec_com[2];
 195   2            do
 196   2            {
 197   3               while(RI==0&&timeout==0);
 198   3               *tmp=SBUF;
 199   3               tmp++;
 200   3               counter--;
 201   3               RI=0;
 202   3            }
 203   2            while(timeout==0&&counter!=0);
 204   2            if(!timeout)
 205   2              rec_ok=1;  
 206   2            TR0=0;    
 207   2          }
 208   1        if(TI==1)
 209   1          {
 210   2             TI=0;
 211   2          }
 212   1      }
 213          void int_t0() interrupt 1
 214          {
 215   1        static counter=0;
 216   1        counter++;
 217   1        TH0=-60000/256;
 218   1        TL0=-60000%256;
 219   1        if(counter==5)
 220   1        {
 221   2          timeout=1;
 222   2          counter=0;
 223   2        }
 224   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 + -