📄 fre89s51.lst
字号:
C51 COMPILER V7.20 FRE89S51 01/12/2008 19:38:34 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE FRE89S51
OBJECT MODULE PLACED IN fre89s51.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE fre89s51.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #define u_int unsigned int
3 #define u_char unsigned char
4 /* 函数声明 */
5 void time0_over_int(void); /* 定时器0中断服务程序 ,使用第1组寄存器 */
6 void ext1_int_proc(void); /* 外部中断1中断服务程序,使用第2组寄存器 */
7 void system_init(void); /* 系统上电初始化 */
8 /* 声明结束 */
9 #define Disdata P1
10 #define discan P0
11 sbit DIN=P1^5;
12 u_char code dis_8[11]={
13 0xa0, // 0
14 0xbb, // 1
15 0x62, // 2
16 0x2a, // 3
17 0x39, // 4
18 0x2c, // 5
19 0x24, // 6
20 0xba, // 7
21 0x20, // 8
22 0x28, // 9
23 0xFF, //"灭"
24 };/*0~9的数码管段码*/
25 /***********us延时函数*******************/
26 //u_char code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x80,0x08,0x09,0x09};
27 u_char code scan_con[4]={0xfe,0xfd,0xfb,0xf7};
28 //u_char data wet_data[1]={0x00};
29 //u_char data display[4]={0x00,0x00,0x00,0x00};//显示单元数据,共4个数据,一个运算暂存用
30 u_char display[4]={0x00,0x00,0x00,0x00};
31 u_int fhz_tlc555; /* tlc555输出频率 */
32 u_char timer_count; /* 定时计数 */
33 bit timer_int; /* 定时标志 */
34 float hum_const; /* 计算湿度的常数 */
35 float real_hum=0.0;
36 /* 定时器0中断服务程序 ,使用第1组寄存器 */
37 void time0_over_int(void) interrupt 1 using 1
38 {
39 1 TF0=0;
40 1 timer_count++;
41 1 TH0=0x3c;
42 1 TL0=0xb0;
43 1
44 1 }
45 /* 外部中断1中断服务程序,使用第2组寄存器 */
46 void ext1_int_proc(void) interrupt 2 using 2
47 {
48 1 fhz_tlc555++;
49 1 }
50 /* 系统上电初始化 */
51 void system_init(void)
52 {
53 1 EA = 0;
54 1 timer_int = 0;
55 1 timer_count = 0;
C51 COMPILER V7.20 FRE89S51 01/12/2008 19:38:34 PAGE 2
56 1 TMOD = 0x01; /*定时器0工作于方式1*/
57 1 TCON = 0x04; /*外部中断下降沿触发*/
58 1 TH0=0x3c; /*定时50毫秒*/
59 1 TL0=0xb0;
60 1 PT0 = 1; /*定时器0高优先级*/
61 1 TR0 = 1; /*定时器0启动计数*/
62 1 IE = 0x86; /*定时器0,外部中断1,CPU开中断*/
63 1 }
64 /* 计算当前湿度 */
65 float get_humidity(u_int fhz) /* 输入fhz为tlc555的频率计数 */
66 {
67 1 float humidity = 0;
68 1
69 1 if ( (fhz > 7400) || (fhz < 6000) )
70 1 {
71 2 return 0;
72 2 }
73 1 else if (fhz >= 7000)
74 1 {
75 2 hum_const = 5143.7;
76 2 }
77 1 else if ( (fhz >= 6700) && (fhz < 7000) )
78 1 {
79 2 hum_const = 5183.7;
80 2 }
81 1 else if(fhz < 6700)
82 1 {
83 2 hum_const = 5203.7;
84 2 }
85 1 //humidity = (u_int)( (hum_const - 0.702*(fhz - 40)) / 10);
86 1 humidity = (hum_const - 0.702*(fhz - 40)) / 10.0;
87 1 humidity =humidity+0.9;
88 1 if(humidity>100.0||humidity<0.0)
89 1 {
90 2 return humidity=0;
91 2 }
92 1 else
93 1 return (humidity);//
94 1 }
95 void delay(u_int t)
96 {
97 1 for(;t>0;t--);
98 1 }
99
100 /*显示扫描***********************/
101 void scan()
102 {
103 1 char k;
104 1 for(k=0;k<4;k++)
105 1 {
106 2 Disdata=dis_8[display[k]];
107 2 if(k==1)
108 2 {
109 3 DIN=0;
110 3 }
111 2 discan=scan_con[k];
112 2 delay(90);
113 2 //delay(40);
114 2 discan=0xff;
115 2 }
116 1 }
117
C51 COMPILER V7.20 FRE89S51 01/12/2008 19:38:34 PAGE 3
118 /***************湿度数据处理函数*************/
119 wetdata_process()
120 {
121 1 display[3]=real_hum/100;
122 1 display[2]=((real_hum-display[3]*100)/10);
123 1 display[1]=(real_hum-display[3]*100-display[2]*10);
124 1 display[0]=(int)((real_hum-(int)real_hum)*10);
125 1 // display[0]=(real_hum-display[3]*100-display[2]*10-display[1])*10;
126 1 if(!display[3])
127 1 {
128 2 display[3]=0x0a;
129 2 if(!display[2])
130 2 {
131 3 display[2]=0x0a;
132 3 }
133 2 }
134 1
135 1 }
136 main()
137 {
138 1 int h;
139 1 system_init();
140 1 while(1)
141 1 {
142 2 if (timer_count ==20) /* 1秒定时到 100*/
143 2 {
144 3 timer_count = 0;
145 3 fhz_tlc555 -=2;
146 3 real_hum= get_humidity(fhz_tlc555);
147 3 wetdata_process();
148 3 for(h=0;h<200;h++)
149 3 scan();
150 3
151 3 fhz_tlc555 = 0;
152 3 system_init();
153 3 }
154 2
155 2 }
156 1 }
157
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 664 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 4
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 + -