📄 main.lst
字号:
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\syssoft\keil805\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2
3 #include "STC12.H"
4 #include "pin.h"
5 #include "MATH.H"
6 #include "function.h"
7 #include "evariable.h"
8 main()
9 {
10 1 init();
11 1 while(1)
12 1 {
13 2 cnt_main++;
14 2 // WDT_CONTR=0x37;//喂狗 every 10s to start and set watch dog
15 2 scan_key();
16 2 if(k_pw)
17 2 {
18 3 disp_sens();
19 3 //dispose for hpr
20 3 disp_Hpr();
21 3 //dispose for Lpr
22 3 disp_Lpr();
23 3 //dispose fresh-air function
24 3 disp_fa();
25 3 disp_ref();
26 3 display();
27 3 //use T check data stored in the ee if changing;
28 3 //if happend,refresh the data of ee
29 3 ee_fresh();
30 3 //suggest not fresh operating every time during da_WA changing
31 3 disp_spd();
32 3 speaking();
33 3 }
34 2
35 2 }
36 1 while(1);
37 1 }
38
39
40 void delay10ms(unsigned int da)
41 {
42 1 unsigned int i,j;
43 1 for(i=0;i<da;i++)
44 1 {
45 2 for(j=0;j<16000;j++);
46 2 }
47 1 }
48
49 void scan_key(void)
50 {
51 1 byte da,da2;
52 1 // if(alarm==0)
53 1 // {
54 1 da=(unsigned char)sample_adc(1);
55 1 if((da>51)&&(da<205))
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 2
56 1 {
57 2 delay2(1000);
58 2 da2=(unsigned char)sample_adc(1);
59 2 if(abs(da-da2)<0x05)
60 2 {
61 3 if((alarm==0)&&(51<da)&&(da<=102)&&(k_pw)) //k101接通
62 3 {
63 4 k_ref=!k_ref;
64 4 if(k_ref==1)//cool key at open state
65 4 { //display ON in LCD
66 5 dp_chara(addr_ON,0,2,30,18);
67 5 state_ref=0;
68 5 //when at cool state,wind adjusting is
69 5 //less than 1/3 to
70 5 if(da_WA<=30)
71 5 {
72 6 da_WA=30;
73 6 WA_changed=1;
74 6 state_WA=0;
75 6 }
76 5 }
77 4 else //cool key at open state
78 4 { //display OFF in LCD
79 5 dp_chara(addr_OFF,0,2,30,18);
80 5 state_ref=0xff;
81 5 ref=0;
82 5 }
83 4 }
84 3 //FRESH AIR: 0 indicate OFF state
85 3 // 1 indicate ON state
86 3 // 2 indicate AUTO state
87 3 if((alarm==0)&&(102<da)&&(da<=154)&&(k_pw))
88 3 {
89 4 switch((++k_fa)%3)
90 4 {
91 5 case 0: //OFF
92 5 dp_chara(addr_OFF,0,3,30,18);
93 5 freshair_aut=0;
94 5 freshair=0;
95 5 break;
96 5 case 1: //ON
97 5 dp_chara(addr_ON,0,3,30,18);
98 5 freshair_aut=0;
99 5 freshair=1;
100 5 break;
101 5 case 2: //AUT
102 5 //star up Time ,changing states between
103 5 //ON and OFF per 2s
104 5 dp_chara(addr_AUT,0,3,30,18);
105 5 freshair_aut=1;
106 5 break;
107 5 default:
108 5 break;
109 5 }
110 4 }
111 3 //controll frigerate function
112 3 if((154<da)&&(da<=205))
113 3 {
114 4 k_pw=!k_pw;
115 4 if(k_pw==1)//power key at open state
116 4 { //display ON in LCD
117 5 switch_5v=1;
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 3
118 5 delay2(500);
119 5 power_on();
120 5 // dp_chara(addr_ON,0,1,30,18);
121 5 }
122 4 else //power key at open state
123 4 { //display OFF in LCD
124 5 switch_5v=0;
125 5 }
126 4
127 4 }
128 3 delay2(1000);
129 3 while(1)
130 3 {
131 4 da2=(unsigned char)sample_adc(1);
132 4 if(da2>205)
133 4 {
134 5 break;
135 5 }
136 4 }
137 3 }
138 2
139 2 }
140 1
141 1 // }
142 1
143 1 }
144
145
146
147
148 unsigned int adc4(void)
149 {
150 1 unsigned int Vd,Vd1;
151 1 byte da;
152 1 //p1.4 is input of adc
153 1 //chs2~0:100B;adc_power=1;
154 1 //speed1~0:11B
155 1 P1M0|=0x10;
156 1 P1M1&=0xef;
157 1 ADC_CONTR=0xe4;
158 1 ADC_CONTR&=0xe7;//clear start flag and end flag
159 1 ADC_DATA=0; //clear result data register
160 1 ADC_LOW2=0;
161 1 ADC_CONTR|=0x08;
162 1 while(!(ADC_CONTR&0x10));
163 1 // P1M0&=0xef;
164 1 // P1M1&=0xef;
165 1 ADC_CONTR&=0x80;
166 1 da= ADC_DATA;
167 1 Vd=(unsigned int)da;
168 1 Vd<<=2;
169 1 da=ADC_LOW2;
170 1 da&=0x03;
171 1 Vd1=(unsigned int)da;
172 1 Vd=Vd+Vd1;
173 1 return(Vd);
174 1 }
175
176 void disp_spd(void)
177 {
178 1 float da=0;
179 1 byte da1=0;
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 4
180 1 if((WA_changed)&&(alarm==0))
181 1 {
182 2 if(state_WA==0)
183 2 {
184 3 state_WA=1;
185 3 cnt_WA=0;
186 3 F2sWA=0;
187 3 }
188 2 else if((state_WA==1)&&(F2sWA==1))
189 2 {
190 3 F2sWA=0;
191 3 state_WA=0;
192 3 WA_changed=0;
193 3 DToA();
194 3 }
195 2 }
196 1 }
197
198 //input: wind grade;
199 //output:d->a output
200 void DToA(void)
201 {
202 1 float da;
203 1 unsigned int da1;
204 1 //d/a output voltage :0~4.5v
205 1 //then amplify 4 time
206 1 da=(float)da_WA;
207 1 da=99-da;
208 1 da=da*1024*18/99/4/5/2; //fomula is da/99*18/4/5*1024
209 1 da1=(unsigned int)da;
210 1 TLC5615(da1);
211 1 }
212
213 void TLC5615(unsigned int da)
214 {
215 1 byte i;
216 1 CLK=0;
217 1 CS=1;
218 1 DA=0;
219 1 da<<=2;
220 1 CS=0;
221 1 for(i=0;i<16;i++)
222 1 {
223 2 CLK=0;
224 2 DA = (0x8000 & da )? 1 : 0;
225 2 da<<=1;
226 2 CLK=1;
227 2 }
228 1 CLK=0;
229 1 CS=1;
230 1 }
231
232 void power_on(void)
233 {
234 1 // switch_5v=1;
235 1 // delay2(1000);
236 1 LCD_INIT();
237 1 // k_pw=1;
238 1 // dp_chara(addr_ON,0,1,30,18);
239 1 sendair_out=1;
240 1 state=1;
241 1 //SPD out
C51 COMPILER V8.05a MAIN 06/05/2007 06:25:16 PAGE 5
242 1 da_WA=99;
243 1 WA_changed=1;
244 1 state_WA=0;
245 1 EX0=1;
246 1 EX1=1;
247 1 pwon=1;
248 1 }
249
250 void disp_ref(void)
251 {
252 1 char da;
253 1 if(alarm==0)
254 1 {
255 2 switch(state_ref)
256 2 {
257 3 case 0: //suggestion:state_ref and ref should concurrent
258 3 //state_ref:-- indicate neceserry to analyse temperatrue changing
259 3 if(da_TA<=da_TC)//空调制冷输出
260 3 {
261 4
262 4 state_ref=1;
263 4 cnt_Ref=0;
264 4 F5sRef=0;
265 4 }
266 3 break;
267 3
268 3 case 1:
269 3 if(F5sRef==1)
270 3 {
271 4 state_ref=0;
272 4 F5sRef=0;
273 4 if(da_TA<=da_TC)
274 4 {
275 5 ref=1;//prepare open frigerate
276 5 }
277 4 }
278 3 break;
279 3
280 3 default:
281 3 break;
282 3 }
283 2 da=da_TC+2;
284 2 if(da_TA>=da) //Stop frigerate
285 2 {
286 3 ref=0;
287 3 }
288 2 }
289 1 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -