📄 clock.lst
字号:
229 2 }
230 1 }
231
232 void timer_0() interrupt 1 using 2
233 {
234 1 EA=0;
235 1 count_timer0++;
236 1 if(count_timer0>=10)
237 1 {
238 2 TH0=15536/256;
239 2 TL0=15536%256;
240 2 count_timer0=0;
241 2 if(flag_set==1)
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 5
242 2 switch(flag_display)
243 2 {
244 3 case 0:flag_display=1;break;
245 3 case 1:flag_display=0;break;
246 3 default:break;
247 3 }
248 2 if(flag_set==2)
249 2 switch(flag_display)
250 2 {
251 3 case 0:flag_display=2;break;
252 3 case 2:flag_display=0;break;
253 3 default:break;
254 3 }
255 2 if(flag_set==4)
256 2 switch(flag_display)
257 2 {
258 3 case 3:flag_display=4;break;
259 3 case 4:flag_display=3;break;
260 3 default:break;
261 3 }
262 2 if(flag_set==5)
263 2 switch(flag_display)
264 2 {
265 3 case 3:flag_display=5;break;
266 3 case 5:flag_display=3;break;
267 3 default:break;
268 3 }
269 2 }
270 1 EA=1;
271 1 }
272
273 void timer_1() interrupt 3 using 2
274 {
275 1 EA=0;
276 1 TH1=15536/256;
277 1 TL1=15536%256;
278 1 count_rect++;
279 1 if(bee_flag==1)
280 1 {
281 2 alarm=1;
282 2 bee=1;
283 2 if(count_rect>=3)
284 2 {
285 3 bee_flag=0;
286 3 bee=0;
287 3 alarm=0;
288 3 TR1=0;
289 3 count_rect=0;
290 3 }
291 2 }
292 1 else
293 1 {
294 2 if(count_rect>=8)
295 2 {
296 3 alarm=!alarm;
297 3 bee=!bee;
298 3 count_rect=0;
299 3 count_bee++;
300 3 if(count_bee>=64)
301 3 {TR1=0;bee=0;alarm=0;count_bee=0;light_combo=0;}
302 3 }
303 2 }
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 6
304 1 EA=1;
305 1 }
306
307 void key_scan(void)
308 {
309 1 ptr_key=0;
310 1 flag_key=0;
311 1 key0=1;
312 1 key1=1;
313 1 if(key0==0){flag_key=1;ptr_key=0;}
314 1 if(key1==0){flag_key=1;ptr_key=1;}
315 1 }
316
317 void key_check(void)
318 {
319 1 if(flag_key==1)
320 1 {
321 2 TR1=0;
322 2 bee_flag=1;
323 2 TR1=1;
324 2 if(ptr_key==0)
325 2 {
326 3 flag_set++;
327 3 flag_set=flag_set%6;
328 3 switch(flag_set)
329 3 {
330 4 case 0: flag_display=0;TR0=0;light_combo=0;break;
331 4 case 1: flag_display=0;TR0=1;break;
332 4 case 2: flag_display=0;TR0=1;break;
333 4 case 3: flag_display=3;TR0=0;light_combo=1;break;
334 4 case 4: flag_display=3;TR0=1;break;
335 4 case 5: flag_display=3;TR0=1;break;
336 4 default:break;
337 4 }
338 3 delay(100);
339 3 while(key0==0);
340 3 }
341 2 else
342 2 {
343 3 DSA=0x0f;
344 3 DSB=0x82;
345 3 sec_alarm=0;
346 3 switch(flag_set)
347 3 {
348 4 case 0:break;
349 4 case 1:{
350 5 min_buffer=min;
351 5 min_buffer++;
352 5 if((min_buffer&0x0f)>=10)
353 5 min_buffer=min_buffer+0x06;
354 5 if(min_buffer>=96)
355 5 min_buffer=0;
356 5 min=min_buffer;
357 5 break;
358 5 }
359 4 case 2:{
360 5 hour_buffer=hour;
361 5 hour_buffer++;
362 5 if((hour_buffer&0x0f)>=10)
363 5 hour_buffer=hour_buffer+0x06;
364 5 if(hour_buffer>=36)
365 5 hour_buffer=0;
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 7
366 5 hour=hour_buffer;
367 5 break;
368 5 }
369 4 case 3:break;
370 4 case 4:{
371 5 min_buffer_alarm=min_alarm;
372 5 min_buffer_alarm++;
373 5 if((min_buffer_alarm&0x0f)>=10)
374 5 min_buffer_alarm=min_buffer_alarm+0x06;
375 5 if(min_buffer_alarm>=96)
376 5 min_buffer_alarm=0;
377 5 min_alarm=min_buffer_alarm;
378 5 break;
379 5 }
380 4 case 5:{
381 5 hour_buffer_alarm=hour_alarm;
382 5 hour_buffer_alarm++;
383 5 if((hour_buffer_alarm&0x0f)>=10)
384 5 hour_buffer_alarm=hour_buffer_alarm+0x06;
385 5 if(hour_buffer_alarm>=36)
386 5 hour_buffer_alarm=0;
387 5 hour_alarm=hour_buffer_alarm;
388 5 break;
389 5 }
390 4 default:break;
391 4 }
392 3 DSB=0x22;
393 3 DSA=0x2f;
394 3 delay(100);
395 3 while(key1==0);
396 3 }
397 2 }
398 1 }
399
400
401
402
403
404 void main(void)
405 {
406 1 com0=0;
407 1 com1=0;
408 1 com2=0;
409 1 com3=0;
410 1
411 1 key0=1;
412 1 key1=1;
413 1
414 1 light0=0;
415 1 light1=0;
416 1 light_combo=0;
417 1 bee=0;
418 1 alarm=0;
419 1 count_rect=0;
420 1 count_bee=0;
421 1
422 1 flag_display=0;
423 1 count_timer0=0;
424 1 flag_set=0;
425 1
426 1 TH0=15536/256;
427 1 TL0=15536%256;
C51 COMPILER V8.02 CLOCK 10/30/2007 22:33:12 PAGE 8
428 1 TH1=15536/256;
429 1 TL1=15536%256;
430 1
431 1 TMOD=0x11;
432 1 ET0=1;
433 1 ET1=1;
434 1 EA=1;
435 1
436 1 PT0=1;
437 1 TR0=0;
438 1 TR1=0;
439 1 delay(50000);
440 1
441 1
442 1 while(1)
443 1 {
444 2 scan();
445 2 key_scan();
446 2 key_check();
447 2 }
448 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1345 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -