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

📄 main.lst

📁 51单片机C语言常用模块与综合系统设计实例精讲
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:30:41 PAGE 1   


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

stmt level    source

   1          #include <stdio.h>
   2          #include <absacc.h>
   3          #include <intrins.h>
   4          #include <./Atmel/at89x52.h>
   5          #include "source.h"
   6          struct MY_TIMER TT[TIMER_NUM];
   7          struct volt_detect volt_group;
   8          void time2()interrupt 5 
   9          {
  10   1              unsigned char i;
  11   1              for(i=0;i<TIMER_NUM;i++)
  12   1              {
  13   2                      if(TT[i].enable==1)
  14   2                      {
  15   3                              if(TT[i].count==0)
  16   3                              {
  17   4                                      TT[i].enable=0; 
  18   4                                      TT[i].flag=1;
  19   4                              }
  20   3                              else{
  21   4                                      TT[i].count--;
  22   4                              }
  23   3                      }
  24   2              }
  25   1              TF2=0;
  26   1      }
  27          void start_timer(void)
  28          {
  29   1          T2CON=0X00;
  30   1              RCAP2L=TIMER2L; //10ms
  31   1              TL2=TIMER2L;
  32   1              RCAP2H=TIMER2H;
  33   1              TH2=TIMER2H;
  34   1              ET2=1;//enable timer2 interrupt
  35   1              TR2=1;//start timer
  36   1      }
  37          void reset_timer(unsigned char i)
  38          {
  39   1              TT[i].enable=0;
  40   1              TT[i].count=0;
  41   1      }
  42          void set_timer(unsigned char i,unsigned int count) // time out counter*10ms 
  43          {
  44   1              TT[i].count=count;
  45   1              TT[i].enable=1;
  46   1              TT[i].flag=0;
  47   1      }
  48          void Adc0801_Start_Cvt(void)
  49          {
  50   1              ADC0801_PORT=0;
  51   1      }
  52          unsigned char Adc0801_Read(void)
  53          {
  54   1              return(ADC0801_PORT);
  55   1      }
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:30:41 PAGE 2   

  56          #define DELAY   _nop_();_nop_();_nop_();_nop_();
  57          unsigned int tlc_volt_read(unsigned char  addr) //max system clock  2.1M max i/oclock 1.1M
  58          {
  59   1              unsigned char   i;
  60   1              unsigned char   tlc_add;
  61   1              unsigned int    dat;
  62   1              i=10;
  63   1              dat=0;
  64   1              tlc_add=addr;
  65   1          AD_IOCLK=0;
  66   1              AD_CSN=0;_nop_();_nop_(); // set up time
  67   1              while(i--)
  68   1              {
  69   2                      AD_IOCLK=0;DELAY;
  70   2                      if(tlc_add&0x08)
  71   2                              AD_ADDI=1;
  72   2                      else
  73   2                              AD_ADDI=0;
  74   2                      tlc_add<<=1;
  75   2      
  76   2                      AD_IOCLK=1;
  77   2              dat<<=1;        
  78   2                      dat |=AD_OUT;
  79   2              DELAY;
  80   2              }
  81   1              AD_CSN=1; //ABOVER IS PREVIOUS BYTE;
  82   1              return dat;
  83   1      }
  84          #undef DELAY
  85          void Tlc_Ad_Cvt(void)
  86          {
  87   1              unsigned int temp_volt;
  88   1              temp_volt=tlc_volt_read(volt_group.port);
  89   1              temp_volt=temp_volt>>1;//in order to value less than 512
  90   1              temp_volt=temp_volt%0x200;//div 512 because the valut of volt is smaller than 512;
  91   1              temp_volt=temp_volt*125;
  92   1              temp_volt >>=7;//then result is (volt_temp *5*100)/1024 and is is the real volt multiply 100.
  93   1              switch(volt_group.preport)
  94   1              {
  95   2                      case VOLT_1_8V_PORT:
  96   2              case VOLT_E3_3V_PORT:
  97   2                      case VOLT_LOCAL_3_3V_PORT:
  98   2                      case VOLT_VX_AGC_PORT:
  99   2                      case VOLT_TEST:
 100   2                              //is the real value multiply 100.
 101   2                              break;
 102   2                      case VOLT_N48V_PORT:
 103   2                              temp_volt=(500-temp_volt)*53;
 104   2                              temp_volt=temp_volt/2-500;
 105   2                              break;
 106   2                      case VOLT_9V_PORT:
 107   2                              temp_volt=temp_volt*3;
 108   2                              break;
 109   2                      case VOLT_N5V_PORT:
 110   2                              temp_volt=300-temp_volt;
 111   2                              temp_volt=temp_volt*5;
 112   2                              temp_volt=temp_volt/2;
 113   2                              break;
 114   2                      case VOLT_15V_PORT:
 115   2                              temp_volt=temp_volt*6;
 116   2                              break;
 117   2                      case VOLT_15V_LNB_PORT:
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:30:41 PAGE 3   

 118   2                              temp_volt=temp_volt*6;
 119   2                              break;
 120   2                      case VOLT_24V_ODU_PORT:
 121   2                              temp_volt=temp_volt*6;
 122   2                              break;                          
 123   2                      case VOLT_LOCAL_24V_PORT:
 124   2                              temp_volt=temp_volt*6;
 125   2                              break;
 126   2                      default:break;
 127   2              }
 128   1              volt_group.volt[volt_group.preport]=temp_volt;
 129   1              volt_group.preport=volt_group.port;
 130   1              volt_group.port++;
 131   1              volt_group.port %=VOLT_TOTAL_PORTS;
 132   1      }
 133          
 134          main()
 135          {
 136   1              unsigned char fsm_adc=0;
 137   1              unsigned int  V_ADJ=0;
 138   1              IE=0X40;
 139   1              start_timer();
 140   1              EA=1;       /* Enable interrupts */
 141   1              volt_group.port=0;
 142   1              volt_group.preport=0;
 143   1              tlc_volt_read(volt_group.port);
 144   1              volt_group.port=1;
 145   1              set_timer(VOLT_TIMER,VOLT_TIMER_LEN);
 146   1              set_timer(ADC0801_TIMER,ADC0801_TIMER_LEN);
 147   1              while(1){
 148   2                      if(TT[VOLT_TIMER]){
*** WARNING C276 IN LINE 148 OF MAIN.C: constant in condition expression
 149   3                              set_timer(VOLT_TIMER,VOLT_TIMER_LEN);
 150   3                              Tlc_Ad_Cvt();
 151   3                      }
 152   2                      if(TT[ADC0801_TIMER]){
*** WARNING C276 IN LINE 152 OF MAIN.C: constant in condition expression
 153   3                              set_timer(ADC0801_TIMER,ADC0801_TIMER_LEN);
 154   3                              switch(fsm_adc){
 155   4                                      case FSM_ADC0801_START:
 156   4                                              fsm_adc=FSM_ADC0801_FINISH;
 157   4                                              Adc0801_Start_Cvt();
 158   4                                              break;
 159   4                                      case FSM_ADC0801_FINISH:
 160   4                                              fsm_adc=FSM_ADC0801_START;
 161   4                                              V_ADJ=Adc0801_Read();
 162   4                                              V_ADJ *=5;
 163   4                                              V_ADJ *=100;
 164   4                                              V_ADJ /=256;
 165   4                                              break;
 166   4                                      default:
 167   4                                              fsm_adc=FSM_ADC0801_START;
 168   4                                              break;
 169   4                              }                       
 170   3                      }
 171   2              }
 172   1      }
 173          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    567    ----
C51 COMPILER V7.06   MAIN                                                                  10/29/2006 14:30:41 PAGE 4   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     74       3
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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