📄 flas.lst
字号:
C51 COMPILER V7.06 FLAS 07/20/2008 02:40:34 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FLAS
OBJECT MODULE PLACED IN E:\温度表\FLAS.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE E:\温度表\FLAS.C DB SB OE
stmt level source
1 #include <reg52.h>
2 #include <stdio.h>
3 #include <absacc.h>
4
5 #define a 0x01
6 #define b 0x02
7 #define c 0x04
8 #define d 0x08
9 #define e 0x10
10 #define f 0x20
11 #define g 0x40
12 #define dot 0x80
13 #define H 10
14 #define L 11
15 #define P 12
16 sbit sd=P2^7;
17 sbit sp=P3^5;
18 extern unsigned char AT24C02_Read_Byte(unsigned char Device,unsigned char Addr);
19 extern void AT24C02_Write_Byte(unsigned char Device,unsigned char Addr, unsigned char Data);
20 unsigned char set;
21 unsigned char KEY_Variable[3];
22 unsigned int tmep;
23 unsigned char code disp_code[] = {
24 a+b+c+d+e+f, // 0
25 b+c, // 1
26 a+b+d+e+g, // 2
27 a+b+c+d+g, // 3
28 b+c+f+g, // 4
29 a+c+d+f+g, // 5
30 a+c+d+e+f+g, // 6
31 a+b+c, // 7
32 a+b+c+d+e+f+g, // 8
33 a+b+c+d+f+g, // 9
34 b+c+e+f+g, //H
35 d+e+f, //L
36 a+b+e+f+g, //P
37 b+c+g, //+
38 g, //-
39 };
40
41 time1ms() /* 1 ms delay with XTAL 11.0592MHz */
42 {
43 1 int i;
44 1 for (i = 0; i<50; i++) // the value shown in this line, 50 was calibrated for 1ms
45 1 ; // you may change it!
46 1 }
47
48 void sendbyte(unsigned char yte)
49 { P2=0;
50 1 sd=1;
51 1 P0=disp_code[yte];
52 1 //sd=0;
53 1
54 1 }
55
C51 COMPILER V7.06 FLAS 07/20/2008 02:40:34 PAGE 2
56
57
58 void display(unsigned int i)
59 { unsigned int k;
60 1 unsigned char j,m,q;
61 1 unsigned int s[6];
62 1 s[0] = i/1000;
63 1 k = i%1000;
64 1 s[1] = k/100;
65 1 k = k%100;
66 1 s[2] = k/10;
67 1 k = k%10;
68 1 s[3] = k;
69 1 //k = k%10;
70 1 //s[4] = k;
71 1 j=0x80;
72 1 for(k = 0; s[k] == 0 && k<4; k++);
73 1 if (k==4) k--; // if all bytes are '0', get back one position
74 1
75 1 do
76 1 {
77 2
78 2
79 2 P2=j;
80 2
81 2 P0=(disp_code[s[k++]]);
82 2 j>>=1;
83 2 }
84 1 while (k<5);
85 1
86 1 }
*** WARNING C280 IN LINE 60 OF E:\温度表\FLAS.C: 'm': unreferenced local variable
*** WARNING C280 IN LINE 60 OF E:\温度表\FLAS.C: 'q': unreferenced local variable
87 #define KEY_SET 0x07//设置键
88 #define KEY_UP 0x0b//向上键
89 #define KEY_DOEN 0x0d//向下键
90 #define KEY_RUN 0x0e//运行键
91 #define KEY_P1 P1
92
93 /***************************************************************************************************
94 函数名称:KEY_JIEXI(unsigned int Variable)
95 函数入口:
96 unsigned int Variable :采集到的键盘值,就是P2、P3口的数值。
97 函数出口:
98 功能描述:键盘解析,通过采样的数值分析出当前按下的是那个键。(包括复合键)并针对键进行相应的操作
99 关键点描述:无
100 ****************************************************************************************************/
101 KEY_JIEXI(unsigned int Variable)
102 {
103 1 sp=0;
104 1 switch(Variable)
105 1 {
106 2 //单键。。。。
107 2 case KEY_RUN: //0x01运行键
108 2 set=0;
109 2 tmep=0;
110 2 break;
111 2 case KEY_DOEN: //0x02向下键
112 2 if(set)
113 2 set--;
114 2 else
115 2 set=14;
C51 COMPILER V7.06 FLAS 07/20/2008 02:40:34 PAGE 3
116 2 break;
117 2 case KEY_UP: //0x04向上键
118 2 if(set<14)
119 2 { set++;
120 3
121 3 }
122 2 else
123 2 set=0;
124 2 break;
125 2 case KEY_SET: //0x07设置键
126 2 tmep=tmep+8;
127 2 break;
128 2 default:
129 2 break;
130 2 }
131 1 sp=1;
132 1 }
133 /***************************************************************************************************/
134 /***************************************************************************************************
135 函数名称:KEY()
136 函数入口:空
137 函数出口:空
138 功能描述:键盘消抖
139 设计思想:
140 建立一个键盘值保存缓冲区KEY_Variable[3],能够连续保存最近的三次采样到的键盘值。当最后两次采
141 样到的值相等并且和倒数第三次的值不相等时,说明有按键按下。进行确认。当三次的采样值都相等时,说
142 明此按键已经确认过了,不进行确认。
143 ****************************************************************************************************/
144 KEY()
145 {
146 1 unsigned char key_buf;
147 1 KEY_Variable[2]=KEY_Variable[1];
148 1 KEY_Variable[1]=KEY_Variable[0];
149 1 EA = 0;
150 1 key_buf=KEY_P1;
151 1 KEY_Variable[0] =key_buf&0xc0;
152 1 KEY_Variable[0] >>=4;
153 1 KEY_Variable[0]|=(key_buf&0x03);
154 1
155 1 if(KEY_Variable[0] == KEY_Variable[1])
156 1 {
157 2 if(KEY_Variable[1] == KEY_Variable[2])
158 2 {
159 3 return;
160 3 }
161 2 else
162 2 {
163 3
164 3 KEY_JIEXI(KEY_Variable[0]); //分析按下的是什么键,并做相应的处理。
165 3 }
166 2 }
167 1 return;
168 1 }
169 sbit gh=P3^4;
170 sbit low=P3^3;
171
172 unsigned int Read_Temperature(void)
173 { unsigned int vioud,tmp[4];
174 1 unsigned char m,n;
175 1
176 1 gh=0;
177 1 P0=0XFF;
C51 COMPILER V7.06 FLAS 07/20/2008 02:40:34 PAGE 4
178 1 m=P0;
179 1 m=~m;
180 1 n=(m&0x0f);
181 1 m>>=4;
182 1 tmp[0]=m*100;
183 1 tmp[1]=n*1000;
184 1 gh=1;
185 1
186 1 low=0;
187 1 P0=0XFF;
188 1 m=P0;
189 1 m=~m;
190 1 n=(m&0x0f);
191 1 m>>=4;
192 1 tmp[3]=m;
193 1 tmp[2]=n*10;
194 1 low=1;
195 1 vioud=tmp[0];
196 1 vioud+=tmp[1];
197 1 vioud+=tmp[2];
198 1 vioud+=tmp[3];
199 1 return vioud;
200 1 }
201 sbit relay_dpst=P3^2;
202 sbit SPEAKER=P3^5;
203 void main(void)
204 {
205 1 SCON = 0x52; // 8-bit UART mode
206 1 TMOD = 0x20; // timer 1 mode 2 auto reload
207 1 TH1= 0xfd; // 9600 8n1
208 1 TR1 = 1; // run timer1*/
209 1 // void AT24C02_Init();
210 1
211 1 P1=0xff;
212 1 P0=0x00;
213 1 P2=0xf0;
214 1
215 1 //AT24C02_Write_Byte(0xA0, 0x02, 219);
216 1 //AT24C02_Write_Byte(0xA1);
217 1
218 1 //tmep=Read_Temperature(void)
219 1 // AT24C02_Read_Byte(0xA0,0x02);
220 1 while(1)
221 1 { //unsigned char TEMP;
222 2
223 2 SPEAKER=0;
224 2 tmep=Read_Temperature();
225 2 relay_dpst=~relay_dpst;
226 2
227 2 SPEAKER=0;
228 2 //KEY();
229 2 // sendbyte(set);
230 2 display(tmep);
231 2 }
232 1 }
233
C51 COMPILER V7.06 FLAS 07/20/2008 02:40:34 PAGE 5
NAME CLASS MSPACE TYPE OFFSET SIZE
==== ===== ====== ==== ====== ====
P0 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0080H 1
P1 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0090H 1
P2 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A0H 1
P3 . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B0H 1
EA . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00AFH 1
SPEAKER. . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
IE . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00A8H 1
size_t . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2
IP . . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00B8H 1
_KEY_JIEXI . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
Variable . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
disp_code. . . . . . . . . . . . . . . PUBLIC CODE ARRAY 0000H 15
SCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0098H 1
TMOD . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0089H 1
TCON . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 0088H 1
tmep . . . . . . . . . . . . . . . . . PUBLIC DATA U_INT 0000H 2
relay_dpst . . . . . . . . . . . . . . ABSBIT ----- BIT 00B2H 1
_sendbyte. . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
yte. . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
time1ms. . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA INT 0006H 2
set. . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0002H 1
TH1. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 008DH 1
gh . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B4H 1
low. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B3H 1
sd . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00A7H 1
TR1. . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 008EH 1
_display . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
i. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
k. . . . . . . . . . . . . . . . . . * REG * DATA U_INT 0002H 2
j. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
m. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0000H 1
q. . . . . . . . . . . . . . . . . . AUTO DATA U_CHAR 0001H 1
s. . . . . . . . . . . . . . . . . . AUTO DATA ARRAY 0002H 12
sp . . . . . . . . . . . . . . . . . . ABSBIT ----- BIT 00B5H 1
T2CON. . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00C8H 1
KEY. . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
key_buf. . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
Read_Temperature . . . . . . . . . . . PUBLIC CODE PROC 0000H -----
vioud. . . . . . . . . . . . . . . . * REG * DATA U_INT 0006H 2
tmp. . . . . . . . . . . . . . . . . AUTO DATA ARRAY 0000H 8
m. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0007H 1
n. . . . . . . . . . . . . . . . . . * REG * DATA U_CHAR 0005H 1
KEY_Variable . . . . . . . . . . . . . PUBLIC DATA ARRAY 0003H 3
PSW. . . . . . . . . . . . . . . . . . SFR DATA U_CHAR 00D0H 1
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 467 ----
CONSTANT SIZE = 15 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 6 22
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -