📄 shiyan1.lst
字号:
C51 COMPILER V6.12 SHIYAN1 03/30/2008 20:45:35 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE SHIYAN1
OBJECT MODULE PLACED IN .\shiyan1.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE .\shiyan1.c DEBUG OBJECTEXTEND
stmt level source
1 #include<AT89x51.H>
2 unsigned char code tab[]={
3 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
4 0x80,0x90};
5 sbit DQ=P0^1;
6 unsigned char tempL=0;
7 unsigned char tempH=0;
8 float temperature;
9 //延时子程序
10 void delay(unsigned int time)
11 {
12 1 unsigned int n;
13 1 n=0;
14 1 while(n<time)
15 1 {
16 2 {n++;}
17 2 return;
18 2 }
19 1 }
20 //数码管扫描延时子程序
21 void delay1(void)
22 {
23 1 unsigned int k;
24 1 for(k=0;k<110;k++);
25 1 }
26 //数码管显示子程序
27 void display(unsigned int k)
28 {
29 1 P0=0xbf;
30 1 P2=tab[k/1000];
31 1 delay1();
32 1 P0=0xdf;
33 1 P2=tab[k%1000/100];
34 1 delay1();
35 1 P0=0xef;
36 1 P2=tab[k%100/10];
37 1 delay1();
38 1 P0=0xf7;
39 1 P2=tab[k%10];
40 1 delay1();
41 1 P2=0xff;
42 1 }
43
44 init_DS18B20(void)
45 {
46 1 unsigned char x=0;
47 1 DQ=1;
48 1 delay(8);
49 1 DQ=0;
50 1 delay(85);
51 1 DQ=1;
52 1 delay(14);
53 1 delay(20);
54 1 }
55 //向DS18B20读一字节数据
C51 COMPILER V6.12 SHIYAN1 03/30/2008 20:45:35 PAGE 2
56 ReadOneChar(void)
57 {
58 1 unsigned char i=0;
59 1 unsigned char dat=0;
60 1 for(i=8;i>0;i++)
61 1 {
62 2 DQ=1;
63 2 delay(1);
64 2 DQ=0;
65 2 dat>>=1;
66 2 DQ=1;
67 2 if(DQ)
68 2 dat|=0x80;
69 2 delay(4);
70 2 }
71 1 return(dat);
72 1 }
73 //向DS18B20写一字节数据
74 WriteOneChar(unsigned char dat)
75 {
76 1 unsigned char i=0;
77 1 for(i=8;i>0;i--)
78 1 {
79 2 DQ=0;
80 2 DQ=dat&0x01;
81 2 delay(5);
82 2 DQ=1;
83 2 dat>>=1;
84 2 }
85 1 delay(4);
86 1 }
87 //向DS18B20读温度值
88 ReadTemperature(void)
89 {
90 1 init_DS18B20();
91 1 WriteOneChar(0xcc);
92 1 WriteOneChar(0x44);
93 1 delay(125);
94 1 init_DS18B20();
95 1 WriteOneChar(0xcc);
96 1 WriteOneChar(0xbe);
97 1 tempL=ReadOneChar();
98 1 tempH=ReadOneChar();
99 1 temperature=((tempH*256)+tempL)*0.0625;
100 1 delay(200);
101 1 return(temperature);
102 1 }
103 //主程序
104 void main()
105 {
106 1 float i;
107 1 while(1)
108 1 {
109 2 i=ReadTemperature();
110 2 display(i);
111 2 }
112 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 373 ----
CONSTANT SIZE = 10 ----
C51 COMPILER V6.12 SHIYAN1 03/30/2008 20:45:35 PAGE 3
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 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 + -