📄 main.lst
字号:
185 {
186 1 ES = 0; //关串行通讯中断
187 1 TMOD=0X11; //则T1,与T0 都设为16位定时器
188 1 IE=0x8a; //开t1,t0中断
189 1 TCON=0x55; //开定时器
190 1 P3M1=0x30; //设P3.4,P3.5推挽输出
191 1
192 1 #pragma asm
193 1 CLR P3.4
194 1 CLR P3.5
195 1 #pragma endasm
196 1
197 1 TH0 = 0xFB;
198 1 TL0 = 0xC8;
199 1 TH1 = 0xFB;
200 1 TL1 = 0xC8;
201 1 temp_h_h = 0xFB;
202 1 temp_h_l = 0xC8;
203 1 temp_l_h = 0xCF;
204 1 temp_l_l = 0x7C;
205 1 rh_h_h = 0xFB;
206 1 rh_h_l = 0xC8;
207 1 rh_l_h = 0xCF;
208 1 rh_l_l = 0x7C;
209 1
210 1 /* TMOD=0x21;// SET T1 8 BYTE TIMR MODE 如果 TMOD=0X11 //则T1,与T0 都设为16位定时器
211 1 TCON=0x5 ;// SET T0 16 BYTE TIMR MODE
212 1 SCON=0x50;// SET SCON 1 ren on IE=0x8a //开t1,t0中断
213 1 PCON=0x80;// SMOD=0 XTAL= 18.432 TCON=0x55 //开定时器
214 1 TH1=0xF6;// SET T1 9600 bit band
215 1 TL1=0xF6;// new value fah old fdh
216 1 TR1=1;// on T1
217 1 EA =1 ; // on intrrupt
218 1 ES =1 ;
219 1 ET0 =1 ;
220 1 TR0 =1 ; */
221 1 }
222 /**********************************************************************************
223 定时器 0
224 温度pwm脉宽输出中断服务程序
225 温度的脉宽值高电平在;temp_h_h+temp_h_l中
226 温度的脉宽值低电平在;temp_l_h+temp_l_l中
227 转换频率100赫兹
228 ***********************************************************************************/
229 void pwm_out(void) interrupt 1 using 0
230 {
231 1 #pragma asm
232 1 PWM:
233 1 Jb p3.4,pwm1_L
234 1 CPL P3.4
235 1 CLR TR0
236 1 MOV TH0,temp_h_h
237 1 MOV TL0,temp_h_l
238 1 SETB TR0
239 1 RETI
240 1 pwm1_L: CPL p3.4
C51 COMPILER V7.50 MAIN 02/20/2009 14:03:12 PAGE 5
241 1 CLR TR0
242 1 MOV TH0,temp_l_h
243 1 MOV TL0,temp_l_l
244 1 SETB TR0
245 1 RETI
246 1 #pragma endasm
247 1 }
248 /**********************************************************************************
249 定时器1
250 湿度pwm脉宽输出中断服务程序
251 湿度的脉宽值高电平在;rh_h_h+rh_h_l中
252 湿度的脉宽值低电平在;rh_l_h+rh_l_l中
253 转换频率100赫兹
254 ***********************************************************************************/
255 void pwm_rh_out(void) interrupt 3 using 0
256 {
257 1 #pragma asm
258 1 PWM_rh:
259 1 Jb p3.5,pwm2_L
260 1 CPL P3.5
261 1 CLR TR1
262 1 MOV TH1,rh_h_h
263 1 MOV TL1,rh_h_l
264 1 SETB TR1
265 1 RETI
266 1 pwm2_L: CPL p3.5
267 1 CLR TR1
268 1 MOV TH1,rh_l_h
269 1 MOV TL1,rh_l_l
270 1 SETB TR1
271 1 RETI
272 1 #pragma endasm
273 1 }
274
275 void PCA_Initiate(void)
276 /******************************************************************************
277 PCA定时器模块初始化程序
278 *******************************************************************************/
279 {
280 1 //TMOD=0X11 //则T1,与T0 都设为16位定时器
281 1 //IE=0x8a //开t1,t0中断
282 1 //TCON=0x55 //开定时器
283 1 #pragma asm
284 1 MOV CMOD,#10000000B //;PCA空闲模式下记数器停止工作
285 1 //;PCA fosc/12
286 1 //;禁止PCA记数溢出中断
287 1 MOV CCON,#0 //;CF=0 清记数中断标志
288 1 //CR=0 停记数器
289 1 //;清 PCA 各模块中断标志 CCF1=0 CCF0=0
290 1 MOV CL,#0
291 1 MOV CH,#0 //;清PCA记数器
292 1 MOV CCAP0L,#0
293 1 MOV CCAP0H,#3CH
294 1 MOV CCAPM0,#49H //;设置pca 模块0为16位定时器 ECCF0=1,允许pca模块0中断
295 1 //;当[CCAP0H,CCAP0L]=[CH,CL]中断发生
296 1 SETB EPCA_LVD //;开中断
297 1 SETB CR //;开PCA 记数(CH,CL)
298 1
299 1 #pragma endasm
300 1 }
301
302 /*****************************************************************************
C51 COMPILER V7.50 MAIN 02/20/2009 14:03:12 PAGE 6
303 PCA定时器模块中断服务程序
304 设定10ms中断一次,中断100次1秒钟
305 Counter存中断记数值
306 18.432/12=15360=3C00h
307 Channe_10mS_H=3CH
308 Channe_10mS_L=0
309 ******************************************************************************/
310 void pca_temr(void) interrupt 6 using 0
311 {
312 1 #pragma asm
313 1
314 1 PUSH ACC
315 1 PUSH PSW
316 1 //;18.432/12=15360=3C00h
317 1 // ;Channe_10mS_H=3CH
318 1 MOV A,#24H //MOV A,#3CH //;Channe_10mS_L=0
319 1 ADD A,CCAP0H
320 1 MOV CCAP0H,A
321 1 CLR CCF0
322 1 INC Counter
323 1 MOV A,Counter
324 1 CLR C
325 1 SUBB A,#100
326 1 JC PCA_Interrupt_Exit
327 1 MOV Counter,#0
328 1 SETB time_1s_flag
329 1 SETB read_sht_flag
330 1 CLR P1.2
331 1 PCA_Interrupt_Exit:
332 1 POP PSW
333 1 POP ACC
334 1 RETI
335 1 #pragma endasm
336 1 }
337
338 /*void uart_isr(void) interrupt 4 using 3
339 {
340 uchar tmp;
341 if (RI)
342 {
343 RI = 0;
344 tmp = SBUF;
345 if (tmp == 0) //帧头
346 {
347 start_flag = 1;
348 uart_rcv_flag = 0;
349 }
350 else if (start_flag)
351 {
352 switch (uart_rcv_flag)
353 {
354 case 0:temp_h_h = 65536 - tmp * 3;
355 uart_rcv_flag = 1;
356 break;
357 case 1:temp_l_h = 65536 - tmp;
358 start_flag = 0;
359 break;
360 }
361 }
362 }
363 }*/
C51 COMPILER V7.50 MAIN 02/20/2009 14:03:12 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 517 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 27 ----
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 + -