📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 07/20/2008 16:54:32 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN E:\温度表\MAIN.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE E:\温度表\MAIN.C DB SB OE
stmt level source
1 #include <reg52.h>
2 #include <absacc.h>
3 #include <intrins.h>
4 #include "main.h"
5
6 /*
7 time1ms() /* 1 ms delay with XTAL 11.0592MHz
8 {
9 int i;
10 for (i = 0; i<50; i++); // the value shown in this line, 50 was calibrated for 1ms
11 // you may change it!
12 }
13
14 delay(int n) /* do nothing n*1ms
15 {
16 int i;
17 for (i=0; i< n ; i++)
18 time1ms();
19 }
20
21 delay10us()
22 {
23 int i;
24 for (i=0;i<1;i++);
25
26 }
27 char getchar(void)
28 {
29 char c;
30 while(!RI);
31 RI =0;
32 c = SBUF;
33 return SBUF;
34 }
35
36 char getchr(void)
37 {
38 while(!RI);
39 RI =0;
40 return SBUF; // no echo for command write
41 }
42
43 // external function for sending character through serial port
44 void putchar(char c)
45 {
46 while(!TI);
47 TI=0;
48 SBUF = c;
49 }
50
51 // send ASCII string to screen, the string must be stored in code memory
52 putstr(char *s)
53 {
54 char i=0;
55 char c;
C51 COMPILER V7.06 MAIN 07/20/2008 16:54:32 PAGE 2
56 while((c=*(s+(i++)))!= 0) putchar(c); // while byte is not terminator, keep sending
57 }
58
59
60
61
62
63 send_hex(unsigned char n)
64 {
65 if(n<=9) putchar(n+'0'); // send 0-9
66 else putchar(n+55); // send A-F
67 }
68
69 puthex(unsigned char n)
70 {
71 unsigned char temp;
72 temp = n&0xf0;
73 temp >>=4;
74 send_hex(temp);
75 temp = n&0xf;
76 send_hex(temp);
77 }
78
79 puthex16(unsigned int n)
80 {
81 puthex(n>>8);
82 puthex(n);
83 }
84
85 putnum(unsigned int n)
86 {
87 unsigned int k;
88 char s[6];
89 s[0] = n/10000+'0';
90 k = n%10000;
91 s[1] = k/1000+'0';
92 k = k%1000;
93 s[2] = k/100+'0';
94 k = k%100;
95 s[3] = k/10+'0';
96 k = k%10;
97 s[4] = k%10+'0';
98
99 for(k = 0; s[k] == '0' && k<5; k++);
100 if (k==5) k--; // if all bytes are '0', get back one position
101 do putchar(s[k++]);
102 while (k<5);
103 }*/
104 /*void time1_over_int(void) interrupt 1 using 1
105 {
106 TH0=0x0;
107 TL0=0x0;
108 if (ad_over==0)
109 {
110 value[counter]=AD_Conver(2);
111 counter++;
112 if (counter>64)
113 {
114 ad_over=1;
115 }
116
117 }
C51 COMPILER V7.06 MAIN 07/20/2008 16:54:32 PAGE 3
118 }*/
119 void initTimer(void)
120 {
121 1 TMOD=0x1;
122 1 TH0=0x0;
123 1 TL0=0x0;
124 1 }
125
126 void initUart(void)
127 {
128 1 TMOD|=0x20;
129 1 SCON=0x50;
130 1 TH1=0xfd;
131 1 TL1=0xfd;
132 1 TR1=1;
133 1 }
134 sbit relay_dpst=P3^2;
135 sbit SPEAKER=P3^5;
136 void main(void)
137 {
138 1 initTimer();
139 1 initUart();
140 1 TR0=0;
141 1 ET0=0;
142 1 EA=0;
143 1
144 1 upper_limit.c[0]=AT24C02_Read_Byte(0xA0,0x01);
145 1 upper_limit.c[1]=AT24C02_Read_Byte(0xA0, 0x02);
146 1 lower_limit.c[0]=AT24C02_Read_Byte(0xA0, 0x03 );
147 1 lower_limit.c[1]=AT24C02_Read_Byte(0xA0, 0x04);
148 1 difference.c[0]=AT24C02_Read_Byte(0xA0, 0x05);
149 1 difference.c[1]=AT24C02_Read_Byte(0xA0, 0x06);
150 1 P1=0xff;
151 1 while(1)
152 1 { if(ADC)
153 2 {
154 3 AdValue=AD590( );
155 3 }
156 2 else
157 2 {
158 3 AdValue=process_t();
159 3 if(AdValue>6400)AdValue+=128;
160 3 }
161 2 KEY();
162 2 display_humidity();
163 2 temperature=AdValue+difference.X ;
164 2
165 2 if(temperature>upper_limit.X)
166 2 {
167 3 relay_dpst=1;
168 3 SPEAKER=1;
169 3 }
170 2 else
171 2 {
172 3 relay_dpst=0;
173 3 SPEAKER=0;
174 3 }
175 2 if(temperature<lower_limit.X)
176 2 {
177 3 relay_dpst=1;
178 3 SPEAKER=1;
179 3 }
C51 COMPILER V7.06 MAIN 07/20/2008 16:54:32 PAGE 4
180 2 else
181 2 {
182 3 relay_dpst=0;
183 3 SPEAKER=0;
184 3 }
185 2 }
186 1 }
C51 COMPILER V7.06 MAIN 07/20/2008 16:54:32 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
p_temp . . . . . . . . . . . . . . . . * TAG * ----- UNION ----- 2
c. . . . . . . . . . . . . . . . . . MEMBER ----- ARRAY 0000H 2
X. . . . . . . . . . . . . . . . . . MEMBER ----- U_INT 0000H 2
SPEAKER. . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
temper . . . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 200
difference . . . . . . . . . . . . . . EXTERN DATA UNION ----- 2
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
AD590. . . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
AdValue. . . . . . . . . . . . . . . . PUBLIC DATA FLOAT 0000H 4
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
lower_limit. . . . . . . . . . . . . . EXTERN DATA UNION ----- 2
upper_limit. . . . . . . . . . . . . . EXTERN DATA UNION ----- 2
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
temperature. . . . . . . . . . . . . . PUBLIC DATA FLOAT 0004H 4
initTimer. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
relay_dpst . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
ADC. . . . . . . . . . . . . . . . . . EXTERN DATA BIT ----- 1
ET0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A9H 1
TH0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008CH 1
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
display_humidity . . . . . . . . . . . EXTERN CODE PROC ----- -----
TL0. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008AH 1
TL1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008BH 1
initUart . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
TR0. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008CH 1
_AT24C02_Read_Byte . . . . . . . . . . EXTERN CODE PROC ----- -----
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
process_t. . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
KEY. . . . . . . . . . . . . . . . . . EXTERN CODE PROC ----- -----
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 260 ----
CONSTANT SIZE = 200 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 8 ----
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 + -