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

📄 温测b.lst

📁 基于80c51的温度采集测量系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 温测B
OBJECT MODULE PLACED IN 温测b.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 温测b.c DEBUG OBJECTEXTEND

line level    source

   1          #include "reg51.h"
   2          #include "intrins.h"
   3          #define uchar unsigned char
   4          #define uint  unsigned int
   5          unsigned char discode[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff,0xbf,0xc6,0x89,0x9e};
   6          unsigned char discode1[]={0x40,0x79,0x24,0x30,0x19,012,0x02,0x78,0x00,0x10};
   7          unsigned char displaybuf[]={0,0,0,0,0};
   8          unsigned char readdata[2]={0};
   9          unsigned char k,timecount,n=0,count=0,second=0,minite=0,hour=1;
  10          uint addr=0x00,addup,result,judgecount=0;
  11          bit a=0;tmr1=0,d=0,dealen=0,sflag,b,judge=0,judgechange=0;
  12          unsigned char i=0;
  13          sbit DQ=P0^0;
  14          sbit sda=P3^7;      
  15          sbit scl=P3^6; 
  16          sbit P05=P0^5;
  17          //MCU初始化部分*************
  18          void MCU_init();
  19          //DS820************************
  20          void DS1820_delay(unsigned int x);
  21          void  writecommandtods18b20( uchar command );
  22          uchar readdatafromds18b20();
  23          void  resetpulse();
  24          //IIC部分***************
  25          void IIC_delay(uchar x);
  26          void flash();
  27          void x24c02_init();
  28          void start(); 
  29          void stop();
  30          void writex(uchar j);
  31          uchar readx();
  32          void clock();
  33          uchar x24c02_read(uchar address);
  34          void x24c02_write(uchar address,uchar info);
  35          void delay10ms(void);
  36          //键盘处理函数
  37          void keytr0_deal(uchar x)
  38          {
  39   1        while((P3&0x3f)!=0x3f);
  40   1        switch(x)
  41   1        {
  42   2        case 0x3e: judgechange=1;b=1;displaybuf[0]=12;break;
  43   2        case 0x3d: judgechange=0;displaybuf[0]=13;break;
  44   2        case 0x3b: {
  45   3                    if(judgechange)
  46   3                                {
  47   4                    x24c02_write(2*addr,readdata[0]);
  48   4                    x24c02_write(2*addr+1,readdata[1]);
  49   4                                addr++;addup=addr;
  50   4                                }
  51   3                                break;
  52   3                                }
  53   2        case 0x37:{ judgechange=0;
  54   3                    if(addr==0) break;
  55   3                    if(addup==addr)
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 2   

  56   3                    {if(addr>10)   displaybuf[0]=10;
  57   4                          else displaybuf[0]=addr;
  58   4                     k=displaybuf[0];}
  59   3                    if((addr-addup)<k)
  60   3                    {
  61   4                                addup--;
  62   4                    readdata[1]=x24c02_read(2*addup+1);
  63   4                        readdata[0]=x24c02_read(2*addup);
  64   4                    
  65   4                        dealen=1;
  66   4                        displaybuf[0]--;
  67   4                    }
  68   3                    break;
  69   3                  }
  70   2        case 0x2f:{
  71   3                    judgechange=0;
  72   3                    if(addr==0) break;
  73   3                    if(addup==(addr-1)) {break;}
  74   3                    if(addup<addr-1)
  75   3                      {
  76   4                      addup++;
  77   4                      displaybuf[0]++;
  78   4                      readdata[0]=x24c02_read(2*addup);
  79   4                      readdata[1]=x24c02_read(2*addup+1);
  80   4                      dealen=1;
  81   4                      }
  82   3                      break;
  83   3                   }
  84   2        case  0x1f: tmr1=1;judgechange=1;b=1;judgecount=0;addr=0;displaybuf[0]=14;break;
  85   2        default:  break;
  86   2        }
  87   1      }
  88          void change_deal(void)
  89          {
  90   1        if(judgechange&&(!b))
  91   1        {
  92   2         timecount++;
  93   2         if(timecount==50)
  94   2          {
  95   3            b=1;
  96   3                timecount=0;
  97   3            resetpulse();  
  98   3            writecommandtods18b20(0xcc);
  99   3            writecommandtods18b20(0xbe);
 100   3            readdata[0]=readdatafromds18b20();
 101   3                readdata[1]=readdatafromds18b20();
 102   3            dealen=1;
 103   3        }
 104   2        }
 105   1        if(dealen==1) 
 106   1        {
 107   2        sflag=1;
 108   2            if((readdata[1] & 0xf8)!=0x00)
 109   2              {
 110   3                sflag=0;
 111   3                readdata[1]=~readdata[1];
 112   3                readdata[0]=~readdata[0];
 113   3                result=readdata[0]+1;
 114   3                readdata[0]=result;
 115   3                if(result>255)
 116   3                  {
 117   4                    readdata[1]+=1;
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 3   

 118   4                  }
 119   3              }
 120   2                      if(sflag) displaybuf[1]=10;
 121   2                      else  displaybuf[1]=11; 
 122   2          result=((readdata[1]*256+readdata[0])*0.0625)*10;
 123   2              dealen=0;
 124   2              }     
 125   1        displaybuf[2]=result/100;
 126   1        displaybuf[3]=result/10%10;
 127   1        displaybuf[4]=result%10;
 128   1      }
 129          void keytr1_deal(uchar x)
 130          {
 131   1        while((P3&0x3f)!=0x3f);
 132   1        switch(x)
 133   1         {
 134   2         case 0x3d: judgechange=0;displaybuf[0]=13;tmr1=0;break;
 135   2         default: break;
 136   2         }
 137   1      }
 138          void display(void)
 139          {
 140   1        P1=(0x08<<n);
 141   1        P2=discode[displaybuf[n]];
 142   1        n++;
 143   1        if(n==6) n=0; 
 144   1      }
 145          
 146          void main(void)
 147          {
 148   1        MCU_init();
 149   1        x24c02_init();
 150   1        while(1)
 151   1        {
 152   2        if(tmr1) {TR0=0;TR1=1;}
 153   2          else {TR0=1;TR1=0;}
 154   2        if(judgechange&&b) 
 155   2        {
 156   3          resetpulse();
 157   3          writecommandtods18b20(0xcc);
 158   3          writecommandtods18b20(0x44);
 159   3              b=0;
 160   3        }     
 161   2        }  
 162   1      }  
 163          void t0(void) interrupt 1
 164          {
 165   1        TH0=(65536-4000)/256;
 166   1        TL0=(65536-4000)%256;
 167   1        display();
 168   1        if((P3&0x3f)!=0x3f)    judgecount++;
 169   1        if((judgecount==25))  
 170   1        {
 171   2         judgecount=0;
 172   2         keytr0_deal(P3&0x3f);
 173   2        }
 174   1        change_deal();
 175   1        }
 176            void t1(void) interrupt 3
 177            {
 178   1        TH1=(65536-4000)/256;
 179   1        TL1=(65536-4000)%256;
C51 COMPILER V8.05a   温测B                                                                07/04/2008 19:10:02 PAGE 4   

 180   1        display();
 181   1        count++;
 182   1        if(count==250) /*{second++;count=0;}
 183   1        if(second==1) {minite++;second=0;}
 184   1        if(minite==1) {hour++;minite=0;}
 185   1        if(hour==1)*/
 186   1                   { x24c02_write(2*addr,readdata[0]);
 187   2                    x24c02_write(2*addr+1,readdata[1]);
 188   2                                addr++;addup=addr;
 189   2                                hour=0;
 190   2                                }
 191   1        if((P3&0x3f)!=0x3f) judgecount++;
 192   1        if((judgecount==25))  
 193   1        {
 194   2         judgecount=0;   
 195   2         keytr1_deal(P3&0x3f);
 196   2         }
 197   1         change_deal();
 198   1        }
 199          //////////////////////////////////////////////////////////////////////////////////////////////////////
 200          void DS1820_delay( unsigned int x )

⌨️ 快捷键说明

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