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

📄 hardconfig.lst

📁 前两天一个朋友要我写一个51例程
💻 LST
字号:
C51 COMPILER V8.01   HARDCONFIG                                                            10/14/2008 09:55:55 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE HARDCONFIG
OBJECT MODULE PLACED IN HardConfig.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE HardConfig.c ROM(SMALL) BROWSE MODP2 DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************/      
   2          /*文件名:                                                                               */
   3          /*功能:                                                 */
   4          /*编写:                                                                                 */
   5          /*建立时间: 
   6          /*修改纪录:                                                                                    */
   7          /********************************************************/
   8          /*定时计数器均作为定时器使用,工作模式为1,不使用计数器,波特率发生器始终使用定时器2*/
   9          #include <hardconfig.h> 
  10          
  11          #ifdef  Timer1
  12          Data16B         data    Timer1Value;    //一定要定义在DATA区
  13          #endif  
  14          #ifdef  Timer0
              Data16B         data    Timer0Value;
              #endif
  17          /*TimeMs: 定时时间,单位毫秒,返回的为定时器的值
  18          注: 此程序只是本人以前为了设置时间方便而做,会增加代码的占用率
  19          RAM一般不会占用*/ 
  20          INT16U   GetTimerValue(INT8U    TimeMs) 
  21          {
  22   1              #ifdef  Fosc
  23   1                      return(0xffff-OnemsData*TimeMs);                
  24   1              #else   
                              #error  "没定义系统工作频率,检查hardconfig.h里第25行的Fosc配置"/*有很多地方的定义应加入检错,比如现在定义
             -的双倍速等,
                                                            又比如以上计算时钟初值的地方,应加入超出正常值的检错。*/  
                      #endif  
  28   1      }
  29          //=======================================================
  30          #ifdef  Timer0
              void    Timer0Config(DataStr16B *TimerValueDt)
              {       
                      ET0             =       1; 
                      TH0             =       TimerValueDt->HighByte;  
                      TL0             =       TimerValueDt->LowByte;
              }
              #endif
  38          //=======================================================
  39          #ifdef  Timer1
  40          void    Timer1Config(DataStr16B *TimerValueDt)
  41          {
  42   1                                      // 定时器1工作方式2 ,定时器2方式1       
  43   1              ET1             =       1;              
  44   1              TH1             =       TimerValueDt->HighByte;  
  45   1              TL1             =       TimerValueDt->LowByte;
  46   1      }
  47          #endif
  48          //=======================================================
  49          #ifdef  Uart
  50            /*
  51          typedef enum    
  52          {
  53                  U19200Bps=1,
  54                  U9600Bps=2,                      
C51 COMPILER V8.01   HARDCONFIG                                                            10/14/2008 09:55:55 PAGE 2   

  55                  U4800Bps=3,
  56                  U2400Bps=4,
  57                  U1200Bps=5
  58          }BpsSet;
  59          
  60          BpsSet  BandRate;*/
  61          //#ifdef        UartDouble
  62          //      #define         SetUartDoubleOrNot()    PCON = 0x80             //SMOD=1;
  63          //#else
  64          //      #define         SetUartDoubleOrNot()    PCON = 0x00             //SMOD=1;
  65          //#endif
  66          void     UartConfig()
  67          {       
  68   1              Data16B UartOrgValue;           
  69   1              UartOrgValue.U16B=      (0xffff-Fosc/UartBand/32*Double+1);
  70   1              RCAP2H=UartOrgValue.Str16B.HighByte;
  71   1              RCAP2L=UartOrgValue.Str16B.LowByte;             //2400Bps,倍速 4800Bps
  72   1              TH2=UartOrgValue.Str16B.HighByte;;  
  73   1              TL2=UartOrgValue.Str16B.LowByte;
  74   1      //      #ifdef  UartDouble
  75   1      //      PCON = 0x80;
  76   1      //      #endif 
  77   1              EnableUart();
  78   1              SetUartMode();
  79   1              T2CON=0X34;      
  80   1              
  81   1      //      StartTimer2();   
  82   1              
  83   1      }
  84          void    SendDataSub(uchar       UartSData)
  85          {
  86   1              #if     (VerifyBit==0)
  87   1                      SBUF= UartSData;
  88   1              #elif(VerifyBit==1)
                              ACC=UartSData;
                              TB8=P;
                              SBUF=ACC;
                      #elif(VerifyBit==2)
                              ACC=UartSData;
                              TB8=~P;
                              SBUF=ACC;
                      
                      #endif
  98   1      }
  99          /**/
 100          uint            RecDataSub()
 101          {
 102   1              Data16B         UartRecRet;
 103   1              UartRecRet.Str16B.HighByte= 0;
 104   1        #if   (VerifyBit==0)                  
 105   1                      UartRecRet.Str16B.LowByte= SBUF;
 106   1              #elif(VerifyBit==1)
                              ACC=SBUF;
                              if(RB8!=P)
                              {
                                      UartRecRet.Str16B.HighByte= 0X80;                               
                              } 
                              UartRecRet.Str16B.LowByte= ACC;         
                      #elif(VerifyBit==2)
                              ACC=SBUF;
                              if(RB8==P)
                              {
C51 COMPILER V8.01   HARDCONFIG                                                            10/14/2008 09:55:55 PAGE 3   

                                      UartRecRet.Str16B.HighByte= 0X80;
                              }
                              UartRecRet.Str16B.LowByte= ACC;         
                      #endif
 121   1              return(UartRecRet.U16B);
 122   1      }
 123          #endif
 124          
 125          void    HardConfigSub()
 126          {
 127   1              /*定时器初始化*/
 128   1              DisLedInit();
 129   1              #ifdef  Timer1
 130   1              SetTimerMode();
 131   1              Timer1Value.U16B=       GetTimerValue(Timer1SetTime);
 132   1              Timer1Config(&Timer1Value.Str16B);
 133   1              StartTimer1(); 
 134   1              EnableInterrupt();
 135   1              #endif
 136   1              #ifdef  Uart
 137   1              UartConfig();
 138   1              #endif
 139   1              /*串口初始化*/
 140   1              
 141   1              
 142   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    113    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       4
   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 + -