📄 led8.lst
字号:
C51 COMPILER V7.06 LED8 01/09/2008 10:10:44 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE LED8
OBJECT MODULE PLACED IN LED8.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LED8.C BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //--------------------------------------------------
2 //
3 // 作者:闵运华
4 // qq:121758163
5 //--------------------------------------------------
6 #define Support_18b20
7 #define Support_i2c
8 #define Support_led
9
10
11
12 #include <reg51.h>
13 #ifdef Support_led
14 #include <led.h>
*** WARNING C280 IN LINE 147 OF LED.H: 'Tab00074': unreferenced local variable
15 #endif
16
17 #ifdef Support_18b20
18 #include <18b20.h>
19 #endif
20
21 #ifdef Support_i2c
22 #include <i2c.h>
23 #endif
24
25 sbit Tab00000 = P2^4;
26 sbit Tab00001 = P2^5;
27 sbit Tab00002 = P2^6;
28 sbit Tab00003 = P2^7;
29
30 sbit Tab00004 = P1^0;
31 sbit Tab00005 = P1^1;
32 sbit Tab00006 = P1^2;
33 sbit Tab00007 = P1^3;
34 sbit Tab00008 = P1^4;
35
36
37
38
39 sbit Tab00009 = P3^0;
40 sbit Tab00010 = P3^1;
41 unsigned char Tab00011;
42 unsigned int Tab00012;
43 bit Tab00013; //为1表示门己关着了
44 #define Tab00014 0
45 #define Tab00015 1
46
47 //遥控区
48 struct Tab00016nec{
49 unsigned char Tab00017;
50 unsigned char Tab00018;
51 unsigned char Tab00019;
52 unsigned int Tab00020;
53 unsigned int Tab00021;
54 unsigned char Tab00022;
C51 COMPILER V7.06 LED8 01/09/2008 10:10:44 PAGE 2
55 unsigned char Tab00023;
56 };
57 struct Tab00016nec Tab00016;
58 #define Tab00024 (Tab00016.Tab00019 & 0x01)
59 #define Tab00025 Tab00016.Tab00019 &= 0x0fe;
60 #define Tab00026 Tab00016.Tab00019 |= 0x01;
61
62 #define Tab00027108Tab00028 (Tab00016.Tab00019 & 0x02)
63 #define Tab00029108Tab00028 Tab00016.Tab00019 &= 0x0fd;
64 #define Tab00030108Tab00028 Tab00016.Tab00019 |= 0x02;
65
66 #define Tab00031 (Tab00016.Tab00019&0x04)
67 #define Tab00032 Tab00016.Tab00019 &= 0x0fb;
68 #define Tab00033 Tab00016.Tab00019 |= 0x04;
69
70 #define Tab00034 (Tab00016.Tab00019 & 0x10)
71 #define Tab00035 Tab00016.Tab00019 &= 0x0ef;
72 #define Tab00036 Tab00016.Tab00019 |= 0x10;
73
74 //函数声明
75 void Tab000371Tab00038(void);
76 void Tab0003710Tab00028(void);
77 void Init_Sys();
78 void Tab00039(void);
79
80
81
82
83
84 void main(void)
85 {
86 1 unsigned char Tab00040 = 0;
87 1 Init_Sys();
88 1 Tab00041(0x1234);
89 1 Tab00011 = 0;
90 1 //初始化遥控结构的值
91 1 Tab00016.Tab00017 = 0;
92 1 Tab00016.Tab00018 = 0;
93 1 Tab00016.Tab00019 = 0;
94 1 Tab00016.Tab00020 = 0;
95 1 Tab00016.Tab00021 = 0;
96 1 Tab00016.Tab00022 = 0;
97 1 Tab00016.Tab00023 = 0;
98 1
99 1 while(1)
100 1 {
101 2
102 2 Tab00039();
103 2
104 2
105 2
106 2 #ifdef Support_18b20
107 2 //显示温度
108 2 if(Tab00016.Tab00019 == 0 )
109 2 {
110 3 Tab00044(Tab00045());
111 3 }
112 2 #endif
113 2 }
114 1 }
115
116
C51 COMPILER V7.06 LED8 01/09/2008 10:10:44 PAGE 3
117
118 //延时子程序
119 void Tab000371Tab00038(void)
120 {
121 1 Tab00012 = 0;
122 1 while(Tab00012 < 5000);
123 1 }
124
125
126 //延时子程序
127 void Tab00039(void)
128 {
129 1 Tab00012 = 0;
130 1 while(Tab00012 < 2500);
131 1 }
132 //延时子程序
133 void Tab0003710Tab00028(void)
134 {
135 1 Tab00012 = 0;
136 1 while(Tab00012 < 50);
137 1 }
138
139 void Init_Sys()
140 {
141 1 TH0 = (0xffff - 2500)/256;//定时中断为2.5ms
142 1 TL0 = (0xffff - 2500)%256;
143 1 TMOD = 0x01;// t0为十六位计数器
144 1 TR0 = 1; //允许时间零中断
145 1 ET0 = 1;
146 1
147 1 TH1 = 55;
148 1 TL1 = 55;
149 1 TMOD |= 0x20;//时间计数器1的工作模式为八位自动重装
150 1 TR1 = 1; //允许时间零中断
151 1 ET1 = 1;
152 1
153 1
154 1 IE0 = 1; //开外部中断零
155 1 EX0 = 1;
156 1 IT0 = 1;// INT0低电平触发(为1则为下降沿触发
157 1 EA = 1; //开总中断
158 1
159 1 }
160
161 //外部中断零
162 void ex0_int(void) interrupt 0
163 {
164 1 //EA = 0; //
165 1 Tab00016.Tab00018 = 0;
166 1 if(Tab00024)
167 1 {
168 2 if(Tab00016.Tab00017 <= (9000 + 4500 + 1000)/200 && Tab00016.Tab00017 >= (9000 - 1000 )/200)
169 2 {
170 3 Tab00025;
171 3 Tab00033;
172 3 }
173 2 }
174 1 else if(Tab00031)
175 1 {
176 2 if(Tab00016.Tab00017 <= (2250 + 400)/200 && Tab00016.Tab00017 >= (1125 - 400)/200)
177 2 {
178 3 if(Tab00016.Tab00022 > 15)
C51 COMPILER V7.06 LED8 01/09/2008 10:10:44 PAGE 4
179 3 Tab00016.Tab00021 >>= 1;
180 3 else
181 3 Tab00016.Tab00020 >>= 1;
182 3
183 3 if(Tab00016.Tab00017 >= (2250 + 1125)/200/2)
184 3 {
185 4 if(Tab00016.Tab00022 > 15)
186 4 Tab00016.Tab00021 |= 0x8000;
187 4 else
188 4 Tab00016.Tab00020 |= 0x8000;
189 4 }
190 3 Tab00016.Tab00022++;
191 3 if(Tab00016.Tab00022 == 32)
192 3 {
193 4 Tab00030108Tab00028;
194 4 Tab00032;
195 4 Tab00016.Tab00023 = 0;
196 4 Tab00041(((Tab00016.Tab00020 & 0xff)<< 8) | (Tab00016.Tab00021 &0xff));
197 4 Tab00016.Tab00022 = 0;
198 4 Tab00036;
199 4
200 4
201 4 }
202 3 }
203 2 else
204 2 {
205 3 Tab00016.Tab00019 = 0;
206 3 Tab00026;
207 3 Tab00016.Tab00022 = 0;
208 3 }
209 2 }
210 1 else if(Tab00027108Tab00028)
211 1 {
212 2 if(Tab00016.Tab00017 >= (9000 + 2250 - 1000)/200)
213 2 {
214 3 Tab00016.Tab00023++;
215 3 Tab00041(((Tab00016.Tab00020 & 0xff)<< 8) | (Tab00016.Tab00021 &0xff));
216 3
217 3 if(Tab00016.Tab00023 > 10)
218 3 {
219 4 Tab00016.Tab00023 = 0;
220 4 }
221 3 Tab00035;
222 3 }
223 2 else
224 2 {
225 3 Tab00016.Tab00019 = 0;
226 3 Tab00026;
227 3 Tab00016.Tab00022 = 0;
228 3 }
229 2 }
230 1 else
231 1 {
232 2 Tab00026;
233 2 }
234 1 Tab00016.Tab00017 = 0;
235 1 //EA = 1; //开总中断
236 1 }
237
238
239
240
C51 COMPILER V7.06 LED8 01/09/2008 10:10:44 PAGE 5
241 //每2.5毫秒中断一次
242 void time0(void) interrupt 1
243 {
244 1 //EA = 0; //
245 1 TH0 = (0xffff - 2500)/256;//定时中断为2.5ms
246 1 TL0 = (0xffff - 2500)%256;
247 1 Tab00011++;
248 1 #if 1
249 1 Tab00000 = 0;
250 1 Tab00001 = 0;
251 1 Tab00002 = 0;
252 1 Tab00003 = 0;
253 1
254 1 P0=Tab00049[Tab00011-1];
255 1
256 1 switch(Tab00011)
257 1 {
258 2 case 1:
259 2 Tab00000 = 1;
260 2 break;
261 2 case 2:
262 2 Tab00001 = 1;
263 2 break;
264 2 case 3:
265 2 Tab00002 = 1;
266 2 break;
267 2 case 4:
268 2 Tab00003 = 1;
269 2 Tab00011 = 0;
270 2 break;
271 2 default:
272 2 break;
273 2 }
274 1 #endif
275 1
276 1 Tab00016.Tab00018++;
277 1
278 1 //如果过了一百一十毫秒证明没有遥控信号
279 1 if(Tab00016.Tab00018 > 50)
280 1 {
281 2 if(Tab00016.Tab00019)
282 2 Tab00016.Tab00019 = 0;
283 2
284 2 Tab00016.Tab00018 = 0;
285 2 }
286 1 //EA = 1; //开总中断
287 1
288 1 }
289
290 //每200us中断一次
291 void time1(void) interrupt 3
292 {
293 1 //EA = 0; //
294 1 Tab00016.Tab00017 ++;
295 1 Tab00012++;
296 1 //EA = 1; //开总中断
297 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1374 ----
CONSTANT SIZE = 39 ----
C51 COMPILER V7.06 LED8 01/09/2008 10:10:44 PAGE 6
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 13
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -