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

📄 wnl.lst

📁 万年历 megal128 iccavr开发平台
💻 LST
📖 第 1 页 / 共 4 页
字号:
    053B 2766      CLR	R22
    053C C011      RJMP	0x054E
(0256)  {
(0257)  PORTB=~(1<<j);
    053D E001      LDI	R16,1
    053E 2F16      MOV	R17,R22
    053F 940E06C1  CALL	lsl8
    0541 2E20      MOV	R2,R16
    0542 9420      COM	R2
    0543 BA28      OUT	0x18,R2
(0258)  delay(50);
    0544 E302      LDI	R16,0x32
    0545 E010      LDI	R17,0
    0546 DB3F      RCALL	_delay
(0259)  m=PINB&0xf0;    //屏蔽低四位
    0547 B346      IN	R20,0x16
    0548 7F40      ANDI	R20,0xF0
(0260)  if(m!=0xf0)
    0549 3F40      CPI	R20,0xF0
    054A F011      BEQ	0x054D
(0261)   return 0xff;
    054B EF0F      LDI	R16,0xFF
    054C C004      RJMP	0x0551
    054D 9563      INC	R22
    054E 3064      CPI	R22,4
    054F F368      BCS	0x053D
(0262)  }
(0263)  return 0x00;
    0550 2700      CLR	R16
    0551 940E066E  CALL	pop_gset2
    0553 9508      RET
(0264) }
(0265) void main(void)
(0266) {
(0267)  unsigned char key,b=0,a=0;
_main:
  a                    --> R20
  b                    --> R22
  key                  --> R10
    0554 2766      CLR	R22
    0555 2744      CLR	R20
(0268)  SREG=0x80;
    0556 E880      LDI	R24,0x80
    0557 BF8F      OUT	0x3F,R24
(0269)  TIMSK=0x01;
    0558 E081      LDI	R24,1
    0559 BF87      OUT	0x37,R24
(0270)  DDRA=0xff;
    055A EF8F      LDI	R24,0xFF
    055B BB8A      OUT	0x1A,R24
(0271)  PORTA=0xff;
    055C BB8B      OUT	0x1B,R24
(0272)  timer0_init();
    055D DE40      RCALL	_timer0_init
(0273)  ocmj_init();//初始化	
    055E DB34      RCALL	_ocmj_init
(0274)  ocmj_write(0xf4);//清屏
    055F EF04      LDI	R16,0xF4
    0560 DB45      RCALL	_ocmj_write
    0561 C0C0      RJMP	0x0622
(0275)  while(1)
(0276)  {
(0277)    while((ks()==0xff)&&(scan_key()==10))    //置时间,当有键按下,且键为10时,小时,分钟都置0
(0278)    {
(0279)      for(;;)
(0280)      {
(0281)       lcd_buff[0]=0;//小时
    0562 2422      CLR	R2
    0563 92200109  STS	lcd_buff,R2
(0282) 	  
(0283) 	  lcd_buff[1]=0;
    0565 9220010A  STS	lcd_buff+1,R2
(0284) 	  lcd_buff[2]=0;  //分钟
    0567 9220010B  STS	lcd_buff+2,R2
(0285) 	  lcd_buff[3]=0;
    0569 9220010C  STS	lcd_buff+3,R2
(0286) 	  lcd_time1();//显示小时,分钟
    056B DF0B      RCALL	_lcd_time1
(0287) 	  second=0;
    056C 2422      CLR	R2
    056D 92200100  STS	second,R2
(0288)       TCCR0=0x00;
    056F BE23      OUT	0x33,R2
(0289) 	//**************************************  
(0290) 	  delay(65000);                       //还不明白,有待继续考虑?????????
    0570 EE08      LDI	R16,0xE8
    0571 EF1D      LDI	R17,0xFD
    0572 DB13      RCALL	_delay
(0291)       if(ks()==0xff) break;      
    0573 DFC1      RCALL	_ks
    0574 3F0F      CPI	R16,0xFF
    0575 F761      BNE	0x0562
    0576 C02D      RJMP	0x05A4
(0292) 	//*********************************  
(0293)      }
(0294)     while(1)
(0295)     {
(0296) 	 if(ks()==0xff)
    0577 DFBD      RCALL	_ks
    0578 3F0F      CPI	R16,0xFF
    0579 F551      BNE	0x05A4
(0297) 	 {
(0298)       key=scan_key();
    057A DB5B      RCALL	_scan_key
    057B 2EA0      MOV	R10,R16
(0299)       lcd_buff[b]=key;
    057C E089      LDI	R24,0x9
    057D E091      LDI	R25,1
    057E 2FE6      MOV	R30,R22
    057F 27FF      CLR	R31
    0580 0FE8      ADD	R30,R24
    0581 1FF9      ADC	R31,R25
    0582 82A0      STD	Z+0,R10
(0300)       lcd_time();
    0583 DE7D      RCALL	_lcd_time
(0301)       delay(65000);
    0584 EE08      LDI	R16,0xE8
    0585 EF1D      LDI	R17,0xFD
    0586 DAFF      RCALL	_delay
(0302)       b++;
    0587 9563      INC	R22
(0303)       if(b>3)//再怎么按也无效
    0588 E083      LDI	R24,3
    0589 1786      CP	R24,R22
    058A F4C8      BCC	0x05A4
(0304) 	  {
(0305) 	    hour=lcd_buff[0]*10+lcd_buff[1];
    058B 90200109  LDS	R2,lcd_buff
    058D E08A      LDI	R24,0xA
    058E 9D82      MUL	R24,R2
    058F 9020010A  LDS	R2,lcd_buff+1
    0591 2C30      MOV	R3,R0
    0592 0C32      ADD	R3,R2
    0593 92300102  STS	hour,R3
(0306) 	    minute=lcd_buff[2]*10+lcd_buff[3];
    0595 9020010B  LDS	R2,lcd_buff+2
    0597 9D82      MUL	R24,R2
    0598 9020010C  LDS	R2,lcd_buff+3
    059A 2C30      MOV	R3,R0
    059B 0C32      ADD	R3,R2
    059C 92300101  STS	minute,R3
(0307) 	    TCCR0=0x05;//128分频
    059E E085      LDI	R24,5
    059F BF83      OUT	0x33,R24
(0308) 	    TCNT0=0x00;
    05A0 2422      CLR	R2
    05A1 BE22      OUT	0x32,R2
(0309)         b=0;
    05A2 2766      CLR	R22
(0310) 	    break;
    05A3 C001      RJMP	0x05A5
    05A4 CFD2      RJMP	0x0577
    05A5 DF8F      RCALL	_ks
    05A6 3F0F      CPI	R16,0xFF
    05A7 F421      BNE	0x05AC
    05A8 DB2D      RCALL	_scan_key
    05A9 300A      CPI	R16,0xA
    05AA F409      BNE	0x05AC
    05AB CFB6      RJMP	0x0562
    05AC C06E      RJMP	0x061B
(0311) 	  }
(0312)      }
(0313)     }
(0314)    }
(0315)    while((ks()==0xff)&&(scan_key()==11))     //置日历和星期//按下后,其显年,月,日,置0,星期置1
(0316)    {
(0317) 	  flag=1;       
    05AD E081      LDI	R24,1
    05AE 93800108  STS	flag,R24
(0318)       for(;;)
(0319)       {
(0320)       lcd_buff1[0]=0; 
    05B0 2422      CLR	R2
    05B1 9220010D  STS	lcd_buff1,R2
(0321) 	  lcd_buff1[1]=0;
    05B3 9220010E  STS	lcd_buff1+1,R2
(0322) 	  lcd_buff1[2]=0;
    05B5 9220010F  STS	lcd_buff1+2,R2
(0323) 	  lcd_buff1[3]=0;
    05B7 92200110  STS	lcd_buff1+3,R2
(0324) 	  lcd_buff1[4]=0;
    05B9 92200111  STS	0x111,R2
(0325) 	  lcd_buff1[5]=0;
    05BB 92200112  STS	0x112,R2
(0326) 	  lcd_buff1[6]=0;
    05BD 92200113  STS	0x113,R2
(0327) 	  lcd_buff1[7]=0;
    05BF 92200114  STS	0x114,R2
(0328) 	  lcd_buff1[8]=1;
    05C1 E081      LDI	R24,1
    05C2 93800115  STS	0x115,R24
(0329) 	  lcd_time1(); //显示年月,日,星期
    05C4 DEB2      RCALL	_lcd_time1
(0330) 	  delay(65000);
    05C5 EE08      LDI	R16,0xE8
    05C6 EF1D      LDI	R17,0xFD
    05C7 DABE      RCALL	_delay
(0331)       if(ks()==0xff)//同上,有待考虑
    05C8 DF6C      RCALL	_ks
    05C9 3F0F      CPI	R16,0xFF
    05CA F729      BNE	0x05B0
    05CB C04E      RJMP	0x061A
(0332)       break;
(0333)       }
(0334) 	  while(1)
(0335) 	  {
(0336) 	    if(ks()==0xff)  //有键按下
    05CC DF68      RCALL	_ks
    05CD 3F0F      CPI	R16,0xFF
    05CE F009      BEQ	0x05D0
    05CF C04A      RJMP	0x061A
(0337)     {
(0338)          key=scan_key();
    05D0 DB05      RCALL	_scan_key
    05D1 2EA0      MOV	R10,R16
(0339)          lcd_buff1[a]=key;
    05D2 E08D      LDI	R24,0xD
    05D3 E091      LDI	R25,1
    05D4 2FE4      MOV	R30,R20
    05D5 27FF      CLR	R31
    05D6 0FE8      ADD	R30,R24
    05D7 1FF9      ADC	R31,R25
    05D8 82A0      STD	Z+0,R10
(0340) 	     lcd_time1();
    05D9 DE9D      RCALL	_lcd_time1
(0341)          delay(65000);
    05DA EE08      LDI	R16,0xE8
    05DB EF1D      LDI	R17,0xFD
    05DC DAA9      RCALL	_delay
(0342)          a++;
    05DD 9543      INC	R20
(0343)     	 if(a>8)    
    05DE E088      LDI	R24,0x8
    05DF 1784      CP	R24,R20
    05E0 F5C8      BCC	0x061A
(0344) 	     {
(0345)   	       year=lcd_buff1[0]*1000+lcd_buff1[1]*100+lcd_buff1[2]*10+lcd_buff1[3];
    05E1 9020010E  LDS	R2,lcd_buff1+1
    05E3 E684      LDI	R24,0x64
    05E4 9D82      MUL	R24,R2
    05E5 0110      MOVW	R2,R0
    05E6 9120010D  LDS	R18,lcd_buff1
    05E8 2733      CLR	R19
    05E9 EE08      LDI	R16,0xE8
    05EA E013      LDI	R17,3
    05EB 940E065E  CALL	empy16s
    05ED 0128      MOVW	R4,R16
    05EE 0C42      ADD	R4,R2
    05EF 1C53      ADC	R5,R3
    05F0 9020010F  LDS	R2,lcd_buff1+2
    05F2 E08A      LDI	R24,0xA
    05F3 9D82      MUL	R24,R2
    05F4 0C40      ADD	R4,R0
    05F5 1C51      ADC	R5,R1
    05F6 90200110  LDS	R2,lcd_buff1+3
    05F8 2433      CLR	R3
    05F9 0C42      ADD	R4,R2
    05FA 1C53      ADC	R5,R3
    05FB 92500107  STS	year+1,R5
    05FD 92400106  STS	year,R4
(0346) 	       month=lcd_buff1[4]*10+lcd_buff1[5];
    05FF 90200111  LDS	R2,0x111
    0601 9D82      MUL	R24,R2
    0602 90200112  LDS	R2,0x112
    0604 2C30      MOV	R3,R0
    0605 0C32      ADD	R3,R2
    0606 92300105  STS	month,R3
(0347) 	       days=lcd_buff1[6]*10+lcd_buff1[7];
    0608 90200113  LDS	R2,0x113
    060A 9D82      MUL	R24,R2
    060B 90200114  LDS	R2,0x114
    060D 2C30      MOV	R3,R0
    060E 0C32      ADD	R3,R2
    060F 92300104  STS	days,R3
(0348) 	       day=lcd_buff1[8];
    0611 90200115  LDS	R2,0x115
    0613 92200103  STS	day,R2
(0349)                a=0;
    0615 2744      CLR	R20
(0350) 	       flag=0; //见显示部分
    0616 2422      CLR	R2
    0617 92200108  STS	flag,R2
(0351) 	       break;
FILE: <library>
    0619 C001      RJMP	0x061B
    061A CFB1      RJMP	0x05CC
    061B DF19      RCALL	_ks
    061C 3F0F      CPI	R16,0xFF
    061D F421      BNE	0x0622
    061E DAB7      RCALL	_scan_key
    061F 300B      CPI	R16,0xB
    0620 F409      BNE	0x0622
    0621 CF8B      RJMP	0x05AD
    0622 CF82      RJMP	0x05A5
    0623 9508      RET
mod16s:
    0624 9468      BSET	6
    0625 92DA      ST	R13,-Y
    0626 2ED1      MOV	R13,R17
    0627 C004      RJMP	0x062C
div16s:
    0628 94E8      BCLR	6
    0629 92DA      ST	R13,-Y
    062A 2ED1      MOV	R13,R17
    062B 26D3      EOR	R13,R19
    062C FF17      SBRS	R17,7
    062D C004      RJMP	0x0632
    062E 9510      COM	R17
    062F 9500      COM	R16
    0630 5F0F      SUBI	R16,0xFF
    0631 4F1F      SBCI	R17,0xFF
    0632 FF37      SBRS	R19,7
    0633 C004      RJMP	0x0638
    0634 9530      COM	R19
    0635 9520      COM	R18
    0636 5F2F      SUBI	R18,0xFF
    0637 4F3F      SBCI	R19,0xFF
    0638 940E0645  CALL	xdiv16u
    063A FED7      SBRS	R13,7
    063B C004      RJMP	0x0640
    063C 9510      COM	R17
    063D 9500      COM	R16
    063E 5F0F      SUBI	R16,0xFF
    063F 4F1F      SBCI	R17,0xFF
    0640 90D9      LD	R13,Y+
    0641 9508      RET
mod16u:
    0642 9468      BSET	6
    0643 C001      RJMP	xdiv16u
div16u:
    0644 94E8      BCLR	6
xdiv16u:
    0645 92EA      ST	R14,-Y
    0646 92FA      ST	R15,-Y
    0647 938A      ST	R24,-Y
    0648 24EE      CLR	R14
    0649 24FF      CLR	R15
    064A E180      LDI	R24,0x10
    064B 0F00      LSL	R16
    064C 1F11      ROL	R17
    064D 1CEE      ROL	R14
    064E 1CFF      ROL	R15
    064F 16E2      CP	R14,R18
    0650 06F3      CPC	R15,R19
    0651 F018      BCS	0x0655
    0652 1AE2      SUB	R14,R18
    0653 0AF3      SBC	R15,R19
    0654 9503      INC	R16
    0655 958A      DEC	R24
    0656 F7A1      BNE	0x064B
    0657 F416      BRTC	0x065A
    0658 2D0E      MOV	R16,R14
    0659 2D1F      MOV	R17,R15
    065A 9189      LD	R24,Y+
    065B 90F9      LD	R15,Y+
    065C 90E9      LD	R14,Y+
    065D 9508      RET
empy16s:
    065E 920A      ST	R0,-Y
    065F 921A      ST	R1,-Y
    0660 938A      ST	R24,-Y
    0661 939A      ST	R25,-Y
    0662 9F02      MUL	R16,R18
    0663 01C0      MOVW	R24,R0
    0664 9F12      MUL	R17,R18
    0665 0D90      ADD	R25,R0
    0666 9F03      MUL	R16,R19
    0667 0D90      ADD	R25,R0
    0668 018C      MOVW	R16,R24
    0669 9199      LD	R25,Y+
    066A 9189      LD	R24,Y+
    066B 9019      LD	R1,Y+
    066C 9009      LD	R0,Y+
    066D 9508      RET
pop_gset2:
    066E E0E2      LDI	R30,2
    066F 940C0680  JMP	pop
pop_gset3:
    0671 E0E4      LDI	R30,4
    0672 940C0680  JMP	pop
push_gset5:
    0674 92FA      ST	R15,-Y
    0675 92EA      ST	R14,-Y
push_gset4:
    0676 92DA      ST	R13,-Y
    0677 92CA      ST	R12,-Y
push_gset3:
    0678 92BA      ST	R11,-Y
    0679 92AA      ST	R10,-Y
push_gset2:
    067A 937A      ST	R23,-Y
    067B 936A      ST	R22,-Y
push_gset1:
    067C 935A      ST	R21,-Y
    067D 934A      ST	R20,-Y
    067E 9508      RET
pop_gset1:
    067F E0E1      LDI	R30,1
pop:
    0680 9149      LD	R20,Y+
    0681 9159      LD	R21,Y+
    0682 FDE0      SBRC	R30,0
    0683 9508      RET
    0684 9169      LD	R22,Y+
    0685 9179      LD	R23,Y+
    0686 FDE1      SBRC	R30,1
    0687 9508      RET
    0688 90A9      LD	R10,Y+
    0689 90B9      LD	R11,Y+
    068A FDE2      SBRC	R30,2
    068B 9508      RET
    068C 90C9      LD	R12,Y+
    068D 90D9      LD	R13,Y+
    068E FDE3      SBRC	R30,3
    068F 9508      RET
    0690 90E9      LD	R14,Y+
    0691 90F9      LD	R15,Y+
    0692 9508      RET
push_lset:
    0693 93FA      ST	R31,-Y
    0694 93EA      ST	R30,-Y
    0695 93BA      ST	R27,-Y
    0696 93AA      ST	R26,-Y
    0697 939A      ST	R25,-Y
    0698 938A      ST	R24,-Y
    0699 933A      ST	R19,-Y
    069A 932A      ST	R18,-Y
    069B 931A      ST	R17,-Y
    069C 930A      ST	R16,-Y
    069D 929A      ST	R9,-Y
    069E 928A      ST	R8,-Y
    069F 927A      ST	R7,-Y
    06A0 926A      ST	R6,-Y
    06A1 925A      ST	R5,-Y
    06A2 924A      ST	R4,-Y
    06A3 923A      ST	R3,-Y
    06A4 922A      ST	R2,-Y
    06A5 921A      ST	R1,-Y
    06A6 920A      ST	R0,-Y
    06A7 B60F      IN	R0,0x3F
    06A8 920A      ST	R0,-Y
    06A9 9508      RET
pop_lset:
    06AA 9009      LD	R0,Y+
    06AB BE0F      OUT	0x3F,R0
    06AC 9009      LD	R0,Y+
    06AD 9019      LD	R1,Y+
    06AE 9029      LD	R2,Y+
    06AF 9039      LD	R3,Y+
    06B0 9049      LD	R4,Y+
    06B1 9059      LD	R5,Y+
    06B2 9069      LD	R6,Y+
    06B3 9079      LD	R7,Y+
    06B4 9089      LD	R8,Y+
    06B5 9099      LD	R9,Y+
    06B6 9109      LD	R16,Y+
    06B7 9119      LD	R17,Y+
    06B8 9129      LD	R18,Y+
    06B9 9139      LD	R19,Y+
    06BA 9189      LD	R24,Y+
    06BB 9199      LD	R25,Y+
    06BC 91A9      LD	R26,Y+
    06BD 91B9      LD	R27,Y+
    06BE 91E9      LD	R30,Y+
    06BF 91F9      LD	R31,Y+
    06C0 9508      RET
lsl8:
    06C1 2311      TST	R17
    06C2 F019      BEQ	0x06C6
    06C3 0F00      LSL	R16
    06C4 951A      DEC	R17
    06C5 CFFB      RJMP	lsl8
    06C6 9508      RET

⌨️ 快捷键说明

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