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

📄 ceshi.lst

📁 单片机初学者可用
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   CESHI                                                                 08/08/2008 15:17:00 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE CESHI
OBJECT MODULE PLACED IN ceshi.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ceshi.c ROM(COMPACT) OPTIMIZE(9,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //flow light and beep 
   2          #include <reg51.h>
   3          #include <intrins.h>
   4          #define uint unsigned int
   5          #define uchar unsigned char
   6          sbit adrd=P3^7;                          //IO口定义
   7          sbit adwr=P3^6;
   8          sbit ss1=P3^4;
   9          sbit ss2=P3^5;
  10          sbit diola=P2^5;
  11          sbit dula=P2^6;
  12          sbit wela=P2^7;
  13          sbit csda=P3^2;
  14          sbit dawr=P3^6;
  15          unsigned char j,k;
  16          unsigned char a,b;
  17          sbit DS=P2^2;           //define interface
  18          uint temp;             // variable of temperature
  19          uchar flag1;            // sign of the result positive or negative
  20          sbit beep=P2^3;
  21          void dazhuanhuan();
  22          void adzhuanhuan();
  23          void jianpan();
  24          void display1(unsigned char);
  25          uchar code table[]=
  26          {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,             //数码管编码
  27          0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
  28          unsigned char code table1[]=
  29          {0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
  30          0x87,0xff,0xef};
  31          
  32          void delay1(uint count)      //delay
  33          {
  34   1        uint i;
  35   1        while(count)
  36   1        {
  37   2          i=200;
  38   2          while(i>0)
  39   2          i--;
  40   2          count--;
  41   2        }
  42   1      }
  43          ///////功能:串口初始化,波特率9600,方式1///////
  44          void Init_Com(void)
  45          {
  46   1           TMOD = 0x20;
  47   1           PCON = 0x00;
  48   1           SCON = 0x50;
  49   1           TH1 = 0xFd;
  50   1           TL1 = 0xFd;
  51   1           TR1 = 1;
  52   1      }
  53          
  54          void dsreset(void)       //send reset and initialization command
  55          {
C51 COMPILER V7.50   CESHI                                                                 08/08/2008 15:17:00 PAGE 2   

  56   1        uint i;
  57   1        DS=0;
  58   1        i=103;
  59   1        while(i>0)i--;
  60   1        DS=1;
  61   1        i=4;
  62   1        while(i>0)i--;
  63   1      }
  64          
  65          bit tmpreadbit(void)       //read a bit
  66          {
  67   1         uint i;
  68   1         bit dat;
  69   1         DS=0;i++;          //i++ for delay
  70   1         DS=1;i++;i++;
  71   1         dat=DS;
  72   1         i=8;while(i>0)i--;
  73   1         return (dat);
  74   1      }
  75          
  76          uchar tmpread(void)   //read a byte date
  77          {
  78   1        uchar i,j,dat;
  79   1        dat=0;
  80   1        for(i=1;i<=8;i++)
  81   1        {
  82   2          j=tmpreadbit();
  83   2          dat=(j<<7)|(dat>>1);   //读出的数据最低位在最前面,这样刚好一个字节在DAT里
  84   2        }
  85   1        return(dat);
  86   1      }
  87          
  88          void tmpwritebyte(uchar dat)   //write a byte to ds18b20
  89          {
  90   1        uint i;
  91   1        uchar j;
  92   1        bit testb;
  93   1        for(j=1;j<=8;j++)
  94   1        {
  95   2          testb=dat&0x01;
  96   2          dat=dat>>1;
  97   2          if(testb)     //write 1
  98   2          {
  99   3            DS=0;
 100   3            i++;i++;
 101   3            DS=1;
 102   3            i=8;while(i>0)i--;
 103   3          }
 104   2          else
 105   2          {
 106   3            DS=0;       //write 0
 107   3            i=8;while(i>0)i--;
 108   3            DS=1;
 109   3            i++;i++;
 110   3          }
 111   2      
 112   2        }
 113   1      }
 114          
 115          void tmpchange(void)  //DS18B20 begin change
 116          {
 117   1        dsreset();
C51 COMPILER V7.50   CESHI                                                                 08/08/2008 15:17:00 PAGE 3   

 118   1        delay1(1);
 119   1        tmpwritebyte(0xcc);  // address all drivers on bus
 120   1        tmpwritebyte(0x44);  //  initiates a single temperature conversion
 121   1      }
 122          
 123          uint tmp()               //get the temperature
 124          {
 125   1        float tt;
 126   1        uchar a,b;
 127   1        dsreset();
 128   1        delay1(1);
 129   1        tmpwritebyte(0xcc);
 130   1        tmpwritebyte(0xbe);
 131   1        a=tmpread();
 132   1        b=tmpread();
 133   1        temp=b;
 134   1        temp<<=8;             //two byte  compose a int variable
 135   1        temp=temp|a;
 136   1        tt=temp*0.0625;
 137   1        temp=tt*10+0.5;
 138   1        return temp;
 139   1      }
 140          
 141          void readrom()          //read the serial
 142          {
 143   1        uchar sn1,sn2;
 144   1        dsreset();
 145   1        delay1(1);
 146   1        tmpwritebyte(0x33);
 147   1        sn1=tmpread();
 148   1        sn2=tmpread();
 149   1      }
 150          void delay10ms1()            //delay
 151            {
 152   1          uchar a,b;
 153   1          for(a=10;a>0;a--)
 154   1            for(b=60;b>0;b--);
 155   1         }
 156          void display2(uint temp)            //显示程序
 157          {
 158   1         uchar A1,A2,A2t,A3,ser;
 159   1         ser=temp/10;
 160   1         SBUF=ser;
 161   1         A1=temp/100;
 162   1         A2t=temp%100;
 163   1         A2=A2t/10;
 164   1         A3=A2t%10;
 165   1         dula=0;
 166   1         P0=table[A1];        //显示百位
 167   1         dula=1;
 168   1         dula=0;
 169   1      
 170   1         wela=0;
 171   1         P0=0x7e;
 172   1         wela=1;
 173   1         wela=0;
 174   1         delay1(1);
 175   1      
 176   1         dula=0;
 177   1         P0=table1[A2];       //显示十位
 178   1         dula=1;
 179   1         dula=0;
C51 COMPILER V7.50   CESHI                                                                 08/08/2008 15:17:00 PAGE 4   

 180   1      
 181   1         wela=0;
 182   1         P0=0x7d;
 183   1         wela=1;
 184   1         wela=0;
 185   1         delay1(1);
 186   1      
 187   1         P0=table[A3];        //显示个位
 188   1         dula=1;
 189   1         dula=0;
 190   1      
 191   1         P0=0x7b;
 192   1         wela=1;
 193   1         wela=0;
 194   1         delay1(1);
 195   1      }
 196          void wendu()
 197          {
 198   1       uchar a,c;
 199   1       Init_Com();
 200   1        for(c=0;c<20;c++)
 201   1        {
 202   2          tmpchange();
 203   2         // delay(200);
 204   2         for(a=10;a>0;a--)
 205   2           {   display2(tmp());
 206   3           }
 207   2        }
 208   1      }
 209          void delay10ms()
 210            {
 211   1          for(a=100;a>0;a--)
 212   1            for(b=225;b>0;b--);
 213   1         }
 214          
 215          //拧动AD旁边的电位器,会在数码管的前三位显示0-255之间的数值。这就是把模拟电压转换成数字信号。
 216          
 217          void delay(unsigned char i)     //延时程序
 218          {
 219   1        for(j=i;j>0;j--)
 220   1          for(k=125;k>0;k--);
 221   1      }
 222          void display(uchar bai_c,uchar sh_c,uchar g_c)     //显示程序
 223          {
 224   1         dula=0;
 225   1         P0=table[bai_c];     //显示百位
 226   1         dula=1;
 227   1         dula=0;
 228   1      
 229   1         wela=0;
 230   1         P0=0x7e;
 231   1         wela=1;
 232   1         wela=0;
 233   1         delay(5);
 234   1      
 235   1         dula=0;
 236   1         P0=table[sh_c];      //显示十位
 237   1         dula=1;
 238   1         dula=0;
 239   1      
 240   1         wela=0;
 241   1         P0=0x7d;
C51 COMPILER V7.50   CESHI                                                                 08/08/2008 15:17:00 PAGE 5   

 242   1         wela=1;

⌨️ 快捷键说明

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