📄 tianxiang.lst
字号:
C51 COMPILER V6.12 TIANXIANG 04/26/2009 12:54:57 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE TIANXIANG
OBJECT MODULE PLACED IN .\tianxiang.OBJ
COMPILER INVOKED BY: E:\Keil\C51\BIN\C51.EXE .\tianxiang.c DEBUG OBJECTEXTEND
stmt level source
1 #include<reg52.h>
2 #include<stdio.h>
3
4 #define uchar unsigned char
5 #define uint unsigned int
6
7 sbit ds=P2^2;
8 sbit dula=P2^6;
9 sbit wela=P2^7;
10 sbit beep=P2^3;
11
12 uint temp;
13 float f_temp;
14 uint warn_l1=270;
15 uint warn_l2=250;
16 uint warn_h1=300;
17 uint warn_h2=320;
18
19 sbit led0=P1^0;
20 sbit led1=P1^1;
21 sbit led2=P1^2;
22 sbit led3=P1^3;
23
24 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,
25 0xBf,0x86,0xDb,0xCf,0xE6, 0xEd,0xEd,0x87,0xFf,0xEf};
26 //共阴极数码管显示数字0.,1.,2.,3.,4.,5.,6.,7.,8.,9.
27
28 void delay(uint z)
29 {
30 1 uint x,y;
31 1 for(x=z;x>0;x--)
32 1 for(y=110;y>0;y--);
33 1 }
34
35 void dsreset()
36 {
37 1 uint i;
38 1 ds=0;
39 1 i=103;
40 1 while(i>0) i--;
41 1 ds=1;
42 1 i=4;
43 1 while(i>0) i--;
44 1 }
45
46 bit tempreadbit()
47 {
48 1 uint i;
49 1 bit dat;
50 1 ds=0;i++;
51 1 ds=1;i++;i++;
52 1 dat=ds;
53 1 i=8;
54 1 while(i>0) i--;
55 1 return (dat);
C51 COMPILER V6.12 TIANXIANG 04/26/2009 12:54:57 PAGE 2
56 1 }
57
58 uchar tempread()
59 {
60 1 uchar i,j,dat;
61 1 dat=0;
62 1 for(i=1;i<=8;i++)
63 1 {
64 2 j=tempreadbit();
65 2 dat=(j<<7)|(dat>>1);
66 2 }
67 1 return (dat);
68 1 }
69
70 void tempwritebyte(uchar dat)
71 {
72 1 uint i;
73 1 uchar j;
74 1 bit testb;
75 1 for(j=1;j<=8;j++)
76 1 {
77 2 testb=dat&0x01;
78 2 dat=dat>>1;
79 2 if(testb)
80 2 {
81 3 ds=0;
82 3 i++;i++;
83 3 ds=1;
84 3 i=8;while(i>0) i--;
85 3 }
86 2 else
87 2 {
88 3 ds=0;
89 3 i=8;
90 3 while(i>0) i--;
91 3 ds=1;
92 3 i++;i++;
93 3 }
94 2 }
95 1 }
96
97 void tempchange()
98 {
99 1 dsreset();
100 1 delay(1);
101 1 tempwritebyte(0xcc);
102 1 tempwritebyte(0x44);
103 1 }
104
105 uint get_temp()
106 {
107 1 uchar a,b;
108 1 dsreset();
109 1 delay(1);
110 1 tempwritebyte(0xcc);
111 1 tempwritebyte(0xbe);
112 1 a=tempread();
113 1 b=tempread();
114 1 temp=b;
115 1 temp<<=8;
116 1 temp=temp|a;
117 1 f_temp=temp*0.0625;
C51 COMPILER V6.12 TIANXIANG 04/26/2009 12:54:57 PAGE 3
118 1 temp=f_temp*10+0.5;
119 1 f_temp=f_temp+0.05;
120 1 return temp;
121 1 }
122
123 void display(uchar num,uchar dat)
124 {
125 1 uchar i;
126 1 dula=0;
127 1 P0=table[dat];
128 1 dula=1;
129 1 dula=0;
130 1 wela=0;
131 1 i=0xFF;
132 1 i=i&(~((0x01)<<(num)));
133 1 P0=i;
134 1 wela=1;
135 1 wela=0;
136 1 delay(1);
137 1 }
138
139 void dis_temp(uint t)
140 {
141 1 uchar i;
142 1 i=t/100;
143 1 display(0,i);
144 1 i=t%100/10;
145 1 display(1,i);
146 1 i=t%100%10;
147 1 display(2,i);
148 1 }
149
150 void warn(uint s,uchar led)
151 {
152 1 uchar i;
153 1 i=s;
154 1 beep=0;
155 1 P1=~(led);
156 1 while(i--)
157 1 {
158 2 dis_temp(get_temp());
159 2 }
160 1 beep=1;
161 1 P1=0xFF;
162 1 i=s;
163 1 while(i--)
164 1 {
165 2 dis_temp(get_temp());
166 2 }
167 1 }
168
169 void deal(uint t)
170 {
171 1 uchar i;
172 1 if((t>warn_l2)&&(t<=warn_l1))
173 1 {
174 2 warn(40,0x01);
175 2 }
176 1 else if(t<=warn_l2)
177 1 {
178 2 warn(10,0x03);
179 2 }
C51 COMPILER V6.12 TIANXIANG 04/26/2009 12:54:57 PAGE 4
180 1 else if((t<warn_h2)&&(t>=warn_h1))
181 1 {
182 2 warn(10,0x03);
183 2 }
184 1 else if(t>=warn_h2)
185 1 {
186 2 warn(10,0x0c);
187 2 }
188 1 else
189 1 {
190 2 i=40;
191 2 while(i--)
192 2 {
193 3 dis_temp(get_temp());
194 3 }
195 2 }
196 1 }
197
198 void init_com()
199 {
200 1 TMOD=0x20;
201 1 PCON=0x00;
202 1 SCON=0x50;
203 1 TH1=0xFd;
204 1 TL1=0xFd;
205 1 TR1=1;
206 1 }
207
208 void comm(char *parr)
209 {
210 1 do
211 1 {
212 2 SBUF=*parr++;
213 2 while(!TI);
214 2 TI=0;
215 2 }while(*parr);
216 1 }
217
218 void main()
219 {
220 1 uchar i;
221 1 uchar buff[4];
222 1 dula=0;
223 1 wela=0;
224 1 init_com();
225 1
226 1 while(1)
227 1 {
228 2 tempchange();
229 2 for(i=10;i>0;i--)
230 2 {
231 3 dis_temp(get_temp());
232 3 }
233 2 deal(temp);
234 2 sprintf(buff,"%f",f_temp);
235 2 for(i=10;i>0;i--)
236 2 {
237 3 dis_temp(get_temp());
238 3 }
239 2 comm(buff);
240 2 for(i=10;i>0;i--)
241 2 {
C51 COMPILER V6.12 TIANXIANG 04/26/2009 12:54:57 PAGE 5
242 3 dis_temp(get_temp());
243 3 }
244 2 }
245 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 815 ----
CONSTANT SIZE = 23 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 14 16
IDATA SIZE = ---- ----
BIT SIZE = ---- 2
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -