📄 zuosi.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 + -