📄 humidity.lst
字号:
C51 COMPILER V3.20, SN-50203013 HUMIDITY 08/06/05 10:52:39 PAGE 1
DOS C51 COMPILER V3.20, COMPILATION OF MODULE HUMIDITY
OBJECT MODULE PLACED IN E:\C51PRJ\HUMIDITY\HUMIDITY.OBJ
COMPILER INVOKED BY: C:\COMP51\C51.EXE E:\C51PRJ\HUMIDITY\HUMIDITY.C DB SB OE
stmt level source
1 /****************************************************************************/
2 /* */
3 /* Copyright (c) 2005, 老树工作室 */
4 /* All rights reserved. */
5 /* */
6 /* http://www.saintone.net Email:hxm0902@163.com */
7 /* QQ:112431149 Tel:010-62966630 */
8 /* */
9 /****************************************************************************/
10 /****************************************************************************/
11 /* 文件名:humidity.c */
12 /* 版 本:Version 1.0 */
13 /* 描 述:利用hs1101与tlc555检测湿度的代码 */
14 /* 根据数据手册,简化湿度计算公式如下: */
15 /* humidity = (hum_const - 0.702*(fhz_tlc555-40)) / 10 */
16 /* fhz_tlc555>=7000: hum_const=5143.7 */
17 /* 6700<=fhz_tlc555<7000: hum_const=5183.7 */
18 /* fhz_tlc555<6700: hum_const=5203.7 */
19 /* */
20 /* 作 者:spot */
21 /* 函 数: */
22 /* time0_over_int */
23 /* ext1_int_proc */
24 /* system_init */
25 /* */
26 /* 历史记录: */
27 /* spot 2005-06-25 Creat Inital version. (Version 1.0) */
28 /****************************************************************************/
29
30 #include <reg52.h>
31 #include <absacc.h>
32 #include <intrins.h>
33 #include "../includes/types.h"
34
35 /* 函数声明 */
36 void time0_over_int(void); /* 定时器0中断服务程序 ,使用第1组寄存器 */
37 void ext1_int_proc(void); /* 外部中断1中断服务程序,使用第2组寄存器 */
38 void system_init(void); /* 系统上电初始化 */
39 void display_humidity(u_int current_humidity);/* 在数码管上显示当前湿度 */
40 extern void load_number(u_char number, bit dp);
41 extern void send_latch_clock(void);
42 extern void clear_led(void);
43 /* 声明结束 */
44
45 u_int fhz_tlc555; /* tlc555输出频率 */
46 u_char timer_count; /* 定时计数 */
47 bit timer_int; /* 定时标志 */
48 float hum_const; /* 计算湿度的常数 */
49
50 /* 定时器0中断服务程序 ,使用第1组寄存器 */
51 void time0_over_int(void) interrupt 1 using 1
52 {
53 1 TF0=0;
54 1 timer_int=1;
55 1 TH0 = -(46080 / 256);
C51 COMPILER V3.20, SN-50203013 HUMIDITY 08/06/05 10:52:39 PAGE 2
56 1 TL0 = -(46080 % 256);
57 1 }
58
59 /* 外部中断1中断服务程序,使用第2组寄存器 */
60 void ext1_int_proc(void) interrupt 2 using 2
61 {
62 1 fhz_tlc555++;
63 1 }
64
65 /* 系统上电初始化 */
66 void system_init(void)
67 {
68 1 EA = 0;
69 1 timer_int = 0;
70 1 timer_count = 0;
71 1
72 1 TMOD = 0x01; /*定时器0工作于方式1*/
73 1 TCON = 0x04; /*外部中断下降沿触发*/
74 1 TH0 = -(46080 / 256); /*定时50毫秒*/
75 1 TL0 = -(46080 % 256);
76 1 PT0 = 1; /*定时器0高优先级*/
77 1 TR0 = 1; /*定时器0启动计数*/
78 1 IE = 0x86; /*定时器0,外部中断1,CPU开中断*/
79 1 }
80
81 /* 计算当前湿度 */
82 u_int get_humidity(u_int fhz) /* 输入fhz为tlc555的频率计数 */
83 {
84 1 u_int humidity = 0;
85 1
86 1 if ( (fhz > 7400) || (fhz < 6000) )
87 1 {
88 2 return 0;
89 2 }
90 1 else if (fhz >= 7000)
91 1 {
92 2 hum_const = 5143.7;
93 2 }
94 1 else if ( (fhz >= 6700) && (fhz < 7000) )
95 1 {
96 2 hum_const = 5183.7;
97 2 }
98 1 else if(fhz < 6700)
99 1 {
100 2 hum_const = 5203.7;
101 2 }
102 1 humidity = (u_int)( (hum_const - 0.702*(fhz - 40)) / 10);
103 1 return humidity;
104 1 }
105
106 /* 在数码管上显示当前湿度 */
107 void display_humidity(u_int current_humidity)
108 {
109 1 load_number( (current_humidity %10), 0);
110 1 load_number( (current_humidity /10), 0);
111 1 send_latch_clock();
112 1 }
113
114 main()
115 {
116 1 u_int real_hum;
117 1
C51 COMPILER V3.20, SN-50203013 HUMIDITY 08/06/05 10:52:39 PAGE 3
118 1 system_init();
119 1 while(1)
120 1 {
121 2 if (timer_int == 1) /* 50毫秒定时到 */
122 2 {
123 3 timer_int = 0;
124 3 timer_count++;
125 3
126 3 if (timer_count == 100) /* 5秒定时到 */
127 3 {
128 4 timer_count = 0;
129 4 fhz_tlc555 /= 5;
130 4 real_hum = get_humidity(fhz_tlc555);
131 4 clear_led();
132 4 display_humidity(real_hum);
133 4 fhz_tlc555 = 0;
134 4 }
135 3 }
136 2 }
137 1 }
C51 COMPILER V3.20, SN-50203013 HUMIDITY 08/06/05 10:52:39 PAGE 4
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
T0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
AC . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D6H 1
T1 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0090H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
u_long . . . . . . . . . . . . . . . . TYPEDEF ----- U_LONG ----- 4
u_short. . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
send_latch_clock . . . . . . . . . . . EXTERN CODE PROC ----- -----
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
fhz_tlc555 . . . . . . . . . . . . . . PUBLIC DATA U_INT 0000H 2
T2IE . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CDH 1
RD . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B7H 1
ES . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ACH 1
RI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0098H 1
INT0 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
CY . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D7H 1
BGEN . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CBH 1
TI . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0099H 1
INT1 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
T2IP . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CEH 1
clear_led. . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
u_int. . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
PS . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BCH 1
T2EX . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0091H 1
OV . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D2H 1
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
real_hum . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
C_T2 . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C9H 1
WR . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B6H 1
_display_humidity. . . . . . . . . . . PUBLIC CODE PROC ----- -----
current_humidity . . . . . . . . . . AUTO DATA U_INT 0000H 2
time0_over_int . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
timer_count. . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
IE0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0089H 1
IE1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008BH 1
system_init. . . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
CP_RL2 . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00C8H 1
ext1_int_proc. . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
ET1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ABH 1
TF0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008DH 1
ET2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00ADH 1
TF1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008FH 1
TF2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CFH 1
RB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009AH 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
EX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A8H 1
IT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 0088H 1
TB8. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009BH 1
EX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AAH 1
IT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008AH 1
P. . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D0H 1
SM0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009FH 1
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
timer_int. . . . . . . . . . . . . . . PUBLIC DATA BIT 0000H 1
C51 COMPILER V3.20, SN-50203013 HUMIDITY 08/06/05 10:52:39 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
SM1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009EH 1
SM2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009DH 1
PT0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B9H 1
PT1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BBH 1
RS0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D3H 1
hum_const. . . . . . . . . . . . . . . PUBLIC DATA FLOAT 0003H 4
PT2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BDH 1
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
RS1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D4H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
TR2. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CAH 1
PX0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B8H 1
PX1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00BAH 1
REN. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 009CH 1
RXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B0H 1
_load_number . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
TXD. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B1H 1
T2RSE. . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00CCH 1
_get_humidity. . . . . . . . . . . . . PUBLIC CODE PROC ----- -----
fhz. . . . . . . . . . . . . . . . . * REG * DATA U_INT 0004H 2
humidity . . . . . . . . . . . . . . AUTO DATA U_INT 0000H 2
u_char . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1
F0 . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00D5H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 325 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 7 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 + -