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

📄 main.lst

📁 这是一种温度变送器的源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  01/03/2008 17:28:43 PAGE 1   


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

stmt level    source

   1          #include <c8051f350.h>
   2          #include <intrins.h>
   3          #include "adc.h"
   4          #include "I2C.h"
   5          #include "menu.h"
   6          #include "math.h"
   7          #include "variable.h"
   8          
   9          sbit SRCLK      =P0^0;
  10          sbit SER        =P0^2;
  11          sbit SDA        =P0^6;
  12          sbit SCL        =P0^7;
  13          
  14          sbit RCK0       =P1^1;
  15          sbit RCK1       =P1^2;
  16          sbit RCK2       =P1^3;
  17          sbit RCK3       =P1^4;
  18          sbit RCK4       =P1^5;
  19          sbit KR         =P1^6;
  20          
  21          void wait(unsigned char del);
  22          void IO_init(void);
  23          void Timer_init(void);
  24          void Inter_init(void);
  25          /**********************************************
  26          
  27          */
  28          void AlarmOut()
  29          {
  30   1              unsigned char i;
  31   1              //ACC = val;
  32   1              for (i=8;i>0;i--)
  33   1              {
  34   2                  SRCLK=0;//拉低74HC595时钟       
  35   2                  SER=0;//crol(ACC,1);// CY;//发送74HC595一位串行数据
  36   2                      //_nop_();//wait(1);
  37   2                  SRCLK=1;//拉高74HC595时钟
  38   2                  //_nop_();//wait(1);//延时
  39   2              }
  40   1              RCK2=0;
  41   1              _nop_();//wait(2);//延时
  42   1              RCK2=1;
  43   1              _nop_();//wait(2);
  44   1              RCK2=0;
  45   1      }
  46          
  47          void main(void)
  48          {
  49   1              //系统时钟设置
  50   1              //PCA0MD &= ~0x40;//禁止看门狗
  51   1          PCA0MD  = 0x00;
  52   1              
  53   1              Inter_init();
  54   1              Timer_init();
  55   1              //端口初始化
C51 COMPILER V7.06   MAIN                                                                  01/03/2008 17:28:43 PAGE 2   

  56   1              IO_init();
  57   1      
  58   1              //ADC初始化
  59   1              Adc_init();
  60   1              //DAC初始化
  61   1              Dac_init();
  62   1              //SMBus初始化
  63   1              SMbus_init();
  64   1               EA=1;
  65   1      
  66   1              
  67   1              //显示参数初始化
  68   1              timer_cnt=0;
  69   1              disp_sta=0x80;
  70   1              disp_cnt=0x08;  
  71   1              //RCK0=0;
  72   1              //RCK1=0;
  73   1              //RCK2=0;
  74   1              //RCK3=0;
  75   1              //RCK4=0;
  76   1              //SER=1;
  77   1              //SRCLK=1;
  78   1              Dac_hdl(24);
  79   1              //SMbus_24c02_read(2);
  80   1      AlarmOut();
  81   1              dem_flag=0;
  82   1              pin_flag=0;     
  83   1      
  84   1              load_ref();//加载参数
  85   1                      
  86   1              while(1)
  87   1              {
  88   2                              if(ref_table[ref_sn]<rt_start)//判断当前设置的是阻型还是偶型
  89   2                              {
  90   3                                      pin_flag=0;                                     //偶型
  91   3                              }
  92   2                              else
  93   2                              {
  94   3                                      pin_flag=1;                                     //阻型
  95   3                              }
  96   2                              //AD采样
  97   2                              if(pin_flag)
  98   2                                      ad_value=Adc0_hdl(0x67);//阻
  99   2                              else
 100   2                                      ad_value=Adc0_hdl(0x45);//偶
 101   2              
 102   2                              //选择精度范围
 103   2                              if(!dem_flag)   
 104   2                                      choose_range();
 105   2              
 106   2                              //温度数据处理
 107   2                              if(!menu_flag)
 108   2                              {
 109   3                                      temp_process();
 110   3                                      switch(led_degree)     //led_degree为计算出来的温度值
 111   3                                      {
 112   4                                              case degree_brok:
 113   4                                                      renew_page_high(Itm_brok);
 114   4                                                      break;
 115   4                                              case degree_overflow:
 116   4                                                      renew_page_high(Itm_overflow);
 117   4                                                      break;
C51 COMPILER V7.06   MAIN                                                                  01/03/2008 17:28:43 PAGE 3   

 118   4                                              //case sc_overflow:
 119   4                                              //      renew_page_high(Itm_1sc);
 120   4                                              //      break;
 121   4                                              default:
 122   4                                                      dis_flag=1;
 123   4                                                      if(pin_flag)
 124   4                                                              point_pos=2;
 125   4                                                      display_num(led_degree);
 126   4                                      }
 127   3                              }
 128   2                              //wait(200);
 129   2                              //wait(200);
 130   2                              //wait(200);
 131   2                              //wait(200);    
 132   2                              //菜单处理
 133   2                              menu_hdl();     
 134   2      
 135   2                              //标定操作时显示标定值
 136   2                              if(dem_flag)    
 137   2                              {
 138   3                                      if(pin_flag)
 139   3                                              ref_table[ref_buffer+volt_range1-counter]=Adc0_hdl_f(0x67);
 140   3                                      else 
 141   3                                              ref_table[ref_buffer+volt_range1-counter]=Adc0_hdl_f(0x45);
 142   3                                      point_pos=point_pos_1;
 143   3                                      dis_flag=0;                     
 144   3                                      display_num(ref_table[ref_buffer+volt_range1-counter]);
 145   3                              }       
 146   2              }
 147   1      }
 148          /*******************************************
 149          中断初始化
 150          *******************************************/
 151          void Inter_init(void)
 152          {
 153   1              EIE1= 0x01;//中断允许
 154   1              IE      = 0x20;
 155   1              EIP1= 0x01;//中断优先
 156   1      }
 157          
 158          /*******************************************
 159          定时器初始化
 160          *******************************************/
 161          void Timer_init(void)
 162          {
 163   1              CLKSEL  =0;//选择内部时钟
 164   1              OSCICN  =0x80;//内部时钟使能,8分频
 165   1              TCON    =0x10;
 166   1              TMOD    =0x02;//T0作为波特率发生器
 167   1              SMB0CF  =0x00;
 168   1          CKCON   =0x01;
 169   1          TH0     =0xda;
 170   1              TL0             =0xda;
 171   1      
 172   1              //CKCON =0x10;
 173   1          TMR2CN  =0x04;//T2显示键盘中断定时
 174   1              
 175   1          TMR2RLL =0x00;
 176   1          TMR2RLH =0x00;
 177   1          TMR2L   =0x00;
 178   1          TMR2H   =0x00;
 179   1      
C51 COMPILER V7.06   MAIN                                                                  01/03/2008 17:28:43 PAGE 4   

 180   1      }
 181          /*******************************************
 182          端口初始化
 183          *******************************************/
 184          void IO_init(void)
 185          {                
 186   1              XBR0    =0x05;//I2C,UART使能
 187   1              XBR1    =0x40;//交叉开关使能
 188   1              P0MDIN  =0xff;//数字输入
 189   1              P0MDOUT =0;
 190   1              P0SKIP  =0x0f;//???
 191   1              P1MDIN  =0xff;//数字输入

⌨️ 快捷键说明

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