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

📄 main.lst

📁 C8051F020的全面应用,包括两个UART口、SPI、I2C
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   MAIN                                                                  06/05/2006 11:06:47 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*      This program is used for Signalmachine.
   2                  Copyright by Wangr
   3                  2006-05-27
   4                  LOG:
   5                  2006-05-27: C8051F020 configured
   6                  */
   7          #include <intrins.h>
   8          #include <absacc.h>
   9          #include <math.h>
  10          #include <string.h>
  11          #include <config.c>
  12          #include <maindef.h>
  13          #include <Flash.c>
  14          #include <ram.c>
  15          #include <calender.c>
  16          
  17          /******* parameter declare *********/
  18          /*******                  *********/
  19          uchar xdata Com0RecBuf[RecBufLen], Com1RecBuf[RecBufLen],Com0SendBuf[SendBufLen], Com1SendBuf[SendBufLen],
             - ComProcessBuf[RecBufLen];
  20          uchar xdata Com0RecBufIdx, Com1RecBufIdx;
  21          bit Com0SaveEn, Com1SaveEn, Com0RecComplete, Com1RecComplete;
  22          
  23          uchar xdata SystemState, PhaseNum, DectNum, RunMode, RunPlanNum, TotalPlanNum;
  24          
  25          
  26          /******* function declare *********/
  27          /*******                  *********/
  28          void config (void);
  29          void McuInit (void);
  30          
  31          void delayus(uchar delayvalue);
  32          
  33          void ComDataProcess(uchar *ComRecDataAdr, uchar *ComSendDataAdr);
  34          
  35          void FlashWE(void) ;/*Write Enable (WREN) Instruction*/
  36          void FlashWD(void);/*Write Disable (WRDI) Instruction*/
  37          uchar FlashRDSR(void)  ;/*Read Status Register (RDSR) Instruction*/
  38                                                          /*Status Register :bit7-2 non-used; bit1 WEL(write enable latch); bit0 WIP(write in progress)*/
  39          void FlashRDB(uint PageAdr, uchar Colum, uchar length, uchar *FlashBuf);/*Read Data Bytes (READ)*/
  40          void FlashReadFast(uint PageAdr, uchar Colum, uchar length, uchar *FlashBuf)    ;/*Read Data Bytes at Higher 
             -Speed (FAST_READ)*/
  41          void FlashPW(uint PageAdr, uchar Colum, uchar length, uchar *FlashBuf);/*Page Write (PW)*/
  42          void FlashPE(uint PageAdr, uchar Colum) ;/*Page Erase (PE)*/ 
  43          void FlashSE(uint PageAdr, uchar Colum) ;/*Sector Erase (SE)*/
  44          
  45          void RamByteWR(uchar RowAdr, uchar ColumnAdr, uchar ramdata);/*write 1 byte to RAM*/
  46          uchar RamByteRD(uchar RowAdr, uchar ColumnAdr);/*read 1 byte from RAM*/
  47          
  48          /*******  main function   *********/
  49          /*******                  *********/
  50          void main()
  51          {
  52   1              config();
  53   1              McuInit();
C51 COMPILER V7.10   MAIN                                                                  06/05/2006 11:06:47 PAGE 2   

  54   1      
  55   1              /*read info from flash*/
  56   1              do
  57   1              {
  58   2                      FlashRDB(BasicInfoStartAddr, 0x00, 256, FlashBuf);
  59   2              }while(FlashBuf[0]==0xFF);/*judge the first use ?*/
  60   1      
  61   1              PhaseNum = FlashBuf[64];
  62   1              DectNum = FlashBuf[65];
  63   1      
  64   1              FlashRDB(BasicInfoStartAddr+1, 0x00, 256, FlashBuf);
  65   1              RunMode = FlashBuf[0];
  66   1              RunPlanNum = FlashBuf[1];
  67   1              TotalPlanNum = FlashBuf[2];
  68   1      
  69   1              do
  70   1              {
  71   2                      if(Com0RecComplete)
  72   2                      {
  73   3                              ComDataProcess(Com0RecBuf, Com0SendBuf);
  74   3                              Com0RecComplete = 0;
  75   3                      }
  76   2                      if(Com1RecComplete)
  77   2                      {
  78   3                              Com1RecComplete = 0;
  79   3                      }
  80   2              }while(1);
  81   1      }
  82          
  83          /*******  function body   *********/
  84          /*******                  *********/
  85          void McuInit (void)
  86          {
  87   1              /*Timer2 for UART0; Timer4 for UART1; Timer3 for 1 second control
  88   1              SPI for FLASH; I2C for calender IC*/
  89   1              
  90   1              /*****  UART *****/
  91   1              Com0RecBufIdx = 0;
  92   1              Com1RecBufIdx = 0;
  93   1              Com0SaveEn = 0;
  94   1              Com1SaveEn = 0;
  95   1              Com0RecComplete = 0;
  96   1              Com1RecComplete = 0;
  97   1              
  98   1              /* FLASH */
  99   1              FlashCS = 1;
 100   1              FlashWD();/*Flash writtten disabled*/
 101   1              
 102   1              /*I2C master mode*/
 103   1              i2c_init();
 104   1      }
 105          
 106          /* delay function ; us unit for 22.1184 MHz*/
 107          void delayus(uchar delayvalue)
 108          {
 109   1              uchar idata i;
 110   1              for(i=0;i<delayvalue;i++)
 111   1              {
 112   2                      _nop_();
 113   2                      _nop_();
 114   2                      _nop_();
 115   2                      _nop_();
C51 COMPILER V7.10   MAIN                                                                  06/05/2006 11:06:47 PAGE 3   

 116   2                      _nop_();
 117   2                      _nop_();
 118   2                      _nop_();
 119   2                      _nop_();
 120   2                      _nop_();
 121   2                      _nop_();
 122   2                      _nop_();
 123   2                      _nop_();
 124   2                      _nop_();
 125   2                      _nop_();
 126   2                      _nop_();
 127   2                      _nop_();
 128   2                      _nop_();
 129   2                      _nop_();
 130   2                      _nop_();
 131   2                      _nop_();
 132   2                      _nop_();
 133   2                      _nop_();
 134   2              }
 135   1      }
 136          
 137          /**** timer3 for 1 second control ****/
 138          void timer3_int(void) interrupt 14 using 0
 139          {
 140   1              TMR3CN &= 0x7F;
 141   1      }
 142          
 143          
 144          void serial0_int(void) interrupt 4 using 1
 145          {
 146   1              if(RI0)
 147   1          {
 148   2              RI0 = 0;
 149   2                      if(Com0SaveEn)
 150   2                      {
 151   3                              Com0RecBuf[Com0RecBufIdx++] = SBUF0;    
 152   3                              if(Com0RecBufIdx==RecBufLen)
 153   3                                      {
 154   4                                              Com0SaveEn = 0;
 155   4                                              Com0RecComplete = 1;
 156   4                                      }       
 157   3                      }
 158   2                      else
 159   2                      {
 160   3                              Com0RecBuf[0] = Com0RecBuf[1];
 161   3                              Com0RecBuf[1] = SBUF0;
 162   3                              if(Com0RecBuf[0]==0xEB&&Com0RecBuf[1]==0x90)
 163   3                                      {
 164   4                                              Com0SaveEn = 1;
 165   4                                              Com0RecBufIdx = 2;
 166   4                                      }
 167   3                      }
 168   2          }
 169   1          if(TI0)
 170   1          {
 171   2              TI0=0;
 172   2      /*              if (PacketIdx < TxPacketLen)    // Downlink Packet is unique to 32 Bytes.

⌨️ 快捷键说明

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