📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 11/19/2007 13:50:12 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <main.h>
2 #include <Adjust.h>
3 #include <ISR.h>
4 #include <Meansure.h>
5 #include <math.h>
6 sbit P00=P0^0;
7 sbit P01=P0^1;
8 sbit P02=P0^2;
9 sbit P03=P0^3;
10 sbit P04=P0^4;
11 sbit P05=P0^5;
12 sbit P06=P0^6;
13 sbit P07=P0^7;
14 sbit P27=P2^7;
15 void Reset();
16 char timer_trik,up_warn_T=100,low_warn_T=0,up_warn_H=100,low_warn_H=0;
17 unsigned int disp_val1=0,disp_val2=0;
18 /******************************************/
19 //程序名:void delay()
20 //功能:延时程序
21 //作者:唐立军
22 //时间:2007.11.15
23 /******************************************/
24 void delay()
25 {
26 1 unsigned char del1,del2;
27 1 for(del1=0;del1<96;del1++)
28 1 for(del2=0;del2<255;del2++);
29 1 }
30 /******************************************/
31 //程序名:void Getkey()
32 //功能:获取键值程序
33 //作者:唐立军
34 //时间:2007.11.15
35 /******************************************/
36 unsigned char Getkey()
37 {
38 1 unsigned char temp1,temp2;
39 1 temp1 = P2;
40 1 temp1 = temp1 & 0x1f;
41 1 if(temp1==0)
42 1 return 0;
43 1 else
44 1 {
45 2 delay();
46 2 temp2 = P2;
47 2 temp2 = temp2&0x3f;
48 2 if(temp1 == temp2)
49 2 return(temp2);
50 2 }
51 1
52 1 }
53 /******************************************/
54 //程序名:timer0_initialize(void)
55 //功能:定时器0初始化程序
C51 COMPILER V7.06 MAIN 11/19/2007 13:50:12 PAGE 2
56 //作者:唐立军
57 //时间:2007.11.15
58 /******************************************/
59 static void timer0_initialize(void)
60 {
61 1 EA = 0;
62 1 timer_trik = 0;
63 1 TR0 = 0;
64 1 TMOD &= 0xf0;
65 1 TMOD |=0x01;
66 1 TL0 = (TIME0_COUNT&0xff);
67 1 TH0 = (TIME0_COUNT>>8);
68 1 PT0 = 0;
69 1 ET0 = 1;
70 1 TR0 = 1;
71 1 EA = 1;
72 1 }
73
74 /******************************************/
75 //程序名:
76 //功能:
77 //作者:唐立军
78 //时间:2007.11.15
79 /******************************************/
80 void main()
81 {
82 1 unsigned char c=0;
83 1 unsigned char key,flag=0;
84 1 unsigned char *p_value1, *p_checksum1;
85 1 unsigned char *p_value2, *p_checksum2;
86 1 float *p_humidity,*p_temperature,temp1,temp2;
87 1 timer0_initialize();
88 1 while(1)
89 1 {
90 2 key = Getkey();
91 2 switch(key)
92 2 {
93 3 case KEY1:
94 3 flag++;
95 3 if(flag>4)
96 3 flag=0;
97 3 break;
98 3 case KEY2:
99 3 break;
100 3 case KEY3:
101 3 break;
102 3 case KEY4:
103 3 switch(flag)
104 3 {
105 4 case 1:T_warn_UP();
106 4 break;
107 4 case 2:T_warn_LOW();
108 4 break;
109 4 case 3:H_warn_UP();
110 4 break;
111 4 case 4:H_warn_LOW();
112 4 break;
113 4 default:
114 4 break;
115 4 }
116 3 break;
117 3 case KEY5:
C51 COMPILER V7.06 MAIN 11/19/2007 13:50:12 PAGE 3
118 3 if(++c==2)
119 3 {
120 4 Reset();
121 4 c=0;
122 4 // P02 = 1;P03 = 1;P04 = 1;P05 = 1;P06 = 1;P27=0; //复位LED灯亮
123 4 }
124 3 break;
125 3 default:
126 3 break;
127 3 }
128 2 switch(flag)
129 2 {
130 3 case 0: P02 = 0;P03 = 1;P04 = 1;P05 = 1;P06 = 1;P27=1; //指示显示温度和湿度LED灯亮
131 3 break;
132 3 case 1:
133 3 P02 = 1;P03 = 0;P04 = 1;P05 = 1;P06 = 1;P27=1; //指示设定温度上限LED灯亮
134 3 break;
135 3 case 2:
136 3 P02 = 1;P03 = 1;P04 = 0;P05 = 1;P06 = 1;P27=1; //指示设定温度下限LED灯亮
137 3 break;
138 3 case 3:
139 3 P02 = 1;P03 = 1;P04 = 1;P05 = 0;P06 = 1;P27=1; //指示设定湿度上限LED灯亮
140 3 break;
141 3 case 4:
142 3 P02 = 1;P03 = 1;P04 = 1;P05 = 1;P06 = 0;P27=1; //指示设定湿度下限LED灯亮
143 3 break;
144 3 default:
145 3 break;
146 3 }
147 2
148 2 }
149 1 s_measure(p_value1, p_checksum1, TEMP); //测量温度
150 1 s_measure(p_value2, p_checksum2, HUMI); //测量湿度
151 1 *p_temperature = (float)(*p_value1+(*(p_value1+1)&0x01)*256+(*(p_value1+1)&0x02)*512+(*(p_value1+1)&0x04)
-*1024+(*(p_value1+1)&0x08)*2048
152 1 +(*(p_value1+1)&0x10)*4096+(*(p_value1+1)&0x20)*8192); //14位温度数据转换为浮点型
153 1 *p_humidity = (float)(*p_value1+(*(p_value1+1)&0x01)*256+(*(p_value1+1)&0x02)*512+(*(p_value1+1)&0x04)*10
-24+(*(p_value1+1)&0x08)*2048); //12位湿度数据转换为浮点型
154 1 calc_sth15( p_humidity, p_temperature); //温度和湿度的标度变换
155 1
156 1 temp1 = *p_temperature;
157 1 temp2 = *p_humidity;
158 1
159 1 temp1=fabs(temp1); //取样获取的浮点数转成绝对值
160 1 disp_val1=(int)(temp1*100); //小数点标志point置1。
161 1 temp2=fabs(temp2); //取样获取的浮点数转成绝对值
162 1 disp_val2=(int)(temp2*100); //小数点标志point置1。
163 1 if((disp_val1*100>up_warn_T|disp_val1*100<low_warn_T|disp_val2*100>up_warn_H|disp_val2*100<low_warn_H)) /
-/报警判断
164 1 P07=1; //开始报警
165 1
166 1 }
167 /******************************************/
168 //程序名:Reset()
169 //功能:报警复位
170 //作者:唐立军
171 //时间:2007.11.15
172 /******************************************/
173
174 void Reset()
175 {
176 1 P07=0; //报警停止
C51 COMPILER V7.06 MAIN 11/19/2007 13:50:12 PAGE 4
177 1 up_warn_T=100; //将温度上下限设为100,0
178 1 low_warn_T=0;
179 1 up_warn_H=100; //将湿度上下限设为100,0
180 1 low_warn_H=0;
181 1 }
182
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 237 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 28
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 + -