📄 rtc.lis
字号:
040A 7D2F mov R23,R29
040C 605F subi R22,240 ; offset = 16
040E 7F4F sbci R23,255
0410 .dbline 259
0410 ; (*Flag)|=0x80;}
0410 E62F mov R30,R22
0412 F72F mov R31,R23
0414 8081 ldd R24,z+0
0416 8068 ori R24,128
0418 8083 std z+0,R24
041A .dbline 259
041A 02C0 rjmp L117
041C L116:
041C .dbline 260
041C ; else Flag--;
041C 6150 subi R22,1
041E 7040 sbci R23,0
0420 L117:
0420 .dbline 261
0420 ; (*Flag)|=0x80; //当前位加上小数点显示
0420 E62F mov R30,R22
0422 F72F mov R31,R23
0424 8081 ldd R24,z+0
0426 8068 ori R24,128
0428 8083 std z+0,R24
042A .dbline 262
042A ; (*(Flag+1))&=0x7f; //下一位去掉点小数点显示
042A 3196 adiw R30,1
042C 8081 ldd R24,z+0
042E 8F77 andi R24,127
0430 8083 std z+0,R24
0432 .dbline 263
0432 ; break;
0432 03C0 rjmp L103
0434 L119:
0434 .dbline 264
0434 ; case 0x40:Enter_Flag=1;break;//"确定"键处理
0434 81E0 ldi R24,1
0436 80930100 sts _Enter_Flag,R24
043A .dbline 264
043A .dbline 266
043A ; // case 0x80:Enter_Flag=1;break; //测试用
043A ; default:break;}
043A L103:
043A .dbline 268
043A L96:
043A .dbline 233
043A 20900100 lds R2,_Enter_Flag
043E 2220 tst R2
0440 09F4 brne X11
0442 5BCF rjmp L95
0444 X11:
0444 .dbline 269
0444 ;
0444 ; }
0444 ; Enter_Flag=0; //按键状态恢复
0444 2224 clr R2
0446 20920100 sts _Enter_Flag,R2
044A .dbline 270
044A ; temp2[0]=0x00; //秒,默认从00开始计时
044A 2C8A std y+20,R2
044C .dbline 271
044C ; temp2[1]=(temp1[11]<<4)|temp1[12];//分
044C 2F84 ldd R2,y+15
044E 8E85 ldd R24,y+14
0450 8F70 andi R24,#0x0F
0452 8295 swap R24
0454 8229 or R24,R2
0456 8D8B std y+21,R24
0458 .dbline 272
0458 ; temp2[2]=(temp1[9]<<4)|temp1[10]; //时
0458 2D84 ldd R2,y+13
045A 8C85 ldd R24,y+12
045C 8F70 andi R24,#0x0F
045E 8295 swap R24
0460 8229 or R24,R2
0462 8E8B std y+22,R24
0464 .dbline 273
0464 ; temp2[3]=temp1[8]; //周
0464 2B84 ldd R2,y+11
0466 2F8A std y+23,R2
0468 .dbline 274
0468 ; temp2[4]=(temp1[6]<<4)|temp1[7]; //日
0468 2A84 ldd R2,y+10
046A 8985 ldd R24,y+9
046C 8F70 andi R24,#0x0F
046E 8295 swap R24
0470 8229 or R24,R2
0472 888F std y+24,R24
0474 .dbline 275
0474 ; temp2[5]=(temp1[4]<<4)|temp1[5]; //月
0474 2884 ldd R2,y+8
0476 8F81 ldd R24,y+7
0478 8F70 andi R24,#0x0F
047A 8295 swap R24
047C 8229 or R24,R2
047E 898F std y+25,R24
0480 .dbline 276
0480 ; temp2[6]=(temp1[2]<<4)|temp1[3]; //年
0480 2E80 ldd R2,y+6
0482 8D81 ldd R24,y+5
0484 8F70 andi R24,#0x0F
0486 8295 swap R24
0488 8229 or R24,R2
048A 8A8F std y+26,R24
048C .dbline 277
048C ; Write_Nbyte(SD2303,0x00,temp2,7); //初始化设定时间
048C 87E0 ldi R24,7
048E 8A83 std y+2,R24
0490 8C2F mov R24,R28
0492 9D2F mov R25,R29
0494 4496 adiw R24,20
0496 9983 std y+1,R25
0498 8883 std y+0,R24
049A 2227 clr R18
049C 04E6 ldi R16,100
049E 74DE rcall _Write_Nbyte
04A0 .dbline 278
04A0 ; }
04A0 L93:
04A0 .dbline 279
04A0 ; if(Key==0xfd) //"闹铃设置"键按下
04A0 8A2D mov R24,R10
04A2 8D3F cpi R24,253
04A4 09F0 breq X12
04A6 DDC0 rjmp L141
04A8 X12:
04A8 .dbline 280
04A8 ; {temp1[9]|=0x80;
04A8 .dbline 280
04A8 8C85 ldd R24,y+12
04AA 8068 ori R24,128
04AC 8C87 std y+12,R24
04AE .dbline 281
04AE ; Flag=temp1+9; //定时小时高位设置提示
04AE 6C2F mov R22,R28
04B0 7D2F mov R23,R29
04B2 645F subi R22,244 ; offset = 12
04B4 7F4F sbci R23,255
04B6 9FC0 rjmp L146
04B8 L145:
04B8 .dbline 283
04B8 ; while(!Enter_Flag) //直到按下确定键方停止
04B8 ; {for(i=0;i<50;i++)
04B8 .dbline 283
04B8 4427 clr R20
04BA 06C0 rjmp L151
04BC L148:
04BC .dbline 284
04BC 0C2F mov R16,R28
04BE 1D2F mov R17,R29
04C0 0D5F subi R16,253 ; offset = 3
04C2 1F4F sbci R17,255
04C4 A9DD rcall _Display
04C6 L149:
04C6 .dbline 283
04C6 4395 inc R20
04C8 L151:
04C8 .dbline 283
04C8 4233 cpi R20,50
04CA C0F3 brlo L148
04CC .dbline 285
04CC ; Display(temp1);
04CC ; Key=~PINB;
04CC A6B2 in R10,0x16
04CE A094 com R10
04D0 .dbline 286
04D0 ; switch(Key)
04D0 CA2C mov R12,R10
04D2 DD24 clr R13
04D4 8C2D mov R24,R12
04D6 9D2D mov R25,R13
04D8 8031 cpi R24,16
04DA E0E0 ldi R30,0
04DC 9E07 cpc R25,R30
04DE 09F4 brne X13
04E0 43C0 rjmp L161
04E2 X13:
04E2 80E1 ldi R24,16
04E4 8C15 cp R24,R12
04E6 9D05 cpc R25,R13
04E8 94F0 brlt L173
04EA L172:
04EA 8C2D mov R24,R12
04EC 9D2D mov R25,R13
04EE 8430 cpi R24,4
04F0 E0E0 ldi R30,0
04F2 9E07 cpc R25,R30
04F4 01F1 breq L155
04F6 8430 cpi R24,4
04F8 E0E0 ldi R30,0
04FA 9E07 cpc R25,R30
04FC 0CF4 brge X14
04FE 7BC0 rjmp L153
0500 X14:
0500 L174:
0500 8C2D mov R24,R12
0502 9D2D mov R25,R13
0504 8830 cpi R24,8
0506 E0E0 ldi R30,0
0508 9E07 cpc R25,R30
050A 09F1 breq L158
050C 74C0 rjmp L153
050E L173:
050E 8C2D mov R24,R12
0510 9D2D mov R25,R13
0512 8032 cpi R24,32
0514 E0E0 ldi R30,0
0516 9E07 cpc R25,R30
0518 09F4 brne X15
051A 49C0 rjmp L166
051C X15:
051C 8032 cpi R24,32
051E E0E0 ldi R30,0
0520 9E07 cpc R25,R30
0522 0CF4 brge X16
0524 68C0 rjmp L153
0526 X16:
0526 L175:
0526 8C2D mov R24,R12
0528 9D2D mov R25,R13
052A 8034 cpi R24,64
052C E0E0 ldi R30,0
052E 9E07 cpc R25,R30
0530 09F4 brne X17
0532 5EC0 rjmp L171
0534 X17:
0534 60C0 rjmp L153
0536 X1:
0536 .dbline 287
0536 ; {case 0x04: //"+"按键处理
0536 L155:
0536 .dbline 288
0536 ; (*Flag)++;
0536 E62F mov R30,R22
0538 F72F mov R31,R23
053A 8081 ldd R24,z+0
053C 8F5F subi R24,255 ; addi 1
053E 8083 std z+0,R24
0540 .dbline 289
0540 ; if(((*Flag)&0x7f)==10) *Flag=0|0x80;
0540 8F77 andi R24,127
0542 8A30 cpi R24,10
0544 09F0 breq X18
0546 57C0 rjmp L153
0548 X18:
0548 .dbline 289
0548 80E8 ldi R24,128
054A 8083 std z+0,R24
054C .dbline 290
054C ; break;
054C 54C0 rjmp L153
054E L158:
054E .dbline 292
054E ; case 0x08: //"-"按键处理
054E ; if(((*Flag)&0x7f)==0) *Flag=10|0x80;
054E E62F mov R30,R22
0550 F72F mov R31,R23
0552 8081 ldd R24,z+0
0554 8F77 andi R24,127
0556 11F4 brne L159
0558 .dbline 292
0558 8AE8 ldi R24,138
055A 8083 std z+0,R24
055C L159:
055C .dbline 293
055C ; (*Flag)--;
055C E62F mov R30,R22
055E F72F mov R31,R23
0560 8081 ldd R24,z+0
0562 8150 subi R24,1
0564 8083 std z+0,R24
0566 .dbline 294
0566 ; break;
0566 47C0 rjmp L153
0568 L161:
0568 .dbline 296
0568 ; case 0x10: //"下一位"按键处理
0568 ; Flag++;
0568 6F5F subi R22,255 ; offset = 1
056A 7F4F sbci R23,255
056C .dbline 297
056C ; (*(Flag-1))&=0x7f; //上一位去掉小数点显示
056C 862F mov R24,R22
056E 972F mov R25,R23
0570 0197 sbiw R24,1
0572 E82F mov R30,R24
0574 F92F mov R31,R25
0576 8081 ldd R24,z+0
0578 8F77 andi R24,127
057A 8083 std z+0,R24
057C .dbline 298
057C ; (*Flag)|=0x80; //当前位加上小数点显示
057C E62F mov R30,R22
057E F72F mov R31,R23
0580 8081 ldd R24,z+0
0582 8068 ori R24,128
0584 8083 std z+0,R24
0586 .dbline 299
0586 ; if(Flag==temp1+13)
0586 8C2F mov R24,R28
0588 9D2F mov R25,R29
058A 4096 adiw R24,16
058C E817 cp R30,R24
058E F907 cpc R31,R25
0590 09F0 breq X19
0592 31C0 rjmp L153
0594 X19:
0594 .dbline 300
0594 ; {(*Flag)&=0x7f;
0594 .dbline 300
0594 8081 ldd R24,z+0
0596 8F77 andi R24,127
0598 8083 std z+0,R24
059A .dbline 301
059A ; Flag=temp1+9;
059A 6C2F mov R22,R28
059C 7D2F mov R23,R29
059E 645F subi R22,244 ; offset = 12
05A0 7F4F sbci R23,255
05A2 .dbline 302
05A2 ; (*Flag)|=0x80;}
05A2 E62F mov R30,R22
05A4 F72F mov R31,R23
05A6 8081 ldd R24,z+0
05A8 8068 ori R24,128
05AA 8083 std z+0,R24
05AC .dbline 302
05AC .dbline 303
05AC ; break;
05AC 24C0 rjmp L153
05AE L166:
05AE .dbline 305
05AE ; case 0x20: //"上一位"按
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -