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

📄 main.lst

📁 这是一个多点温度测量系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                                                                  05/23/2008 15:00:22 PAGE 1   


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

stmt level    source

   1          #include "AT89X52.H"
   2          #include "1602S51.H"
   3          #include "DS18B20S51.H"
*** WARNING C312 IN LINE 219 OF DS18B20S51.H: misplaced endif control
   4          unsigned char tt[16]={"I:  .   II:  .  "};
   5          unsigned char PP[16]={"III:  .         "};
   6          
   7          unsigned char sSendComBuf[5]={0x55,1,35,23,0xff};
   8          unsigned char sRecComBuf[5];
   9          
  10          unsigned char timecount=0;
  11          unsigned int TesTemperature1=0;//实测得到温度  4位,到达千
  12          unsigned int TesTemperature2=0;//实测得到温度
  13          unsigned int TesTemperature3=0;//实测得到温度
  14          bit ID_choose1=1;     //第一路温度测量开关   1 开,0 关
  15          bit ID_choose2=1;     //第二路温度测量开关
  16          bit ID_choose3=1;     //第三路温度测量开关
  17           unsigned int sst;
  18           unsigned char count3;
  19          unsigned char data bOut,bIn,bSout,bSin;
  20          
  21          
  22          void initTimer(void); //初始化定时器0
  23          int translate(unsigned int uiData,unsigned char ID);
  24          void Key_Scan(void);//按键扫描
  25          void PSendChar(unsigned char ch) ;
  26          void PSendString(unsigned char *st)  ;
  27          
  28          
  29          //向串口发送一个字符 
  30          void send_char_com( unsigned char ch) 
  31          { 
  32   1      SBUF=ch; 
  33   1      while (TI== 0 ); 
  34   1      TI= 0 ; 
  35   1      } 
  36          
  37          //向串口发送一个字符串,strlen为该字符串长度 
  38          void send_string_com( unsigned char *str, unsigned char strlen) 
  39          { 
  40   1      unsigned char k= 0 ; 
  41   1      do 
  42   1      { 
  43   2        send_char_com(str[k]); 
  44   2        k++; 
  45   2      } while (k < strlen); 
  46   1      } 
  47          
  48          
  49          
  50          //------------------------------
  51          //串口-中断方式
  52          //当要发送时,往SBUF里送值,设TI=1,设ES=1,就能发送了,
  53          //UART init
  54          void initUart(void)
C51 COMPILER V7.06   MAIN                                                                  05/23/2008 15:00:22 PAGE 2   

  55          {
  56   1      
  57   1      SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr 
  58   1      TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload 
  59   1      PCON |= 0x80 ; //SMOD=1; 
  60   1      TH1 = 0xFa ; //Baud:9600 fosc=11.0592MHz 
  61   1      IE |= 0x90 ; //Enable Serial Interrupt ES=1.EA=1
  62   1      TR1 = 1 ; // timer 1 run 
  63   1      }
  64          
  65           
  66          
  67          
  68          //串口接收中断函数 
  69          void serial () interrupt 4 using 3 
  70          { 
  71   1              static bit fist;
  72   1              if (RI) 
  73   1              { 
  74   2                      unsigned char ch; 
  75   2                      RI = 0 ; 
  76   2                      ch=SBUF; 
  77   2              //      PP[10]=ch+'0';
  78   2                      if (ch==0x55 )  //第一字节 
  79   2                      { 
  80   3                      fist=1;   //帧头
  81   3                      count3= 0 ; 
  82   3                      sRecComBuf[count3]=ch; 
  83   3                      } 
  84   2                 if((fist==1)&&(count3==4)&&(ch==0xff))  //帧尾
  85   2                  {
  86   3                        fist=0;   //帧尾
  87   3                        switch(sRecComBuf[1]) //路数选择
  88   3                         {
  89   4                            case 1:
  90   4                                       if(sRecComBuf[2]==0x01)  
  91   4                                                {
  92   5                                                  ID_choose1=1;//启动第一路
  93   5                                                }
  94   4                                                else if(sRecComBuf[2]==0x02)
  95   4                                                {
  96   5                                                  ID_choose1=0;//关闭第一路
  97   5                                                }
  98   4                           
  99   4                                       break;
 100   4                                case 2:
 101   4                                       if(sRecComBuf[2]==0x01)  
 102   4                                                {
 103   5                                                  ID_choose2=1;//启动第一路
 104   5                                                }
 105   4                                                else if(sRecComBuf[2]==0x02)
 106   4                                                {
 107   5                                                  ID_choose2=0;//关闭第一路
 108   5                                                }
 109   4                                       break;
 110   4                                case 3:
 111   4                                       if(sRecComBuf[2]==0x01)  
 112   4                                                {
 113   5                                                  ID_choose3=1;//启动第一路
 114   5                                                }
 115   4                                                else if(sRecComBuf[2]==0x02)
 116   4                                                {
C51 COMPILER V7.06   MAIN                                                                  05/23/2008 15:00:22 PAGE 3   

 117   5                                                  ID_choose3=0;//关闭第一路
 118   5                                                }
 119   4                                       break;
 120   4                                default:break;
 121   4                         }
 122   3                      }
 123   2      
 124   2              sRecComBuf[count3]=ch;
 125   2                      count3++;
 126   2                      
 127   2              } 
 128   1       
 129   1      } 
 130          
 131          
 132          
 133          
 134          void main()
 135          {
 136   1      
 137   1          initUart();
 138   1           
 139   1          init_LCD();   //初始化LCD----来自1602S51.H文件
 140   1       
 141   1         display(0x80,tt,16);  //界面显示
 142   1         display(0xC0,PP,16);
 143   1        while(1)
 144   1         {
 145   2              display(0x80,tt,16);  //界面显示
 146   2              display(0xC0,PP,16);
 147   2              Key_Scan();
 148   2       
 149   2                        if(ID_choose1)
 150   2                                         {
 151   3                                           sst=Read_Temperature(1);   //第一路
 152   3                                           TesTemperature1=translate(sst,1);   
 153   3                                                
 154   3                                           sSendComBuf[1]=ID_choose1;     //路号
 155   3                           sSendComBuf[2]=TesTemperature1/100 ;     //整数位
 156   3                                               sSendComBuf[3]=TesTemperature1%100;     //小数位
 157   3      
 158   3                                               send_string_com(sSendComBuf,5);
 159   3                                               delay_ms(50);
 160   3                                         }
 161   2         
 162   2                        if(ID_choose2)
 163   2                                         {
 164   3                                           sst=Read_Temperature(2);   //第二路
 165   3                                           TesTemperature2=translate(sst,2);          
 166   3                                 
 167   3                                           sSendComBuf[1]=2;     //路号
 168   3                           sSendComBuf[2]=TesTemperature2/100 ;     //整数位
 169   3                                               sSendComBuf[3]=TesTemperature2%100;     //小数位
 170   3      
 171   3                                               send_string_com(sSendComBuf,5);
 172   3                                               delay_ms(50);
 173   3      
 174   3                                         }
 175   2      
 176   2                        if(ID_choose3)
 177   2                                         {
 178   3                                           sst=Read_Temperature(3);   //第三路
C51 COMPILER V7.06   MAIN                                                                  05/23/2008 15:00:22 PAGE 4   

 179   3                                           TesTemperature3=translate(sst,3);  

⌨️ 快捷键说明

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