📄 yk1602.lst
字号:
257 1
258 1 DATAPORT = 0xff;
259 1
260 1 RS =0; RW = 1; _nop_(); Elcm = 1; _nop_(); _nop_();
261 1
262 1 while( DATAPORT & busy );
263 1
264 1 Elcm = 0;
265 1 }
266
267
268
269
270
271
272 // 短延时
273 void delay5ms(void)
274 {
275 1 uint i = 5552;
276 1 while(i--);
277 1 }
278
279 //长延时
280 void delay400ms(void)
281 {
282 1 uchar i = 5;
283 1 uint j;
284 1 while(i--)
285 1 {
286 2 j=7269;
287 2 while(j--);
288 2 };
289 1 }
290
291
292 /*-------延时---------------*/
293 void delay(void){
294 1 int r;
295 1 int e;
296 1 for(r=0;r<500;r++){ /*外层循环*/
297 2 _nop_ (); /* delay for hardware */
298 2 _nop_ (); /* delay for hardware */
299 2 _nop_ (); /* delay for hardware */
300 2 for(e=0;e<3;e++){ /*内层循环*/
301 3 _nop_ (); /* delay for hardware */
302 3 _nop_ (); /* delay for hardware */
303 3 _nop_ (); /* delay for hardware */
C51 COMPILER V7.02b YK1602 11/27/2002 10:43:45 PAGE 6
304 3 _nop_ (); /* delay for hardware */
305 3 _nop_ (); /* delay for hardware */
306 3 }
307 2 }
308 1 }
309
310 /*----------功能键识别子程序--------------*/
311 void acct_1(void){
312 1
313 1 tf: _nop_();
314 1 if(menu){
315 2 menu=0;
316 2 conh++;
317 2 if(conh==3) conh=0;
318 2 }
319 1
320 1
321 1 if(conh==1){key_hit(min); //低位设置
322 2 conv();
323 2 disp1(3,0);
324 2 delay();
325 2 }
326 1 if(conh==2){key_hit(hour); //高位设置
327 2 conv();
328 2 disp1(3,0);
329 2 delay();
330 2
331 2 }
332 1 /* if(conh==3){key_hit(thtl) //显示高位,低位
333 1 conv();
334 1
335 1
336 1 delay();
337 1 delay();
338 1 delay();
339 1 delay();
340 1 delay();
341 1 }
342 1 if(conh==4){key_hit(save);
343 1 conv();
344 1 disp();
345 1 delay();
346 1
347 1 }*/
348 1 yk();
349 1 if(!conh==0) goto tf; /*功能设置完毕?未设置则继续执行功能键处理*/
350 1 }
351
352
353 /*-----------加减键处理子程序-------------*/
354 /*按键处理*/
355 void key_hit(unsigned char add3)
356 {
357 1 if(dw){
358 2 dw=0; /*减键*/
359 2 add3--;
360 2 if(add3>=60) add3=0;
361 2 if(conh==1) min=add3;
362 2 if(conh==2) hour=add3;
363 2 conv();
364 2 disp1(3,0);
365 2 }
C51 COMPILER V7.02b YK1602 11/27/2002 10:43:45 PAGE 7
366 1
367 1 if(up){ /*加键*/
368 2 up=0; /*减键*/
369 2 add3++;
370 2 if(add3==60) add3=0;
371 2 if(conh==1) min=add3;
372 2 if(conh==2) hour=add3;
373 2 conv();
374 2 disp1(3,0);
375 2
376 2 }
377 1
378 1
379 1 if(conh==1) min=add3;
380 1 if(conh==2) hour=add3;
381 1
382 1 }
383
384
385 //遥控码识别
386 void yk(void){
387 1 if(temp2==0xe2){
388 2 if(temp4==0xf1){
389 3 if(temp3==0x2c){
390 4 if(temp5==0x16){ //功能键
391 5 menu=1;
392 5 temp3=0;
393 5 temp5=0;
394 5 }
395 4
396 4 }
397 3 if(temp3==0x44){
398 4 if(temp5==0x22){ //加键
399 5 up=1;
400 5 temp3=0;
401 5 temp5=0;
402 5 }
403 4 }
404 3 if(temp3==0x54){
405 4 if(temp5==0x2a){ //减键
406 5 dw=1;
407 5 temp3=0;
408 5 temp5=0;
409 5 }
410 4
411 4 }
412 3 }
413 2
414 2
415 2 }
416 1 }
417
418
419
420 //遥控中断
421
422 void int0a()interrupt 0 using 2{
423 1 // TH1=TL1=0;
424 1
425 1 //TR0=1; //启动定时器
426 1 yt++; //中断次数
427 1 if(yt==1){
C51 COMPILER V7.02b YK1602 11/27/2002 10:43:45 PAGE 8
428 2 TH1=TL1=0;
429 2 TR1=1; //启动定时器
430 2 }
431 1
432 1 if(yt==2){
433 2 temp1=TH1; //为起始
434 2 TH1=TL1=0;
435 2 if(temp1>=0x1f){ //大于8ms
436 3 start=1; //置起码标志
437 3 }
438 2 else {start=0;
439 3 yt=0;
440 3 TR1=0;
441 3 }
442 2 }
443 1
444 1
445 1 else{
446 2 if(start==1){ //是起始才可以继续接收
447 3 temp1=TH1; //装入上次定时值
448 3 TH1=TL1=0; //重新计数
449 3 if(temp1>=0x05){ //大于1.2ms
450 4 h=1;
451 4 }
452 3 else if(temp1>=0x01){ //大于0.25ms
453 4
454 4 h=0;
455 4 }
456 3 da*=2;
457 3 if(h) da++;
458 3 gt++;
459 3 if(gt==8){ //读8位
460 4 gt=0;gv++;
461 4 if(gv==1) temp2=da;
462 4 if(gv==2) temp3=da;
463 4 if(gv==3) temp4=da;
464 4 if(gv==4) {temp5=da;
465 5 gv=0;
466 5 start=0;
467 5 yt=0;
468 5 TR1=0;
469 5 }
470 4
471 4 da=0;
472 4 }
473 3
474 3 }
475 2
476 2
477 2
478 2 }
479 1 }
480 /*------------------------*/
481
482 void main(void){
483 1 init_timer();
484 1 led6[0]=0;
485 1 led6[1]=2;
486 1 led6[2]=2;
487 1 led6[3]=2;
488 1 led6[4]=2;
489 1 led6[5]=2;
C51 COMPILER V7.02b YK1602 11/27/2002 10:43:45 PAGE 9
490 1 lcdreset(); //初始化
491 1 delay400ms();
492 1 disp1(3,0);
493 1 disp(2,1,love); //显示
494 1
495 1 delay400ms();
496 1
497 1 // DispOneChar(0,1,time[1]);
498 1 while(1){
499 2 delay400ms();
500 2 disp1(3,0);
501 2 acct_1();
502 2 yk();
503 2 }
504 1
505 1
506 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1086 ----
CONSTANT SIZE = 38 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 17 22
IDATA SIZE = ---- ----
BIT SIZE = 5 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -