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

📄 cortrol.lst

📁 在外部环境中检测亮度
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 1   


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

line level    source

   1          //****************************************************************************
   2          //**********情报板系统控制器程序              ***********
   3          //**********单片机STC12C5410AD,晶振18.432MHZ  ***********
   4          //**********LIUBIN<2008.6.16>                 ***********
   5          //**********当前版本1.0                       ***********
   6          //****************************************************************************
   7          #include <reg52.h>
   8          #include <stdio.h>
   9          #include <absacc.h>
  10          #include <ctype.h>
  11          #include <intrins.h> 
  12          #define ACK  1
  13          #define noACK 0
  14          #define MEASURE_TEMP 0X03   //测量温度命令        
  15          #define MEASURE_HUM1 0X05   //测量湿度命令   
  16          #define TEMP 0              //温度参数标志
  17          #define HUMI 1              //湿度参数标志
  18          #define LUMM 2              //亮度参数标志
  19          #define S_TEMP 3            
  20          #define DC     4         
  21          ////***********************************************************************************/
  22          sfr     ISP_CONTR=0xe7;   
  23          sfr ADC_CONTR=0XC5;
  24          sfr ADC_DATA=0XC6;
  25          sfr P1M0=0X91;
  26          sfr P1M1=0X92;
  27          sbit CHECK1=P1^0;
  28          sbit CHECK2=P1^1;
  29          sbit CHECK3=P1^2;
  30          sbit TH_DATA=P1^4;
  31          sbit TH_SCK =P1^5;
  32          sbit C=P3^7;
  33          sbit DRE=P3^2;
  34          sbit E=P1^7;
  35          sbit AC1=P2^0;
  36          sbit AC2=P2^1;
  37          sbit AC3=P2^2;
  38          sbit KB0=0XA0;
  39          sbit KB1=0XA1;
  40          sbit KB2=0XA2;
  41          sbit KB3=0XA3;
  42          sbit STB=P0^0;
  43          sbit CLK=P0^1;
  44          sbit DATA0=P0^2;
  45          sbit BELL=P0^3;
  46          sbit LED=P3^5;
  47          sbit IN1=P3^3;
  48          //sbit test=P1^6;
  49          //****************************************************************************************
  50          void delay1(unsigned char d1);
  51          void delay(unsigned int i);
  52          int ADC3_Switch(void);
  53          void POW_Check(void);
  54          void Display(signed int display_data,unsigned char dis_flag);
  55          void Display_set(signed int display_set_data,unsigned char dis_set_flag);
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 2   

  56          void serial_Init(void);
  57          char s_write_byte(char);
  58          void s_transstart(void);
  59          unsigned char s_read_byte(char s );
  60          signed int measure(unsigned char mode);  
  61          void key_deal(void);
  62          unsigned char key_switch(unsigned char key_d);
  63          void keycost_deal(unsigned char TH_flag);
  64          void bell(void);
  65          void error_bell(void);
  66          void TH_Control(void);
  67          void Key_scan();
  68          void R_Data_with(void);
  69          void read_device_status( );
  70          void set_TH_Control( );
  71          //******************************************************************/
  72          typedef unsigned char uchar;
  73          uchar xdata CHECK_DATA,POW_DATA;
  74          //uchar xdata serial_id;
  75          uchar xdata i,j;
  76          uchar xdata KeyNumber,kb_data;
  77          bit keyboard_flag,keyflag,RT_Flag;
  78          uchar xdata error;
  79          signed int L_Temp_set,H_Temp_set,H_Hum_set,H_Lum_set;//L_Hum_set,L_Lum_set;
  80          int TEM,HUMM,LUM,f1,f2,f3,time_count;
  81          char TH_F0,TH_F1,TH_F2,kf;
  82          uchar data  serial_count,serial_count_T;                                // serial帧位置计数  
  83          uchar data serial_length;                                                           // serial帧数据长度  
  84          uchar data serial_sum;                                                              // serial帧总校验和  
  85          uchar data serial_data;                                                     // serial帧数据  
  86          uchar data serial_id;                                                           // DEVICE地址 
  87          unsigned char serial_buf_R[7];                                  // 接收缓冲区
  88          unsigned char serial_buf_T[7];                                  // 发送缓冲区
  89          unsigned char serial_buf2[7];                                   // 接收缓冲2区
  90          /*****************************************************************/
  91          /***********************************************************************************/
  92          void main(void)
  93          {
  94   1       serial_Init( );
  95   1        while(1)
  96   1        {                       
  97   2              LED=0;                                           //点亮指示灯   
  98   2        
  99   2              POW_Check( );                                    //三相电源检测
 100   2              TH_Control();                                    //温湿度控制
 101   2       
 102   2              if(kb_data!=0xff)                                //按键查询处理
 103   2                { 
 104   3              key_deal();       
 105   3                  KeyNumber=0xff;
 106   3                  kb_data=0Xff;
 107   3                      keyflag=0;
 108   3            }             
 109   2          if(TH_F0==1&&RT_Flag==0)               
 110   2                {          
 111   3                 
 112   3              TEM=measure(TEMP);                           //测试温度值  
 113   3                  Display(TEM,TEMP);                           //显示温度值 
 114   3              
 115   3                       
 116   3                }
 117   2                
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 3   

 118   2          LED=1;                                           //熄灭指示灯   
 119   2              if(TH_F1==1&&RT_Flag==0)
 120   2                { 
 121   3                HUMM=measure(HUMI);                            //测试湿度值  
 122   3                Display(HUMM,HUMI);                            //显示湿度值  
 123   3            }
 124   2                
 125   2          if(TH_F2==1&&RT_Flag==0)
 126   2                { LUM=ADC3_Switch();                           //测试亮度值  
 127   3                  Display(LUM,LUMM);                           //显示亮度值   
 128   3                  keyflag=1;
 129   3                }         
 130   2          if(RT_Flag==1)
 131   2                  {
 132   3                              R_Data_with();
 133   3                              serial_count=0;                          //复位帧计数  
 134   3                              serial_sum=0;                            //复位校验和 
 135   3                      RT_Flag=0;
 136   3                       }         
 137   2        }
 138   1      }
 139          /*************************************初始化程序********************************
 140          ****函数名称:serial_Init()                         ****************************
 141          ****函数功能:设置通讯波特率,定时器0初值 ,变量初值****************************
 142          *******************************************************************************/          
 143          void serial_Init(void)
 144          { 
 145   1              TH1 = 0xFB;                                                                         // 设定TH1初值 , 波特率  19200  
 146   1              TL1 = 0xFB;                                                                         // 设定TL1初值,  波特率  19200   
 147   1              TH0 = 0Xa5;                                     //定时器0设置初值,定时时间为10MS
 148   1              TL0 = 0X00;
 149   1              SCON = 0x50;                                    // 设定串口工作方式
 150   1          PCON  = PCON|0X80;                                    
 151   1              TMOD = (TMOD & 0x0f) | 0x21;                                    // 设定T1为波特发生器
 152   1              PS   = 1;                                                                               // 串口为高级中断
 153   1              ES   = 1;                                                                               // 允许串口中断                                                 
 154   1              TR1  = 1;                                                                               // 启动T1
 155   1              TR0  = 1;  
 156   1          ET0  = 1; 
 157   1      //      EX1  = 1;
 158   1      //      PX1 =1;
 159   1      //      IT1=1;
 160   1              EA  = 0;
 161   1              DRE = 0;                                        //设485接受   
 162   1          C=0;
 163   1              E=0;
 164   1          delay(5);
 165   1              serial_id=P2;                                   //读地址 
 166   1              delay(5);
 167   1              E=1;
 168   1      
 169   1              BELL=1;
 170   1          error=0;  
 171   1      //      P2=0XF0;
 172   1          KeyNumber=0XFF;
 173   1              kb_data=0xff;
 174   1              keyboard_flag=1;
 175   1              RT_Flag=0;
 176   1              keyflag=0;
 177   1              f1=200;
 178   1              f2=0;
 179   1              f3=0;
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 4   

 180   1              TH_F0=0;
 181   1              TH_F1=0;
 182   1              TH_F2=0;
 183   1              time_count=0;
 184   1          kf=0;
 185   1          serial_count=0;
 186   1          serial_count_T=0;
 187   1          L_Temp_set=10;
 188   1          H_Temp_set=45;
 189   1          H_Hum_set=80;
 190   1              EA=1;
 191   1       }
 192          //********************************串口中断**********************************
 193          //*******函数功能:处理串口中断,接收数据到缓冲区
 194          //*******          发送缓冲区中要发送的数据
 195          //**************************************************************************
 196          void serial_IR (void) interrupt  4 
 197          {
 198   1        uchar temp;
 199   1        if(RI)
 200   1        {RI=0;
 201   2              //LED=0;
 202   2         temp=SBUF;
 203   2         if(temp==0x00)
 204   2              ISP_CONTR=0X60;                                     //软件复位  
 205   2         else 
 206   2         serial_buf_R[serial_count++]=temp;                   //将数据写入缓存区              
 207   2         }
 208   1        if(TI)
 209   1        { TI=0;
 210   2              serial_count_T++;
 211   2              if(serial_count_T < 7)
 212   2              SBUF = serial_buf_T[serial_count_T];            //发送待发数据  
 213   2              else DRE = 0;                                       //设485接受 
 214   2        }
 215   1      
 216   1      
 217   1       }
 218          
 219           //*********************************接收到数据处理函数*******************
 220           
 221          void R_Data_with(void)
 222          {// LED=0;
 223   1              for(i=0;i<7;i++)
 224   1         {
 225   2              serial_buf2[i]=serial_buf_R[i];
 226   2              }
 227   1               for(i=0;i<6;i++)
 228   1          {
 229   2              serial_sum+=serial_buf_R[i];
 230   2              }
 231   1                if(serial_sum==serial_buf2[6])                //校验和累加  
 232   1                      {  
 233   2                              if(serial_buf2[1]== serial_id)          //校验地址  
 234   2                      {   
 235   3                              if(serial_buf2[2] == 0xA0)
 236   3                                 read_device_status( );           //读取控制状态    
 237   3                                      if(serial_buf2[2]==0x50)
 238   3                                     {
 239   4                                      set_TH_Control( );              //设置控制  
 240   4                                 // write_flash();
 241   4                                 }
C51 COMPILER V7.20   CORTROL                                                               08/25/2008 11:28:19 PAGE 5   

 242   3                       }   
 243   2                        }  
 244   1       
 245   1       }

⌨️ 快捷键说明

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