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

📄 tb1820gengxin.lst

📁 使用c编写的一套温控程序,可是通过外部调节来设置上限温度,和下限温度,在正常的范围内,有正常指示灯指示,当超过上限时,超上限温度指示灯指示,当低于下限时,下限温度指示灯指示,也可以通过外围电路连接其他
💻 LST
字号:
C51 COMPILER V7.50   TB1820GENGXIN                                                         03/14/2008 15:23:02 PAGE 1   


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

line level    source

   1           /*8M crystal ,temperture detector.The number of controlling 
   2                                         device is DS1820*/
   3          #include<REGX51.h>
   4          #include<absacc.h>
   5          #include<stdio.h>
   6          #include<math.h>
   7          #include<float.h>
   8          #define uchar unsigned char
   9          #define uint unsigned int
  10          #define  toj  P3_7 
  11          unsigned char xiaoshu(uchar i);
  12           void delay() ;
  13          char code codenumber[]={0x03,0x9f,0x25,0x0c,0x99,0x48,0x40,0x1f,0x00,0x09};
  14          uchar termp1,termp2,set;
  15          static uchar   uptemp,downtemp,j;
  16           int  tmpt=0;
  17           void dsreset(void)        /*初始化*/
  18            {    unsigned char i;
  19   1        start: 
  20   1                i=200;
  21   1            P3_5=0;
  22   1            while(i>0) i--;
  23   1                P3_5=1;
  24   1            i=20;
  25   1            while(i>0) i--;
  26   1                while(P3_5==1) goto start;
  27   1                i=40;
  28   1                while(i>0)
  29   1                { if(P3_5==1) break;
  30   2                  i--;
  31   2                 }
  32   1                 if(i==0)  goto start;
  33   1                 else P3_5=1;
  34   1                 i=160;
  35   1                 while(i>0) i--;
  36   1        }
  37          unsigned char tmpread2(void)   /*读一字节*/
  38            {   unsigned char i, k,dat2;
  39   1            bit testb;
  40   1           dat2=0;
  41   1          for(i=0;i<8;i++)
  42   1             {  P3_5=0; 
  43   2                     k=4;
  44   2                        P3_5=1;
  45   2                        while(k>0) k--;
  46   2                        testb=P3_5;
  47   2                         k=18;
  48   2                        while(k>0) k--;
  49   2                        dat2=dat2>>1;
  50   2                       dat2=testb?dat2|0x80:dat2|0x00;
  51   2               }
  52   1              return(dat2);
  53   1              }
  54           void tmpwrite(unsigned char dat)        /*写字节数据*/
  55           {
C51 COMPILER V7.50   TB1820GENGXIN                                                         03/14/2008 15:23:02 PAGE 2   

  56   1           unsigned int i;
  57   1               unsigned char j;
  58   1               bit testb;
  59   1               for(j=0;j<8;j++)
  60   1               {  
  61   2                  testb=dat&0x01;
  62   2                      dat=dat>>1;
  63   2                      P3_5=0;
  64   2                      i=1;
  65   2                      while(i>0) i--;
  66   2                      P3_5=testb;
  67   2                      i=4;
  68   2                      while(i>0) i--;
  69   2                      P3_5=1;
  70   2                }
  71   1              }
  72           void tmpchange(void)    /*温度转换*/
  73            { 
  74   1              dsreset();
  75   1               tmpwrite(0xcc);
  76   1               tmpwrite(0x44);
  77   1        }
  78            void showtermp()              /*温度显示*/
  79            {       
  80   1                unsigned char ten,xshu;
  81   1                        if(termp2&0x80) 
  82   1                         { termp1=~termp1+1;
  83   2                   termp2=~termp2;
  84   2                               if(termp1==0)
  85   2                               termp2=termp2+1;
  86   2                               termp2=termp2*16;
  87   2                               termp1=termp1&0xf0;
  88   2                               termp1=termp1>>4;
  89   2                               tmpt=termp2+termp1;
  90   2                               ten=tmpt/10;
  91   2                              
  92   2                      }
  93   1                              else{ termp2=termp2*16;
  94   2                                   xshu=xiaoshu(termp1&0x0f) ;
  95   2                               termp1=termp1&0xf0;
  96   2                               termp1=termp1>>4;
  97   2                               tmpt=termp2+termp1;
  98   2                               ten=tmpt/10;
  99   2                              
 100   2                               }
 101   1              
 102   1                          toj=0;
 103   1                       
 104   1                              SBUF=codenumber[ten];
 105   1                               ten=tmpt%10; while(!TI) ; TI=0;
 106   1                                SBUF=codenumber[ten];
 107   1                               while(!TI) ; TI=0; 
 108   1                               SBUF=codenumber[xshu];
 109   1                               while(!TI); TI=0;
 110   1                               toj=1;
 111   1                               delay();
 112   1                               }
 113           unsigned char xiaoshu(uchar i)
 114           {       switch(i)
 115   1          { case 0 :  ;
 116   2                case 1 :      return( 0);     break;
 117   2                case 2 :return (1);break;
C51 COMPILER V7.50   TB1820GENGXIN                                                         03/14/2008 15:23:02 PAGE 3   

 118   2                case 3 : ;
 119   2                case 4 :return (2) ;   break;
 120   2                case 5 :return 3 ;break;
 121   2                case 6 :       ;
 122   2                case 7 : return 4 ;break;
 123   2                case 8 : return 5 ; break;
 124   2                case 9 :       ;
 125   2                case 10 : return 6 ;break;
 126   2                case 11 :        ;
 127   2                case 12 :return 7 ; break;
 128   2                case 13 : return 8 ;break;
 129   2                case 14 :        ;
 130   2                case 15 :return 9 ; break;
 131   2                }
 132   1              }
 133          
 134           void delay()
 135              { unsigned char i,j;
 136   1                 for(i=0;i<250;i++)
 137   1              for(j=0;j<254;j++);
 138   1              }
 139            void control(void)        /*温度设置*/
 140            {      uchar i,l; 
 141   1         if(P3_2==0)
 142   1           { i=20; 
 143   2                  while(i--);
 144   2                  if(P3_2==0)
 145   2                 { while(P3_2==0);
 146   3                  set=1; }
 147   2                
 148   2                    }
 149   1                
 150   1                while(set==1)
 151   1                {  
 152   2                 if(P3_3==0)
 153   2                 {   for(i=0;i<8;i++);
 154   3                   if(P3_3==0)
 155   3                       {  while(P3_3==0);
 156   4                 uptemp++;
 157   4                 if(uptemp==85) 
 158   4                 uptemp=35;
 159   4                 l=0;
 160   4                  }
 161   3                 }    
 162   2      
 163   2                if(P3_4==0)
 164   2                { for(i=0;i<8;i++);
 165   3                 if(P3_4==0)
 166   3               {  while(P3_4==0);
 167   4               downtemp--;
 168   4                 if(downtemp==3) 
 169   4                 downtemp=30;  
 170   4                 l=1; } 
 171   3                 } 
 172   2      
 173   2      
 174   2                 if(P3_2==0)
 175   2           { i=20; 
 176   3                  while(i--);
 177   3                  if(P3_2==0)
 178   3                 { while(P3_2==0);
 179   4                  set=0; }
C51 COMPILER V7.50   TB1820GENGXIN                                                         03/14/2008 15:23:02 PAGE 4   

 180   3                
 181   3                    }
 182   2                toj=0;
 183   2                switch(l)
 184   2                   { case 0 : {   SBUF=codenumber[uptemp/10];
 185   4                                      while(!TI) ; TI=0;
 186   4                                  SBUF=codenumber[uptemp%10]; 
 187   4                                                      while(!TI);TI=0;
 188   4                                                      SBUF=0xff;
 189   4                                                      while(!TI); TI=0; break; }
 190   3                     case 1 : {         SBUF=codenumber[downtemp/10];
 191   4                                         while(!TI) ; TI=0;
 192   4                                  SBUF=codenumber[downtemp%10];
 193   4                                                      while(!TI);TI=0;
 194   4                                                      SBUF=0xff; 
 195   4                                                      while(!TI) ; TI=0;  break; }
 196   3      
 197   3                   }
 198   2                       toj=1;
 199   2                   delay();
 200   2                       toj=0;
 201   2                   delay();
 202   2                       toj=1;
 203   2                   }
 204   1                 }
 205                     
 206                    
 207            void out(void)
 208            { if(downtemp<tmpt&&tmpt<uptemp)
 209   1           { P1_1=1; P1_0=P1_2=0;      }
 210   1                else if(tmpt>uptemp||tmpt==uptemp)
 211   1                 {  P1_0=1;P1_1=P1_2=0;}
 212   1                else  { P1_2=1;P1_0=P1_1=0; }
 213   1                }
 214            void  main(void)
 215            {
 216   1        unsigned char i;
 217   1            SCON=0x00;
 218   1               ES=0;
 219   1             set=0;
 220   1                uptemp=40;
 221   1                downtemp=35;
 222   1        
 223   1           do {  control();
 224   2                    P3_5=1;
 225   2                    tmpchange();
 226   2                        dsreset();
 227   2                        tmpwrite(0xcc);
 228   2                        tmpwrite(0xbe);
 229   2                   termp1=tmpread2();
 230   2               termp2=tmpread2();
 231   2                       P3_5=0;
 232   2                       i=150;
 233   2                       while(i>0) i--;
 234   2                         showtermp();
 235   2                         out();
 236   2                      }while(1);
 237   1              }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    719    ----
C51 COMPILER V7.50   TB1820GENGXIN                                                         03/14/2008 15:23:02 PAGE 5   

   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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