📄 main.s
字号:
xjmp L51
L50:
.dbline 614
; else
; {
.dbline 615
; val=CompareDate();
xcall _CompareDate
movw R20,R16
.dbline 616
cpi R16,255
ldi R30,255
cpc R17,R30
breq L57
lds R2,_DayData
clr R3
cp R2,R16
cpc R3,R17
brge L55
L57:
.dbline 616
; if((val==-1) ||( val > DayData[0])) Password_alarm=TRUE;
ldi R24,1
sts _Password_alarm,R24
xjmp L56
L55:
.dbline 618
; else
; {
.dbline 619
; if(val!=Oneday)
lds R2,_Oneday
clr R3
cp R20,R2
cpc R21,R3
breq L58
.dbline 620
; {
.dbline 621
; Oneday=val;
sts _Oneday,R20
.dbline 622
; DayData[0]=DayData[0]-val;
lds R2,_DayData
clr R3
sub R2,R20
sbc R3,R21
sts _DayData,R2
.dbline 623
; EepromDayDataWr();
xcall _EepromDayDataWr
.dbline 624
; }
L58:
.dbline 625
; Password_alarm=FALSE;
clr R2
sts _Password_alarm,R2
.dbline 626
; }
L56:
.dbline 627
; }
L51:
.dbline 628
L49:
.dbline -2
L47:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r val 20 I
.dbend
.dbfunc e main _main fV
; KK -> y+13
; tempPW -> y+0
; kind -> y+12
; pwloop -> y+10
; i -> y+9
; bit -> y+8
; loop -> y+6
.even
_main::
sbiw R28,17
.dbline -1
.dbline 632
; }
; }
;
; void main(void)
; {
.dbline 633
; char bit,i=0,kind=0;
clr R0
std y+9,R0
.dbline 633
std y+12,R0
.dbline 634
; uint loop=0,KK=0,pwloop=0;
clr R1
std y+7,R1
std y+6,R0
.dbline 634
std y+14,R1
std y+13,R0
.dbline 634
std y+11,R1
std y+10,R0
.dbline 636
; uchar tempPW[PASSWORDLENGHT];
; val=0;
ldi R20,0
ldi R21,0
ldi R22,0
ldi R23,0
sts _val+1,R21
sts _val,R20
sts _val+2+1,R23
sts _val+2,R22
.dbline 637
; KeyCode=0;
clr R2
sts _KeyCode,R2
.dbline 638
; DispBuffer[0]=CharFont[16];
ldi R30,<_CharFont+16
ldi R31,>_CharFont+16
lpm R30,Z
sts _DispBuffer,R30
.dbline 639
; DispBuffer[1]=CharFont[16];
ldi R30,<_CharFont+16
ldi R31,>_CharFont+16
lpm R30,Z
sts _DispBuffer+1,R30
.dbline 640
; DispBuffer[2]=CharFont[0];
ldi R30,<_CharFont
ldi R31,>_CharFont
lpm R30,Z
sts _DispBuffer+2,R30
.dbline 641
; DispBuffer[3]=CharFont[0];
ldi R30,<_CharFont
ldi R31,>_CharFont
lpm R30,Z
sts _DispBuffer+3,R30
.dbline 642
; DispBuffer[4]=CharFont[0];
ldi R30,<_CharFont
ldi R31,>_CharFont
lpm R30,Z
sts _DispBuffer+4,R30
.dbline 643
; DispBuffer[5]=0x00;
sts _DispBuffer+5,R2
.dbline 644
; SI_Count=0;
sts _SI_Count,R2
.dbline 645
; CLI(); //关中断
cli
.dbline 646
; init_devices();
xcall _init_devices
.dbline 651
;
; // timer0_init();
;
; // FactorySetup();
; ModeStatus=MODE_NOMALE;
ldi R24,1
sts _ModeStatus,R24
.dbline 652
; CurrentKey=KEY_FUNCTION;
ldi R24,67
sts _CurrentKey,R24
.dbline 653
; BackKey=KEY_FUNCTION;
sts _BackKey,R24
.dbline 654
; CurrentKind=KIND0;
clr R2
sts _CurrentKind,R2
.dbline 655
; K1Count=0;
sts _K1Count,R2
.dbline 656
; val_kind=0;
sts _val_kind,R2
.dbline 657
; Password_alarm=FALSE;
sts _Password_alarm,R2
.dbline 659
;
; EepromDateValueRd();
xcall _EepromDateValueRd
.dbline 661
; #ifdef VERSION_CONTROL
; if(DateValue[0]==0xff && DateValue[1]==0xff && DateValue[2]==0xff && DateValue[3]==0xff ) //070617 mask
lds R24,_DateValue
cpi R24,255
brne L68
lds R24,_DateValue+1
cpi R24,255
brne L68
lds R24,_DateValue+2
cpi R24,255
brne L68
lds R24,_DateValue+3
cpi R24,255
brne L68
.dbline 663
; #endif
; {
.dbline 664
; FactorySetup();
xcall _FactorySetup
.dbline 665
; val_lenght=MINVAL_LENGHT;
ldi R24,4
ldi R25,0
sts _val_lenght+1,R25
sts _val_lenght,R24
.dbline 666
; EepromICnumberWr();
xcall _EepromICnumberWr
.dbline 667
; EepromViewModeWr();
xcall _EepromViewModeWr
.dbline 668
; DS1302_Init();
xcall _DS1302_Init
.dbline 669
; EepromDateValueWr();
xcall _EepromDateValueWr
.dbline 670
; EepromDayDataWr();
xcall _EepromDayDataWr
.dbline 671
; PasswordCannel();
xcall _PasswordCannel
.dbline 672
; }
L68:
.dbline 673
; EepromICnumberRd();
xcall _EepromICnumberRd
.dbline 674
; EepromViewModeRd();
xcall _EepromViewModeRd
.dbline 675
; for(i=MAXVAL_KIND-1;i>=0;i--)
ldi R24,111
std y+9,R24
xjmp L76
L73:
.dbline 676
; {
.dbline 677
; if(KindData[i]!=0)
ldi R24,<_KindData
ldi R25,>_KindData
ldd R30,y+9
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
breq L77
.dbline 678
; {
.dbline 679
; i=i+1;
ldd R0,y+9
inc R0
std y+9,R0
.dbline 680
; break;
xjmp L75
L77:
.dbline 682
L74:
.dbline 675
ldd R0,y+9
dec R0
std y+9,R0
L76:
.dbline 675
ldd R24,y+9
cpi R24,0
brsh L73
L75:
.dbline 683
; }
; }
; val_kind=i;
ldd R0,y+9
sts _val_kind,R0
.dbline 684
; EepromPasswordRd();
xcall _EepromPasswordRd
.dbline 685
; if(Password_Enable==TRUE)
lds R24,_Password_Enable
cpi R24,1
brne L79
.dbline 686
; {
.dbline 687
; PasswordProcess();
xcall _PasswordProcess
.dbline 688
; }
L79:
.dbline 690
;
; SEI(); //开中断
sei
.dbline 692
; #ifdef VERSION_CONTROL
; WatchDog(7);
ldi R16,7
xcall _WatchDog
xjmp L82
L81:
.dbline 695
; #endif
; while(1)
; { if(KeyCode==0) KeyCode=PressKeyProcess();
.dbline 695
lds R2,_KeyCode
tst R2
brne L84
.dbline 695
xcall _PressKeyProcess
sts _KeyCode,R16
L84:
.dbline 696
; if(KeyCode!=0){
lds R2,_KeyCode
tst R2
brne X7
xjmp L86
X7:
.dbline 696
.dbline 697
; switch(KeyCode)
clr R3
std y+16,R3
std y+15,R2
movw R24,R2
cpi R24,131
ldi R30,0
cpc R25,R30
breq L91
ldi R24,131
movw R0,R2
cp R24,R2
cpc R25,R3
brlt L194
L193:
ldd R24,y+15
ldd R25,y+16
cpi R24,65
ldi R30,0
cpc R25,R30
brne X8
xjmp L182
X8:
cpi R24,67
ldi R30,0
cpc R25,R30
brne X9
xjmp L121
X9:
xjmp L89
L194:
ldd R24,y+15
ldd R25,y+16
cpi R24,192
ldi R30,0
cpc R25,R30
brne X10
xjmp L186
X10:
cpi R24,193
ldi R30,0
cpc R25,R30
brne X11
xjmp L139
X11:
cpi R24,194
ldi R30,0
cpc R25,R30
brne X12
xjmp L108
X12:
xjmp L89
X0:
.dbline 698
; {
L91:
.dbline 700
; case KEY_UP://k2
; if(ModeStatus==MODE_LENGHT)
lds R24,_ModeStatus
cpi R24,2
brne L92
.dbline 701
; {
.dbline 702
; if(val_lenght<MAXVAL_LENGHT)
lds R24,_val_lenght
lds R25,_val_lenght+1
cpi R24,15
ldi R30,39
cpc R25,R30
brsh L94
.dbline 703
; val_lenght++;
adiw R24,1
sts _val_lenght+1,R25
sts _val_lenght,R24
L94:
.dbline 704
; K1Count=5;
ldi R24,5
sts _K1Count,R24
.dbline 705
; }
xjmp L89
L92:
.dbline 706
; else if(ModeStatus==MODE_KIND)
lds R24,_ModeStatus
cpi R24,3
brne L96
.dbline 707
; {
.dbline 708
; if(val_kind<MAXVAL_KIND)
lds R24,_val_kind
cpi R24,112
brsh L98
.dbline 709
; {
.dbline 710
; KindData[val_kind]=TRUE;
ldi R24,<_KindData
ldi R25,>_KindData
lds R30,_val_kind
clr R31
add R30,R24
adc R31,R25
ldi R24,1
std z+0,R24
.dbline 711
; val_kind++;
lds R24,_val_kind
subi R24,255 ; addi 1
sts _val_kind,R24
.dbline 713
;
; }
xjmp L89
L98:
.dbline 714
; else val_kind=0;
clr R2
sts _val_kind,R2
.dbline 715
; }
xjmp L89
L96:
.dbline 716
; else if(ModeStatus==MODE_PASSWORD)
lds R24,_ModeStatus
cpi R24,4
breq X13
xjmp L89
X13:
.dbline 717
; {
.dbline 718
; if(PassDate_flag==PASSWORD_SETUP)
lds R24,_PassDate_flag
cpi R24,17
brne L102
.dbline 719
; {
.dbline 720
; if(KK<MAXNUMBER) KK++;
ldd R24,y+13
ldd R25,y+14
cpi R24,99
ldi R30,0
cpc R25,R30
brsh L103
.dbline 720
adiw R24,1
std y+14,R25
std y+13,R24
.dbline 722
;
; }
xjmp L103
L102:
.dbline 724
; else
; {
.dbline 725
; if(KK<MAXDATE) KK++;
ldd R24,y+13
ldd R25,y+14
cpi R24,250
ldi R30,0
cpc R25,R30
brsh L106
.dbline 725
adiw R24,1
std y+14,R25
std y+13,R24
L106:
.dbline 726
; }
L103:
.dbline 727
; K1Count=0;
clr R2
sts _K1Count,R2
.dbline 729
; //K4Count=0;
; }
.dbline 730
; break;
xjmp L89
L108:
.dbline 734
; case KEY_DOWN://k3
; // DS1302_Init();
; // ReadTime();
; if(ModeStatus==MODE_LENGHT)
lds R24,_ModeStatus
cpi R24,2
brne L109
.dbline 735
; {
.dbline 736
; if(val_lenght>MINVAL_LENGHT)
ldi R24,4
ldi R25,0
lds R2,_val_lenght
lds R3,_val_lenght+1
cp R24,R2
cpc R25,R3
brsh L111
.dbline 737
; val_lenght--;
movw R24,R2
sbiw R24,1
sts _val_lenght+1,R25
sts _val_lenght,R24
L111:
.dbline 738
; K1Count=5;
ldi R24,5
sts _K1Count,R24
.dbline 740
;
; }
xjmp L89
L109:
.dbline 741
; else if(ModeStatus==MODE_KIND)
lds R24,_ModeStatus
cpi R24,3
brne L113
.dbline 742
; {
.dbline 743
; if(val_kind<MAXVAL_KIND)
lds R24,_val_kind
cpi R24,112
brsh L115
.dbline 744
; {
.dbline 745
; KindData[val_kind]=FALSE;
ldi R24,<_KindData
ldi R25,>_KindData
lds R30,_val_kind
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 746
; val_kind++;
lds R24,_val_kind
subi R24,255 ; addi 1
sts _val_kind,R24
.dbline 747
; }
xjmp L89
L115:
.dbline 748
; else val_kind=0;
clr R2
sts _val_kind,R2
.dbline 749
; }
xjmp L89
L113:
.dbline 750
; else if(ModeStatus==MODE_PASSWORD)
lds R24,_ModeStatus
cpi R24,4
breq X14
xjmp L89
X14:
.dbline 751
; {
.dbline 752
; if(KK>0) KK--;
ldd R0,y+13
ldd R1,y+14
tst R0
brne X1
tst R1
breq L119
X1:
.dbline 752
ldd R24,y+13
ldd R25,y+14
sbiw R24,1
std y+14,R25
std y+13,R24
L119:
.dbline 753
; K1Count=0;
clr R2
sts _K1Count,R2
.dbline 755
; // K4Count=0;
; }
.dbline 756
; break;
xjmp L89
L121:
.dbline 758
; case KEY_FUNCTION://k1
; BackKey=CurrentKey;
lds R2,_CurrentKey
sts _BackKey,R2
.dbline 759
; CurrentKey=KEY_FUNCTION;
ldi R24,67
sts _CurrentKey,R24
.dbline 760
; K1Count++;
lds R24,_K1Count
subi R24,255 ; addi 1
sts _K1Count,R24
.dbline 761
; switch(ModeStatus)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -