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

📄 万年历.lis

📁 PS2控制代码123456789
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 044C 00911400          lds R16,_temp
 0450 1127              clr R17
 0452 0E940000          xcall mod16s
 0456 F801              movw R30,R16
 0458 80E0              ldi R24,<_table1
 045A 90E0              ldi R25,>_table1
 045C E80F              add R30,R24
 045E F91F              adc R31,R25
 0460 2080              ldd R2,z+0
 0462 3324              clr R3
 0464 3B82              std y+3,R3
 0466 2A82              std y+2,R2
 0468 80E1              ldi R24,16
 046A 90E0              ldi R25,0
 046C 9983              std y+1,R25
 046E 8883              std y+0,R24
 0470 21E1              ldi R18,17
 0472 30E0              ldi R19,0
 0474 09EF              ldi R16,249
 0476 10E0              ldi R17,0
 0478 0E940000          xcall _write_ASCII
 047C                   .dbline -2
 047C           L1:
 047C 2496              adiw R28,4
 047E                   .dbline 0 ; func end
 047E 0895              ret
 0480                   .dbend
 0480                   .dbfunc e get_days _get_days fc
 0480           ;           tian -> R20
 0480           ;            yue -> R20
                        .even
 0480           _get_days::
 0480 0E940000          xcall push_gset1
 0484 402F              mov R20,R16
 0486                   .dbline -1
 0486                   .dbline 54
 0486           ; 
 0486           ; 
 0486           ; }
 0486           ; /**********************************************/
 0486           ;               /* 确定天数*/
 0486           ; /**********************************************/
 0486           ; unsigned char get_days(unsigned char yue)
 0486           ; {
 0486                   .dbline 56
 0486           ;     unsigned char tian;
 0486           ;     switch(yue)
 0486 5527              clr R21
 0488 4130              cpi R20,1
 048A E0E0              ldi R30,0
 048C 5E07              cpc R21,R30
 048E 69F1              breq L14
 0490 4230              cpi R20,2
 0492 E0E0              ldi R30,0
 0494 5E07              cpc R21,R30
 0496 69F1              breq L16
 0498 4330              cpi R20,3
 049A E0E0              ldi R30,0
 049C 5E07              cpc R21,R30
 049E 29F1              breq L14
 04A0 4430              cpi R20,4
 04A2 E0E0              ldi R30,0
 04A4 5E07              cpc R21,R30
 04A6 19F1              breq L15
 04A8 4530              cpi R20,5
 04AA E0E0              ldi R30,0
 04AC 5E07              cpc R21,R30
 04AE E9F0              breq L14
 04B0 4630              cpi R20,6
 04B2 E0E0              ldi R30,0
 04B4 5E07              cpc R21,R30
 04B6 D9F0              breq L15
 04B8 4730              cpi R20,7
 04BA E0E0              ldi R30,0
 04BC 5E07              cpc R21,R30
 04BE A9F0              breq L14
 04C0 4830              cpi R20,8
 04C2 E0E0              ldi R30,0
 04C4 5E07              cpc R21,R30
 04C6 89F0              breq L14
 04C8 4930              cpi R20,9
 04CA E0E0              ldi R30,0
 04CC 5E07              cpc R21,R30
 04CE 79F0              breq L15
 04D0 4A30              cpi R20,10
 04D2 E0E0              ldi R30,0
 04D4 5E07              cpc R21,R30
 04D6 49F0              breq L14
 04D8 4B30              cpi R20,11
 04DA E0E0              ldi R30,0
 04DC 5E07              cpc R21,R30
 04DE 39F0              breq L15
 04E0 4C30              cpi R20,12
 04E2 E0E0              ldi R30,0
 04E4 5E07              cpc R21,R30
 04E6 09F0              breq L14
 04E8 26C0              xjmp L12
 04EA           X0:
 04EA                   .dbline 57
 04EA           ;     {
 04EA           L14:
 04EA                   .dbline 64
 04EA           ;       case 1:
 04EA           ;       case 3:
 04EA           ;       case 5:
 04EA           ;       case 7:
 04EA           ;       case 8:
 04EA           ;       case 10:
 04EA           ;       case 12:tian=31;break;
 04EA 4FE1              ldi R20,31
 04EC                   .dbline 64
 04EC 24C0              xjmp L12
 04EE           L15:
 04EE                   .dbline 68
 04EE           ;       case 4:
 04EE           ;       case 6:
 04EE           ;       case 9:
 04EE           ;       case 11:tian=30;break;
 04EE 4EE1              ldi R20,30
 04F0                   .dbline 68
 04F0 22C0              xjmp L12
 04F2           L16:
 04F2                   .dbline 69
 04F2           ;       case 2: if((year%4==0&&year%100!=0)||(year%400==0))tian=29;else tian=28;break;
 04F2 80911500          lds R24,_year
 04F6 90911600          lds R25,_year+1
 04FA 8370              andi R24,3
 04FC 9070              andi R25,0
 04FE 8030              cpi R24,0
 0500 8907              cpc R24,R25
 0502 59F4              brne L20
 0504           X1:
 0504 24E6              ldi R18,100
 0506 30E0              ldi R19,0
 0508 00911500          lds R16,_year
 050C 10911600          lds R17,_year+1
 0510 0E940000          xcall mod16u
 0514 0030              cpi R16,0
 0516 0107              cpc R16,R17
 0518 59F4              brne L19
 051A           X2:
 051A           L20:
 051A 20E9              ldi R18,400
 051C 31E0              ldi R19,1
 051E 00911500          lds R16,_year
 0522 10911600          lds R17,_year+1
 0526 0E940000          xcall mod16u
 052A 0030              cpi R16,0
 052C 0107              cpc R16,R17
 052E 11F4              brne L17
 0530           X3:
 0530           L19:
 0530                   .dbline 69
 0530 4DE1              ldi R20,29
 0532 01C0              xjmp L12
 0534           L17:
 0534                   .dbline 69
 0534 4CE1              ldi R20,28
 0536                   .dbline 69
 0536                   .dbline 70
 0536           ;       default:break;
 0536           L12:
 0536                   .dbline 72
 0536           ;      }
 0536           ;      return  tian;
 0536 042F              mov R16,R20
 0538                   .dbline -2
 0538           L10:
 0538 0E940000          xcall pop_gset1
 053C                   .dbline 0 ; func end
 053C 0895              ret
 053E                   .dbsym r tian 20 c
 053E                   .dbsym r yue 20 c
 053E                   .dbend
 053E                   .dbfunc e timer0_init _timer0_init fV
                        .even
 053E           _timer0_init::
 053E                   .dbline -1
 053E                   .dbline 79
 053E           ; }
 053E           ; 
 053E           ; /**********************************************/
 053E           ;        /* 定时器初始化 1秒*/
 053E           ; /**********************************************/
 053E           ; void timer0_init(void)
 053E           ; {
 053E                   .dbline 80
 053E           ;  TCCR0 = 0x00; //stop
 053E 2224              clr R2
 0540 23BE              out 0x33,R2
 0542                   .dbline 81
 0542           ;  ASSR = 0x08; //set async mode
 0542 88E0              ldi R24,8
 0544 80BF              out 0x30,R24
 0546                   .dbline 82
 0546           ;  TCNT0 = 0x00; //set count
 0546 22BE              out 0x32,R2
 0548                   .dbline 83
 0548           ;  TCCR0 = 0x05; //start timer 128分频
 0548 85E0              ldi R24,5
 054A 83BF              out 0x33,R24
 054C                   .dbline -2
 054C           L21:
 054C                   .dbline 0 ; func end
 054C 0895              ret
 054E                   .dbend
                        .area vector(rom, abs)
                        .org 64
 0040 0C94A702          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 054E                   .dbfile F:\调试\万年历.c
 054E                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 054E           _timer0_ovf_isr::
 054E 0E940000          xcall push_lset
 0552                   .dbline -1
 0552                   .dbline 90
 0552           ; }
 0552           ; /**********************************************/
 0552           ;        /* 定时器中断服务程序*/
 0552           ; /**********************************************/
 0552           ; #pragma interrupt_handler timer0_ovf_isr:17
 0552           ; void timer0_ovf_isr(void)
 0552           ; {
 0552                   .dbline 91
 0552           ;  second=second+1;
 0552 80910E00          lds R24,_second
 0556 8F5F              subi R24,255    ; addi 1
 0558 80930E00          sts _second,R24
 055C                   .dbline 92
 055C           ;  if(second==60)
 055C 8C33              cpi R24,60
 055E 09F0              breq X4
 0560 48C0              xjmp L23
 0562           X4:
 0562                   .dbline 93
 0562           ;  {
 0562                   .dbline 94
 0562           ;     second=0;
 0562 2224              clr R2
 0564 20920E00          sts _second,R2
 0568                   .dbline 95
 0568           ;       minute=minute+1;
 0568 80910F00          lds R24,_minute
 056C 8F5F              subi R24,255    ; addi 1
 056E 80930F00          sts _minute,R24
 0572                   .dbline 96
 0572           ;       if(minute==60)
 0572 8C33              cpi R24,60
 0574 09F0              breq X5
 0576 3DC0              xjmp L25
 0578           X5:
 0578                   .dbline 97
 0578           ;       {
 0578                   .dbline 98
 0578           ;          minute=0;
 0578 20920F00          sts _minute,R2
 057C                   .dbline 99
 057C           ;          hour=hour+1;
 057C 80911000          lds R24,_hour
 0580 8F5F              subi R24,255    ; addi 1
 0582 80931000          sts _hour,R24
 0586                   .dbline 100
 0586           ;          if(hour==24)
 0586 8831              cpi R24,24
 0588 A1F5              brne L27
 058A                   .dbline 101
 058A           ;          {
 058A                   .dbline 102
 058A           ;                hour=0;
 058A 20921000          sts _hour,R2
 058E                   .dbline 103
 058E           ;                week=week+1;
 058E 80911100          lds R24,_week
 0592 8F5F              subi R24,255    ; addi 1
 0594 80931100          sts _week,R24
 0598                   .dbline 104
 0598           ;                if(week>7)
 0598 87E0              ldi R24,7
 059A 20901100          lds R2,_week
 059E 8215              cp R24,R2
 05A0 18F4              brsh L29
 05A2                   .dbline 105
 05A2           ;                 week=1;
 05A2 81E0              ldi R24,1
 05A4 80931100          sts _week,R24
 05A8           L29:
 05A8                   .dbline 106
 05A8           ;                 day=day+1;
 05A8 80911200          lds R24,_day
 05AC 8F5F              subi R24,255    ; addi 1
 05AE 80931200          sts _day,R24
 05B2                   .dbline 108
 05B2           ;                 
 05B2           ;                 if(day>get_days(month))
 05B2 00911300          lds R16,_month
 05B6 64DF              xcall _get_days
 05B8 20901200          lds R2,_day
 05BC 0215              cp R16,R2
 05BE C8F4              brsh L31
 05C0                   .dbline 109
 05C0           ;                  {
 05C0                   .dbline 110
 05C0           ;                   day=1;
 05C0 81E0              ldi R24,1
 05C2 80931200          sts _day,R24
 05C6                   .dbline 111
 05C6           ;                   month=month+1;
 05C6 80911300          lds R24,_month
 05CA 8F5F              subi R24,255    ; addi 1
 05CC 80931300          sts _month,R24
 05D0                   .dbline 112
 05D0           ;                       if(month>12)
 05D0 8CE0              ldi R24,12
 05D2 20901300          lds R2,_month
 05D6 8215              cp R24,R2
 05D8 60F4              brsh L33
 05DA                   .dbline 113
 05DA           ;                        {
 05DA                   .dbline 114
 05DA           ;                         month=1;
 05DA 81E0              ldi R24,1
 05DC 80931300          sts _month,R24
 05E0                   .dbline 115
 05E0           ;                         year=year+1;
 05E0 80911500          lds R24,_year
 05E4 90911600          lds R25,_year+1
 05E8 0196              adiw R24,1
 05EA 90931600          sts _year+1,R25
 05EE 80931500          sts _year,R24
 05F2                   .dbline 116

⌨️ 快捷键说明

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