⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bi2.lst

📁 驱动320240
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0570) if(q==1)
    0352 8588      LDD	R24,Y+8
    0353 3081      CPI	R24,1
    0354 F4D1      BNE	0x036F
(0571) {LCD_write_string(0,1,"alarm clock: ");
    0355 E188      LDI	R24,0x18
    0356 E091      LDI	R25,1
    0357 8399      STD	Y+1,R25
    0358 8388      STD	Y+0,R24
    0359 E021      LDI	R18,1
    035A 2700      CLR	R16
    035B DF35      RCALL	_LCD_write_string
(0572) 	if(alarmfalg==1)
    035C 91800060  LDS	R24,alarmfalg
    035E 3081      CPI	R24,1
    035F F441      BNE	0x0368
(0573) 	{LCD_write_string(13,1,"on ");}
    0360 E184      LDI	R24,0x14
    0361 E091      LDI	R25,1
    0362 8399      STD	Y+1,R25
    0363 8388      STD	Y+0,R24
    0364 E021      LDI	R18,1
    0365 E00D      LDI	R16,0xD
    0366 DF2A      RCALL	_LCD_write_string
    0367 C007      RJMP	0x036F
(0574) 	else
(0575) 	{LCD_write_string(13,1,"off");}
    0368 E180      LDI	R24,0x10
    0369 E091      LDI	R25,1
    036A 8399      STD	Y+1,R25
    036B 8388      STD	Y+0,R24
    036C E021      LDI	R18,1
    036D E00D      LDI	R16,0xD
    036E DF22      RCALL	_LCD_write_string
(0576) }
(0577) LCD_write_string(0,y,"time:");
    036F E08A      LDI	R24,0xA
    0370 E091      LDI	R25,1
    0371 8399      STD	Y+1,R25
    0372 8388      STD	Y+0,R24
    0373 2F24      MOV	R18,R20
    0374 2700      CLR	R16
    0375 DF1B      RCALL	_LCD_write_string
(0578) 
(0579) LCD_write_ch(6,y,2,time[change/10][2]);
    0376 E01A      LDI	R17,0xA
    0377 91000080  LDS	R16,change
    0379 940E0705  CALL	div8u
    037B E083      LDI	R24,3
    037C 9F80      MUL	R24,R16
    037D 01F0      MOVW	R30,R0
    037E E684      LDI	R24,0x64
    037F E090      LDI	R25,0
    0380 0FE8      ADD	R30,R24
    0381 1FF9      ADC	R31,R25
    0382 8020      LDD	R2,Z+0
    0383 2433      CLR	R3
    0384 823B      STD	Y+3,R3
    0385 822A      STD	Y+2,R2
    0386 E082      LDI	R24,2
    0387 8388      STD	Y+0,R24
    0388 2F24      MOV	R18,R20
    0389 E006      LDI	R16,6
    038A DEB2      RCALL	_LCD_write_ch
(0580) LCD_write_string(8,y,":");
    038B E088      LDI	R24,0x8
    038C E091      LDI	R25,1
    038D 8399      STD	Y+1,R25
    038E 8388      STD	Y+0,R24
    038F 2F24      MOV	R18,R20
    0390 E008      LDI	R16,0x8
    0391 DEFF      RCALL	_LCD_write_string
(0581) LCD_write_ch(9,y,2,time[change/10][1]);
    0392 E01A      LDI	R17,0xA
    0393 91000080  LDS	R16,change
    0395 940E0705  CALL	div8u
    0397 E083      LDI	R24,3
    0398 9F80      MUL	R24,R16
    0399 01F0      MOVW	R30,R0
    039A E683      LDI	R24,0x63
    039B E090      LDI	R25,0
    039C 0FE8      ADD	R30,R24
    039D 1FF9      ADC	R31,R25
    039E 8020      LDD	R2,Z+0
    039F 2433      CLR	R3
    03A0 823B      STD	Y+3,R3
    03A1 822A      STD	Y+2,R2
    03A2 E082      LDI	R24,2
    03A3 8388      STD	Y+0,R24
    03A4 2F24      MOV	R18,R20
    03A5 E009      LDI	R16,0x9
    03A6 DE96      RCALL	_LCD_write_ch
(0582) LCD_write_string(11,y,":");
    03A7 E088      LDI	R24,0x8
    03A8 E091      LDI	R25,1
    03A9 8399      STD	Y+1,R25
    03AA 8388      STD	Y+0,R24
    03AB 2F24      MOV	R18,R20
    03AC E00B      LDI	R16,0xB
    03AD DEE3      RCALL	_LCD_write_string
(0583) LCD_write_ch(12,y,2,time[change/10][0]);
    03AE E01A      LDI	R17,0xA
    03AF 91000080  LDS	R16,change
    03B1 940E0705  CALL	div8u
    03B3 E083      LDI	R24,3
    03B4 9F80      MUL	R24,R16
    03B5 01F0      MOVW	R30,R0
    03B6 E682      LDI	R24,0x62
    03B7 E090      LDI	R25,0
    03B8 0FE8      ADD	R30,R24
    03B9 1FF9      ADC	R31,R25
    03BA 8020      LDD	R2,Z+0
    03BB 2433      CLR	R3
    03BC 823B      STD	Y+3,R3
    03BD 822A      STD	Y+2,R2
    03BE E082      LDI	R24,2
    03BF 8388      STD	Y+0,R24
    03C0 2F24      MOV	R18,R20
    03C1 E00C      LDI	R16,0xC
    03C2 DE7A      RCALL	_LCD_write_ch
    03C3 9624      ADIW	R28,4
    03C4 940E071B  CALL	pop_gset2
    03C6 9508      RET
(0584) 
(0585) }
(0586) 
(0587) 
(0588) char get_key()
(0589) {
(0590) unsigned char temp,tempn0;
(0591) temp=PINA&0XF0;
_get_key:
  tempn0               --> R16
  temp                 --> R16
    03C7 B309      IN	R16,0x19
    03C8 7F00      ANDI	R16,0xF0
(0592) switch (temp)
    03C9 2711      CLR	R17
    03CA 3B00      CPI	R16,0xB0
    03CB E0E0      LDI	R30,0
    03CC 071E      CPC	R17,R30
    03CD F0D9      BEQ	0x03E9
    03CE EB80      LDI	R24,0xB0
    03CF E090      LDI	R25,0
    03D0 1780      CP	R24,R16
    03D1 0791      CPC	R25,R17
    03D2 F02C      BLT	0x03D8
    03D3 3700      CPI	R16,0x70
    03D4 E0E0      LDI	R30,0
    03D5 071E      CPC	R17,R30
    03D6 F0A1      BEQ	0x03EB
    03D7 C014      RJMP	0x03EC
    03D8 3D00      CPI	R16,0xD0
    03D9 E0E0      LDI	R30,0
    03DA 071E      CPC	R17,R30
    03DB F059      BEQ	0x03E7
    03DC 3D00      CPI	R16,0xD0
    03DD E0E0      LDI	R30,0
    03DE 071E      CPC	R17,R30
    03DF F064      BLT	0x03EC
    03E0 3E00      CPI	R16,0xE0
    03E1 E0E0      LDI	R30,0
    03E2 071E      CPC	R17,R30
    03E3 F009      BEQ	0x03E5
    03E4 C007      RJMP	0x03EC
(0593) {
(0594) case 0xe0:tempn0=1;break;
    03E5 E001      LDI	R16,1
    03E6 C005      RJMP	0x03EC
(0595) case 0xd0:tempn0=2;break;
    03E7 E002      LDI	R16,2
    03E8 C003      RJMP	0x03EC
(0596) case 0xb0:tempn0=3;break;
    03E9 E003      LDI	R16,3
    03EA C001      RJMP	0x03EC
(0597) case 0x70:tempn0=4;break;
    03EB E004      LDI	R16,4
(0598) 
(0599) }
(0600) return tempn0;
    03EC 9508      RET
(0601) }
(0602) 
(0603) void sys_init()
(0604) {
(0605) DDRA=0X0F;
_sys_init:
    03ED E08F      LDI	R24,0xF
    03EE BB8A      OUT	0x1A,R24
(0606) PORTA=0XFF;
    03EF EF8F      LDI	R24,0xFF
    03F0 BB8B      OUT	0x1B,R24
(0607) DDRC=0XFF;
    03F1 BB84      OUT	0x14,R24
(0608) PORTC=0XFF;
    03F2 BB85      OUT	0x15,R24
(0609) LCD_DATA_DDR=0XFF;
    03F3 BB81      OUT	0x11,R24
(0610) DDRB=0B10110000;
    03F4 EB80      LDI	R24,0xB0
    03F5 BB87      OUT	0x17,R24
(0611) SEI();
    03F6 9478      BSET	7
    03F7 9508      RET
_disp_change:
    03F8 940E072F  CALL	push_gset1
    03FA 9724      SBIW	R28,4
(0612) }
(0613) 
(0614) void disp_change()
(0615) {
(0616) if((change/10)!=0)
    03FB E01A      LDI	R17,0xA
    03FC 91000080  LDS	R16,change
    03FE 940E0705  CALL	div8u
    0400 2300      TST	R16
    0401 F0B1      BEQ	0x0418
(0617) {
(0618)  LCD_write_string(0,0,"alarm  ");
    0402 E080      LDI	R24,0
    0403 E091      LDI	R25,1
    0404 8399      STD	Y+1,R25
    0405 8388      STD	Y+0,R24
    0406 2722      CLR	R18
    0407 2700      CLR	R16
    0408 DE88      RCALL	_LCD_write_string
(0619) LCD_write_ch(7,0,1,change/10);
    0409 E02A      LDI	R18,0xA
    040A E030      LDI	R19,0
    040B 91000080  LDS	R16,change
    040D 2711      CLR	R17
    040E 940E06CD  CALL	div16s
    0410 831B      STD	Y+3,R17
    0411 830A      STD	Y+2,R16
    0412 E081      LDI	R24,1
    0413 8388      STD	Y+0,R24
    0414 2722      CLR	R18
    0415 E007      LDI	R16,7
    0416 DE26      RCALL	_LCD_write_ch
(0620) }
    0417 C007      RJMP	0x041F
(0621) else
(0622) { LCD_write_string(0,0,"set time");
    0418 EF87      LDI	R24,0xF7
    0419 E090      LDI	R25,0
    041A 8399      STD	Y+1,R25
    041B 8388      STD	Y+0,R24
    041C 2722      CLR	R18
    041D 2700      CLR	R16
    041E DE72      RCALL	_LCD_write_string
(0623) }
(0624) switch(change%10)
    041F E02A      LDI	R18,0xA
    0420 E030      LDI	R19,0
    0421 91000080  LDS	R16,change
    0423 2711      CLR	R17
    0424 940E06C9  CALL	mod16s
    0426 01A8      MOVW	R20,R16
    0427 3000      CPI	R16,0
    0428 0701      CPC	R16,R17
    0429 F049      BEQ	0x0433
    042A 3041      CPI	R20,1
    042B E0E0      LDI	R30,0
    042C 075E      CPC	R21,R30
    042D F069      BEQ	0x043B
    042E 3042      CPI	R20,2
    042F E0E0      LDI	R30,0
    0430 075E      CPC	R21,R30
    0431 F089      BEQ	0x0443
    0432 C017      RJMP	0x044A
(0625) {
(0626) case 0: LCD_write_string(9,0,"second");break;
    0433 EF80      LDI	R24,0xF0
    0434 E090      LDI	R25,0
    0435 8399      STD	Y+1,R25
    0436 8388      STD	Y+0,R24
    0437 2722      CLR	R18
    0438 E009      LDI	R16,0x9
    0439 DE57      RCALL	_LCD_write_string
    043A C00F      RJMP	0x044A
(0627) case 1: LCD_write_string(9,0,"mintue");break;
    043B EE89      LDI	R24,0xE9
    043C E090      LDI	R25,0
    043D 8399      STD	Y+1,R25
    043E 8388      STD	Y+0,R24
    043F 2722      CLR	R18
    0440 E009      LDI	R16,0x9
    0441 DE4F      RCALL	_LCD_write_string
    0442 C007      RJMP	0x044A
(0628) case 2: LCD_write_string(9,0,"hour  ");break;
    0443 EE82      LDI	R24,0xE2
    0444 E090      LDI	R25,0
    0445 8399      STD	Y+1,R25
    0446 8388      STD	Y+0,R24
    0447 2722      CLR	R18
    0448 E009      LDI	R16,0x9
    0449 DE47      RCALL	_LCD_write_string
    044A 9624      ADIW	R28,4
    044B 940E0732  CALL	pop_gset1
    044D 9508      RET
(0629) }
(0630) 
(0631) }
(0632) 
(0633) void changetime()
(0634) {
(0635) if(change%10==0)
_changetime:
    044E E01A      LDI	R17,0xA
    044F 91000080  LDS	R16,change
    0451 940E0703  CALL	mod8u
    0453 2300      TST	R16
    0454 F479      BNE	0x0464
(0636) {time[change/10][0]=0;}
    0455 E01A      LDI	R17,0xA
    0456 91000080  LDS	R16,change
    0458 940E0705  CALL	div8u
    045A E083      LDI	R24,3
    045B 9F80      MUL	R24,R16
    045C 01F0      MOVW	R30,R0
    045D E682      LDI	R24,0x62
    045E E090      LDI	R25,0
    045F 0FE8      ADD	R30,R24
    0460 1FF9      ADC	R31,R25
    0461 2422      CLR	R2
    0462 8220      STD	Z+0,R2
    0463 C088      RJMP	0x04EC
(0637) else if(change%10==1)
    0464 E01A      LDI	R17,0xA
    0465 91000080  LDS	R16,change
    0467 940E0703  CALL	mod8u
    0469 3001      CPI	R16,1
    046A F009      BEQ	0x046C
    046B C03D      RJMP	0x04A9
(0638) {if(time[change/10][1]==255)
    046C E01A      LDI	R17,0xA
    046D 91000080  LDS	R16,change
    046F 940E0705  CALL	div8u
    0471 E083      LDI	R24,3
    0472 9F80      MUL	R24,R16
    0473 01F0      MOVW	R30,R0
    0474 E683      LDI	R24,0x63
    0475 E090      LDI	R25,0
    0476 0FE8      ADD	R30,R24
    0477 1FF9      ADC	R31,R25
    0478 8180      LDD	R24,Z+0
    0479 3F8F      CPI	R24,0xFF
    047A F479      BNE	0x048A
(0639)    {time[change/10][1]=59;}
    047B E01A      LDI	R17,0xA
    047C 91000080  LDS	R16,change
    047E 940E0705  CALL	div8u
    0480 E083      LDI	R24,3
    0481 9F80      MUL	R24,R16
    0482 01F0      MOVW	R30,R0
    0483 E683      LDI	R24,0x63
    0484 E090      LDI	R25,0
    0485 0FE8      ADD	R30,R24
    0486 1FF9      ADC	R31,R25
    0487 E38B      LDI	R24,0x3B
    0488 8380      STD	Z+0,R24
    0489 C062      RJMP	0x04EC
(0640)  else if(time[change/10][1]==60)
    048A E01A      LDI	R17,0xA
    048B 91000080  LDS	R16,change
    048D 940E0705  CALL	div8u
    048F E083      LDI	R24,3
    0490 9F80      MUL	R24,R16
    0491 01F0      MOVW	R30,R0
    0492 E683      LDI	R24,0x63
    0493 E090      LDI	R25,0
    0494 0FE8      ADD	R30,R24
    0495 1FF9      ADC	R31,R25
    0496 8180      LDD	R24,Z+0
    0497 338C      CPI	R24,0x3C
    0498 F009      BEQ	0x049A
    0499 C052      RJMP	0x04EC
(0641)    {time[change/10][1]=0;}
    049A E01A      LDI	R17,0xA
    049B 91000080  LDS	R16,change
    049D 940E0705  CALL	div8u
    049F E083      LDI	R24,3
    04A0 9F80      MUL	R24,R16
    04A1 01F0      MOVW	R30,R0
    04A2 E683      LDI	R24,0x63
    04A3 E090      LDI	R25,0
    04A4 0FE8      ADD	R30,R24
    04A5 1FF9      ADC	R31,R25
    04A6 2422      CLR	R2
    04A7 8220      STD	Z+0,R2
(0642) }
    04A8 C043      RJMP	0x04EC
(0643) 
(0644) else if(change%10==2)
    04A9 E01A      LDI	R17,0xA
    04AA 91000080  LDS	R16,change
    04AC 940E0703  CALL	mod8u
    04AE 3002      CPI	R16,2
    04AF F009      BEQ	0x04B1
    04B0 C03B      RJMP	0x04EC
(0645) {if(time[change/10][2]==255)
    04B1 E01A      LDI	R17,0xA
    04B2 91000080  LDS	R16,change
    04B4 940E0705  CALL	div8u
    04B6 E083      LDI	R24,3
    04B7 9F80      MUL	R24,R16
    04B8 01F0      MOVW	R30,R0
    04B9 E684      LDI	R24,0x64
    04BA E090      LDI	R25,0
    04BB 0FE8      ADD	R30,R24
    04BC 1FF9      ADC	R31,R25
    04BD 8180      LDD	R24,Z+0
    04BE 3F8F      CPI	R24,0xFF
    04BF F479      BNE	0x04CF
(0646)    {time[change/10][2]=23;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -