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

📄 zuosi.lst

📁 单片机单片机单单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机单片机片机单片机单片机单片机
💻 LST
字号:
C51 COMPILER V6.12  ZUOSI                                                                  04/29/2009 14:54:28 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE ZUOSI
OBJECT MODULE PLACED IN zuosi.obj
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\sucess\zuosi.c DEBUG OBJECTEXTEND PRINT(.\zuosi.lst) OBJECT(zuosi.obj) 

stmt level    source

   1          #include<reg52.h>
   2          #include<stdio.h>
   3          #include<intrins.h>
   4          
   5          #define uchar unsigned char 
   6          #define uint unsigned int 
   7          
   8          sbit dula=P2^6;
   9          sbit wela=P2^7;
  10          sbit dq=P2^2;
  11          sbit feng=P2^3;
  12          
  13          uint c_temper;
  14          float f_temper;
  15          
  16          uint L_temper;
  17          uint H_temper;
  18          
  19          //uchar code configer_reg[]={0x1f,0x3f,0x5f,0x7f};
  20          /*
  21          struct ic_code
  22          {
  23          	uchar romcode[8];
  24          }ic_code;
  25          ic_code cc[2];
  26          */
  27          uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,
  28          0xBf,0x86,0xDb,0xCf,0xE6, 0xEd,0xEd,0x87,0xFf,0xEf};
  29          
  30          /*******************delaytime********************/
  31          
  32          void delay_ms(uint z)//毫秒级的延迟
  33          {	
  34   1      	uint x,y;
  35   1      	for(x=z;x>0;x--)
  36   1      		for(y=110;y>0;y--);	
  37   1      }
  38          
  39          void delay_us()//延时微秒
  40          {
  41   1      	_nop_();
  42   1      }
  43          /********************dqreset**************************/
  44          
  45          void dq_reset()//复位
  46          {
  47   1      	uchar t;
  48   1      	
  49   1      	dq=0;
  50   1      	for(t=250;t>0;t--);
  51   1      	dq=1;
  52   1      	for(t=100;t>0;t--);
  53   1      }
  54          
  55          /***********************temper*********************/
C51 COMPILER V6.12  ZUOSI                                                                  04/29/2009 14:54:28 PAGE 2   

  56          
  57          uchar read_temper()//读温度
  58          { 
  59   1      
  60   1      	uchar t; 
  61   1      	uchar i;
  62   1      	uchar temper; 
  63   1      
  64   1      	temper=0x00; 
  65   1      	for(i=0;i<8;i++) 
  66   1      	{ 
  67   2      		temper=_cror_(temper,1); 
  68   2      		dq=0; 
  69   2      		delay_us();
  70   2      		delay_us();
  71   2      		dq=1; 
  72   2      		delay_us();delay_us();
  73   2      		if(dq==1) 
  74   2      		{ 
  75   3      			temper=temper | 0x80; 
  76   3      		} 
  77   2      		else 
  78   2      		{ 
  79   3      			temper=temper | 0x00; 
  80   3      		} 
  81   2      		for(t=20;t>0;t--); 
  82   2      	} 
  83   1      	return(temper); 
  84   1      } 
  85          
  86          void write_cmd(uchar z)//写命令
  87          {
  88   1      	uchar t,i;
  89   1      	uchar temper;
  90   1      	uchar cmd=z;
  91   1      
  92   1      	for(i=0;i<8;i++)
  93   1      	{
  94   2      		temper=cmd&0x01;
  95   2      		if(temper)
  96   2      		{
  97   3      			dq=0;
  98   3      			delay_us();
  99   3      			delay_us();
 100   3      			dq=1;
 101   3      			for(t=30;t>0;t--);
 102   3      		}
 103   2      		else
 104   2      		{
 105   3      			dq=0;
 106   3      			for(t=50;t>0;t--);
 107   3      			dq=1;
 108   3      			delay_us();	delay_us();	
 109   3      		}
 110   2      		cmd=_cror_(cmd,1);
 111   2      	}	
 112   1      	
 113   1      }
 114          
 115          void convert_t()//温度转变
 116          {
 117   1      	dq_reset();
C51 COMPILER V6.12  ZUOSI                                                                  04/29/2009 14:54:28 PAGE 3   

 118   1      
 119   1      	write_cmd(0xcc);
 120   1      	write_cmd(0x44);
 121   1      }
 122          
 123          uint get_temper()//从暂存器中获取温度
 124          {
 125   1      
 126   1      	uchar LSB_temper;
 127   1      	uchar MSB_temper;
 128   1      
 129   1      	dq_reset();
 130   1      
 131   1      	write_cmd(0xcc);
 132   1      	write_cmd(0xbe);
 133   1      
 134   1      	LSB_temper=read_temper();
 135   1      	MSB_temper=read_temper();
 136   1      	
 137   1      	c_temper=MSB_temper;
 138   1      	c_temper=c_temper<<8;
 139   1      	c_temper=c_temper|LSB_temper;
 140   1      	f_temper=c_temper*0.0625;
 141   1      	c_temper=f_temper*10+0.5;
 142   1      	
 143   1      	return c_temper;
 144   1      }
 145          /**********************dealtemperature*****************************/
 146          void init()//初始化
 147          {
 148   1      	L_temper=100;
 149   1      	H_temper=320;
 150   1      	
 151   1      	c_temper=200;
 152   1      	dula=0;
 153   1      	wela=0;
 154   1      }
 155          
 156          void display_temper(uint wengdu)//显示当前温度值
 157          {
 158   1      	uchar xx,yy,zz;
 159   1      	uint temper;
 160   1      	
 161   1      	temper=wengdu;
 162   1      	xx=temper/100;
 163   1      	yy=temper%100/10;
 164   1      	zz=temper%10;
 165   1      	
 166   1      	wela=1;
 167   1      	P0=0xfe;
 168   1      	wela=0;
 169   1      
 170   1      	P0=0x00;
 171   1      	dula=1;
 172   1      	P0=table[xx];
 173   1      	dula=0;
 174   1      	delay_ms(2);
 175   1      	
 176   1      	P0=0xff;
 177   1      	wela=1;
 178   1      	P0=0xfd;
 179   1      	wela=0;
C51 COMPILER V6.12  ZUOSI                                                                  04/29/2009 14:54:28 PAGE 4   

 180   1      
 181   1      	P0=0x00;
 182   1      	dula=1;
 183   1      	P0=(table[yy]+0x80);
 184   1      	dula=0;
 185   1      	delay_ms(2);
 186   1      	
 187   1      	P0=0xff;
 188   1      	wela=1;
 189   1      	P0=0xfb;
 190   1      	wela=0;
 191   1      
 192   1      	P0=0x00;
 193   1      	dula=1;
 194   1      	P0=table[zz];
 195   1      	dula=0;
 196   1      	delay_ms(1);
 197   1      }
 198          
 199          void warn_temper()//温度告警
 200          {
 201   1      	uchar t;
 202   1      	uchar flag=1;
 203   1      	
 204   1      	while(flag)
 205   1      	{
 206   2      		for(t=0;t<10;t++)
 207   2      		{	
 208   3      			feng=0;
 209   3      			display_temper(get_temper());
 210   3      		}
 211   2      		convert_t();
 212   2      		c_temper=get_temper();
 213   2      		if((c_temper<=H_temper)&&(c_temper>L_temper))
 214   2      		{
 215   3      			flag=0;
 216   3      			feng=1;		
 217   3      		}
 218   2      	}
 219   1      }
 220          
 221          
 222          
 223          void deal_temper()//温度处理函数
 224          {
 225   1      	uchar t;
 226   1      	
 227   1      	while(1)
 228   1      	{
 229   2      		//convert_t();	  
 230   2      		for(t=0;t<10;t++)
 231   2      		{
 232   3      			display_temper(get_temper());
 233   3      		}
 234   2      		//if((c_temper>H_temper)||(c_temper<L_temper)) warn_temper();
 235   2      	}	
 236   1      }
 237          
 238          void main()
 239          {
 240   1      	init();
 241   1      
C51 COMPILER V6.12  ZUOSI                                                                  04/29/2009 14:54:28 PAGE 5   

 242   1      	while(1)
 243   1      	{	
 244   2      	
 245   2      		deal_temper();
 246   2      	}
 247   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    509    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       5
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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