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

📄 io.lst

📁 C51单片机端
💻 LST
字号:
C51 COMPILER V8.01   IO                                                                    12/04/2006 10:50:22 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE IO
OBJECT MODULE PLACED IN io.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE io.c LARGE OPTIMIZE(7,SPEED) BROWSE ORDER MODDP2 DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include <stdarg.h> 
   3          #include <string.h> 
   4          
   5          #include "compiler.h"
   6          #include "config.h"
   7          #include "isp.h"
   8          #include "system.h"
   9          #include "hex.h"
  10          
  11          extern void uart_tx(unsigned char tx_data);
  12          
  13          char ptxt[40];
  14          unsigned char SreialStr;
  15          
  16          void uart0(void) interrupt 4 using 0
  17          {
  18   1              if (RI == 1) 
  19   1              {
  20   2                      RI = 0;
  21   2                      SreialStr = 0;
  22   2                      hex_decoder(SBUF0);
  23   2              }
  24   1      }
  25          
  26          
  27          void uart1(void) interrupt 7 using 0
  28          {
  29   1              if (RI1 == 1) 
  30   1              {
  31   2                      RI1 = 0;
  32   2                      SreialStr = 1;
  33   2                      hex_decoder(SBUF1);
  34   2              }
  35   1      }
  36          
  37          void uart_tx(Uchar tx_data)
  38          {
  39   1              if(SreialStr == 0)
  40   1              {
  41   2                      SBUF0 = tx_data;
  42   2                      while (TI==0); 
  43   2                      TI=0;
  44   2              }
  45   1              else if(SreialStr == 1)
  46   1              {
  47   2                      SBUF1 = tx_data;
  48   2                      while (TI1==0); 
  49   2                      TI1=0;
  50   2              }
  51   1              else
  52   1              {
  53   2                      SBUF0 = tx_data;
  54   2                      while (TI==0); 
  55   2                      TI=0;
C51 COMPILER V8.01   IO                                                                    12/04/2006 10:50:22 PAGE 2   

  56   2              }
  57   1      }
  58          
  59          void vInitUart(void)
  60          {
  61   1      #if Sp756P==1
  62   1      /*      
  63   1              CKCON |= 0x31;   //T1、T2时钟Clk/4
  64   1              //串口1的设置     
  65   1              TMOD  |= 0x20;   //定时器1工作在模式1,8位重载     
  66   1              SCON1 |= 0x50;   //模式1: 异步10位波特率可变,允许接收
  67   1              //串口0的设置     
  68   1              SCON  |= 0x50;   //模式1: 异步10位波特率可变,允许接收 
  69   1              T2CON |= 0x30;   //用定时器2做串口0的波特率发生器     
  70   1      
  71   1              PCON  |= 0x80;   //串口0波特率加倍
  72   1              WDCON |= 0x80;   //串口1波特率加倍
  73   1              
  74   1              TL1        = 0xFD;   //波特率=57600     
  75   1              TH1    = 0xFD;     
  76   1              RCAP2H = 0xFF;   
  77   1              RCAP2L = 0xFD;   //波特率=115200       
  78   1              
  79   1              EA     = 1;              //EA=1;ES1=1;ES0=1
  80   1              ES0    = 1;      //串口0中断允许
  81   1              ES1    = 1;      //串口1中断允许
  82   1                      
  83   1              TR2    = 1;     
  84   1              TR1    = 1;
  85   1      */
  86   1              //0xFD(57600) 0xFA(28800) 0xF7(19200) 0xEE(9600)
  87   1              CKCON |= 0x31;   //T1时钟Clk1/4
  88   1              TMOD  |= 0x20;   //定时器1:模式2,8位重载
  89   1              SCON  |= 0x50;   //模式1: 异步10位波特率可变,允许接收
  90   1              SCON1 |= 0x50;   //模式1: 异步10位波特率可变,允许接收
  91   1              
  92   1              PCON  |= 0x80;   //串口0波特率加倍
  93   1              WDCON |= 0x80;   //串口1波特率加倍
  94   1              
  95   1              TL1    = 0xFD;      
  96   1              TH1    = 0xFD;     
  97   1              IE    |= 0xD0;   //EA=1;ES1=1;ES0=1
  98   1              TR1    = 1;
  99   1      #else
                      //0xFD(57600) 0xFA(28800) 0xF7(19200) 0xEE(9600)
                      CKCON |= 0x31;   //T1时钟Clk1/4
                      TMOD  |= 0x20;   //定时器1:模式2,8位重载
                      SCON  |= 0x50;   //模式1: 异步10位波特率可变,允许接收
                      SCON1 |= 0x50;   //模式1: 异步10位波特率可变,允许接收
                      
                      PCON  |= 0x80;   //串口0波特率加倍
                      WDCON |= 0x80;   //串口1波特率加倍
                      
                      TL1    = 0xFD;      
                      TH1    = 0xFD;     
                      IE    |= 0xD0;   //EA=1;ES1=1;ES0=1
                      TR1    = 1;
              #endif    
 114   1      }
 115          
 116          void vSendBuff(unsigned int sDdress,unsigned int mISector,unsigned char sBackBank)
 117          {
C51 COMPILER V8.01   IO                                                                    12/04/2006 10:50:22 PAGE 3   

 118   1              unsigned char data sxBchar;
 119   1              unsigned int sxnum;
 120   1              unsigned char CheckSum; 
 121   1              unsigned int snum;
 122   1              
 123   1              sxnum = sDdress;
 124   1              CheckSum = 0;
 125   1              uart_tx(':');    //包头
 126   1                      
 127   1              if(mISector==256)sxBchar=0xFF;  //数据长度
 128   1              if(mISector==128)sxBchar=0x80;
 129   1              CheckSum += sxBchar;
 130   1              SendBinToChar(sxBchar); 
 131   1      
 132   1              sxBchar = (unsigned char)(sDdress/256);  //扇区地址
 133   1              CheckSum += sxBchar;
 134   1              SendBinToChar(sxBchar); 
 135   1              
 136   1              sxBchar = (unsigned char)(sDdress%256);  //扇区地址
 137   1              CheckSum += sxBchar;
 138   1              SendBinToChar(sxBchar); 
 139   1      
 140   1              uart_tx('0');   //数据类型 
 141   1              uart_tx('0');     
 142   1              CheckSum += 0x00;
 143   1      
 144   1              vBankSet(sBackBank);
 145   1      
 146   1              for(snum=0;snum <mISector;snum++)
 147   1              {
 148   2                      sxBchar = vReadFlash(sxnum++);
 149   2                      CheckSum += sxBchar;
 150   2                      SendBinToChar(sxBchar); 
 151   2              }
 152   1              
 153   1              CheckSum = ~CheckSum;
 154   1              CheckSum +=1;
 155   1              sxBchar = CheckSum;  //和校验
 156   1              SendBinToChar(sxBchar); 
 157   1      }
 158          
 159          void vCOmSend(unsigned char m_ComLength, unsigned char m_ComType, unsigned short int m_AdderData)
 160          {
 161   1              //数据包格式: :ll kk aaaa tt [dd...] cc
 162   1              //:     包头
 163   1              //ll    数据长度
 164   1              //kk    程序分区数
 165   1              //aaaa  扇区地址
 166   1              //dd... 数据域
 167   1              //cc    和校验 cc = 0x01H + NOT(ll + kk + aa +aa +tt + dd...)
 168   1              unsigned char Txchar;
 169   1              unsigned char CheckSum; 
 170   1                                      
 171   1              CheckSum = 0;
 172   1              uart_tx(':');    //包头
 173   1                              
 174   1              Txchar = m_ComLength;      //数据长度
 175   1              CheckSum += Txchar;
 176   1              
 177   1              SendBinToChar(Txchar);          
 178   1         
 179   1              Txchar = 0x00;              //地址
C51 COMPILER V8.01   IO                                                                    12/04/2006 10:50:22 PAGE 4   

 180   1              CheckSum += Txchar;
 181   1              SendBinToChar(Txchar);          
 182   1              Txchar = 0x00;  
 183   1              CheckSum += Txchar;
 184   1              SendBinToChar(Txchar);          
 185   1      
 186   1              Txchar = m_ComType;          //数据类型
 187   1              CheckSum += Txchar;
 188   1              SendBinToChar(Txchar);          
 189   1              
 190   1              if(m_ComLength !=0)
 191   1              {
 192   2                      Txchar  = (unsigned char)(m_AdderData/256);     
 193   2                      CheckSum += Txchar;
 194   2                      SendBinToChar(Txchar);          
 195   2                      Txchar  = (unsigned char)(m_AdderData%256);     
 196   2                      CheckSum += Txchar;
 197   2                      SendBinToChar(Txchar);          
 198   2              }
 199   1              CheckSum = ~CheckSum;
 200   1              CheckSum +=1;
 201   1              Txchar = (unsigned char)CheckSum;  //和校验
 202   1              SendBinToChar(Txchar);          
 203   1      }
 204          
 205          void SendBinToChar(unsigned char BinChar)
 206          {
 207   1              unsigned char byte;
 208   1              unsigned char SendHexChar;  
 209   1                
 210   1              byte = BinChar;
 211   1              byte >>= 4;
 212   1              
 213   1              if(0<= byte && byte <=9)
 214   1              {
 215   2                      byte += '0';
 216   2                      SendHexChar = byte;
 217   2              }
 218   1              else
 219   1              {
 220   2                      byte += 'A' - 10;
 221   2                      SendHexChar = byte;
 222   2              }
 223   1      
 224   1              uart_tx(SendHexChar);
 225   1              
 226   1              byte = BinChar;
 227   1              byte &= 0x0F;
 228   1              if(0<= byte && byte <=9)
 229   1              {
 230   2                      byte += '0';
 231   2                      SendHexChar = byte;
 232   2              }
 233   1              else
 234   1              {
 235   2                      byte += 'A' - 10;
 236   2                      SendHexChar = byte;
 237   2              }
 238   1      
 239   1              uart_tx(SendHexChar);
 240   1      }
 241          
C51 COMPILER V8.01   IO                                                                    12/04/2006 10:50:22 PAGE 5   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    601    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =     41      16
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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