📄 18b20.lst
字号:
C51 COMPILER V7.06 18B20 11/01/2006 21:29:09 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE 18B20
OBJECT MODULE PLACED IN 18b20.OBJ
COMPILER INVOKED BY: D:\C51\BIN\C51.EXE 18b20.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include<reg51.h>
2
3 sbit DQ=P2^2; //定义通信端口
4 code unsigned char seg7code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
5 unsigned int sdata=0;//测温度的整数部分
6 unsigned char xiaoshu1=0;//小数第一位
7 unsigned char xiaoshu2=0;//小数第二位
8 unsigned char xiaoshu=0;// 二位小数
9
10 void delay1(unsigned int tc) //显示延时
11 { while(tc!=0)
12 1 {unsigned int i;
13 2 for(i=0;i<100;i++);
14 2 tc--;
15 2 }
16 1 }
17 void delay(unsigned int i) //时间片延时
18 { while(i--);
19 1 }
20 init_DS18b20(void) //初始化
21 { unsigned char x=0;
22 1 DQ=1; //DQ复位
23 1 delay(8);
24 1 DQ=0; //单片机将DQ拉低
25 1 delay(80);//精确延时大于480um
26 1 DQ=1; //拉高总线
27 1 delay(14);
28 1 x=DQ; //延时后 如果x=0则初始化成功 x=1则初始化失败
29 1 delay(20);
30 1 }
31 readonechar(void) // 读一个字节
32 { unsigned char i=0;
33 1 unsigned char dat=0;
34 1 for(i=8;i>0;i--)
35 1 { DQ=0; //给脉冲信号
36 2 dat>>=1;
37 2 DQ=1;
38 2 if(DQ)
39 2 dat|=0x80;
40 2 delay(4);
41 2 }
42 1 return(dat);
43 1 }
44 writeonechar(unsigned char dat) //写一个字节
45 { unsigned char i=0;
46 1 for(i=8;i>0;i--)
47 1 { DQ=0;
48 2 DQ=dat&0x01;
49 2 delay(5);
50 2 DQ=1;
51 2 dat>>=1;
52 2 }
53 1
54 1 }
55 readtemperature(void)
C51 COMPILER V7.06 18B20 11/01/2006 21:29:09 PAGE 2
56 { unsigned char a=0;
57 1 unsigned char b=0;
58 1 init_DS18b20();
59 1 writeonechar(0xCC); //跳过读序列号
60 1 writeonechar(0x44); //启动温度转换
61 1 init_DS18b20();
62 1 writeonechar(0xCC); //
63 1 writeonechar(0xBE); // 读温度积存器
64 1 a=readonechar(); //低位
65 1 b=readonechar(); //高位
66 1 sdata=a/16+b*16; //整数
67 1 xiaoshu1=(a&0x0f)*10/16; //小数第一位
68 1 xiaoshu2=(a&0x0f)*100/16%10; //小数第二位
69 1 xiaoshu=xiaoshu1*10+xiaoshu2; //小数
70 1
71 1 }
72 void led()
73 { P2=P2&0xef;
74 1 P0=seg7code[sdata/10];
75 1 delay1(8);
76 1 P2=P2|0xf0;
77 1 P2=P2&0xdf;
78 1 P0=seg7code[sdata%10]|0x80;
79 1
80 1 delay1(8);
81 1 P2=P2|0xf0;
82 1 P2=P2&0xbf;
83 1 P0=seg7code[xiaoshu1];
84 1
85 1 delay1(8);
86 1 P2=P2|0xf0;
87 1 P2=P2&0x7f;
88 1 P0=seg7code[xiaoshu2];
89 1 delay1(8);
90 1 P2=P2|0xf0;
91 1
92 1
93 1 }
94 void main()
95 { while(1)
96 1 { led();
97 2 readtemperature();
98 2 }
99 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 341 ----
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 5 2
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 + -