📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 05/06/2008 01:03:27 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4 #define SEND P1
5
6 sbit E=P3^5;
7 sbit RW=P3^6;
8 sbit RS=P3^7;
9
10 sbit D=P2^7;
11
12 static uchar disp1[]="Test temperature";
13 static uchar disp2[]="Temperature 22.2";
14
15 void delay(uchar j); /* 7,16us 29,60us 119,240us 149,300us*/
16
17 void read_1602_state();
18 void write_1602(bit k,uchar j);
19 void init_1602();
20 void disp_1602();
21
22 void init_18b20();
23 void write_18b20(uchar j);
24 uint read_18b20();
25
26 void dell_data(uint j);
27
28 void main()
29 {
30 1 uchar temp1;
31 1 uint temp;
32 1
33 1 init_1602();
34 1 while(1)
35 1 {
36 2 init_18b20();
37 2 write_18b20(0xcc);
38 2 write_18b20(0x44);
39 2 init_18b20();
40 2 write_18b20(0xcc);
41 2 write_18b20(0xbe);
42 2 temp1=read_18b20();
43 2 temp=read_18b20();
44 2 temp<<=8;
45 2 temp=temp|temp1;
46 2 dell_data(temp);
47 2 disp_1602();
48 2 }
49 1 }
50
51 void read_1602_state()
52 {
53 1 uchar j;
54 1
55 1 RW=1;
C51 COMPILER V7.06 MAIN 05/06/2008 01:03:27 PAGE 2
56 1 aa:
57 1 SEND=0xff;
58 1 RS=0;
59 1 E=0;
60 1 delay(30);
61 1 E=1;
62 1 delay(30);
63 1 j=SEND;
64 1 E=0;
65 1 if((j&0x80)!=0)
66 1 goto aa;
67 1 }
68 void write_1602(bit k,uchar j)
69 {
70 1 read_1602_state();
71 1 E=0;
72 1 RW=0;
73 1 RS=k;
74 1 SEND=j;
75 1 E=0;
76 1 delay(20);
77 1 E=1;
78 1 delay(20);
79 1 E=0;
80 1 }
81 void delay(uchar j)
82 {
83 1 while(--j);
84 1 }
85 void init_1602()
86 {
87 1 write_1602(0,0x01); /* clear disp*/
88 1 delay(20);
89 1 write_1602(0,0x38); /* 16*2 */
90 1 delay(20);
91 1 write_1602(0,0x06); /* clear disp*/
92 1 delay(20);
93 1 write_1602(0,0x0e); /* open disp*/
94 1 delay(20);
95 1 write_1602(0,0x0f);
96 1 delay(20);
97 1 }
98 void disp_1602()
99 {
100 1 uchar i,j;
101 1
102 1 write_1602(0,0x80);
103 1 for(i=0;i<16;++i)
104 1 {
105 2 j=disp1[i];
106 2 write_1602(1,j);
107 2 delay(20);
108 2 }
109 1
110 1 write_1602(0,0xc0);
111 1 for(i=0;i<16;++i)
112 1 {
113 2 j=disp2[i];
114 2 write_1602(1,j);
115 2 delay(10);
116 2 }
117 1 }
C51 COMPILER V7.06 MAIN 05/06/2008 01:03:27 PAGE 3
118
119 void init_18b20()
120 {
121 1 INIT:
122 1 D=1;
123 1 delay(5);
124 1 D=0;
125 1 delay(149); /* 300us */
126 1 delay(149); /* 300us */
127 1 D=1;
128 1 delay(29);/* 60us */
129 1 delay(29);
130 1 if(D==1)
131 1 goto INIT;
132 1 delay(119); /* 240us */
133 1 if(D==0)
134 1 {delay(119);
135 2 goto INIT;}
136 1 delay(119);
137 1 delay(119);
138 1 }
139 void write_18b20(uchar j)
140 {
141 1 uchar k;
142 1
143 1 for(k=0;k<8;k++)
144 1 {
145 2 D=1;
146 2 delay(5);
147 2 D=0;
148 2 D=0;
149 2 D=j&0x01;
150 2 delay(29); /*60us*/
151 2 j=j>>1;
152 2 }
153 1 delay(4);
154 1 }
155 uint read_18b20()
156 {
157 1 uchar j,k=0;
158 1 for(j=0;j<8;j++)
159 1 {
160 2 D=0;
161 2 k=k>>1;
162 2 D=1; /* male D is input*/
163 2 delay(6);/* 15us*/
164 2 if(D)
165 2 k=k|0x80;
166 2 delay(22); /*45us*/
167 2 }
168 1 return k;
169 1 }
170 void dell_data(uint j)
171 { float k;
172 1 uint y;
173 1 k=0.625*j;
174 1 y=(int)k;
175 1 disp2[12]=(y/100)+0x30; y=y%100; /*because disp must ASCII ,so then data +0x30 */
176 1 disp2[13]=(y/10)+0x30;
177 1 disp2[15]=(y%10)+0x30;
178 1 }
179
C51 COMPILER V7.06 MAIN 05/06/2008 01:03:27 PAGE 4
180
181
182
183
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 482 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 34 6
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -