menusetup.lis

来自「Atmega64单片机程序(完整工程)」· LIS 代码 · 共 596 行 · 第 1/2 页

LIS
596
字号
 019A 00E1              ldi R16,10000
 019C 17E2              ldi R17,39
 019E 0E940000          xcall _GUI_Delay
 01A2           ;             Jump2Menu(SelfMenuIndex,FlashMode_ReFlash);
 01A2 23E0              ldi R18,3
 01A4 80E0              ldi R24,<_FatherIndex-1
 01A6 90E0              ldi R25,>_FatherIndex-1
 01A8 E0910000          lds R30,_Layer
 01AC FF27              clr R31
 01AE E80F              add R30,R24
 01B0 F91F              adc R31,R25
 01B2 0081              ldd R16,z+0
 01B4 0E940000          xcall _Jump2Menu
 01B8           ;             break ;
 01B8 21C0              xjmp L7
 01BA           L18:
 01BA           ;         }
 01BA           ;         case 3 :
 01BA           ;         {
 01BA           ;             //POP
 01BA           ;             GUI_Clear();
 01BA 0E940000          xcall _GUI_Clear
 01BE           ;             GUI_DispStringAt("Do Something \nthen Back to \nFather Menu!",0,0);
 01BE 2224              clr R2
 01C0 2882              std y+0,R2
 01C2 2227              clr R18
 01C4 00E0              ldi R16,<L19
 01C6 10E0              ldi R17,>L19
 01C8 0E940000          xcall _GUI_DispStringAt
 01CC           ;             GUI_Delay(10000);
 01CC 00E1              ldi R16,10000
 01CE 17E2              ldi R17,39
 01D0 0E940000          xcall _GUI_Delay
 01D4           ;             POP();
 01D4 0E940000          xcall _POP
 01D8           ;             break ;
 01D8 11C0              xjmp L7
 01DA           L6:
 01DA           ;         }
 01DA           ;         default :
 01DA           ;         {   
 01DA           ; 		    GUI_Clear();
 01DA 0E940000          xcall _GUI_Clear
 01DE           ;                       GUI_Delay(10000);
 01DE 00E1              ldi R16,10000
 01E0 17E2              ldi R17,39
 01E2 0E940000          xcall _GUI_Delay
 01E6           ;             Jump2Menu(SelfMenuIndex,FlashMode_NoAction);
 01E6 2227              clr R18
 01E8 80E0              ldi R24,<_FatherIndex-1
 01EA 90E0              ldi R25,>_FatherIndex-1
 01EC E0910000          lds R30,_Layer
 01F0 FF27              clr R31
 01F2 E80F              add R30,R24
 01F4 F91F              adc R31,R25
 01F6 0081              ldd R16,z+0
 01F8 0E940000          xcall _Jump2Menu
 01FC           ;             return ;
 01FC           L7:
 01FC           L5:
 01FC 2596              adiw R28,5
 01FE 0E940000          xcall pop_gset1
 0202                   .dbline 0 ; func end
 0202 0895              ret
 0204           ;    save_Minute -> R20
 0204           ;      save_Hour -> R22
                        .even
 0204           _Time_Settings::
 0204 0E940000          xcall push_gset2
 0208 2597              sbiw R28,5
 020A           ;         }
 020A           ;     }
 020A           ; }
 020A           ; 
 020A           ; 
 020A           ; void Time_Settings(void)
 020A           ; {
 020A           ;     INT8U save_Hour,save_Minute ;
 020A           ;     
 020A           ;     save_Hour=Hour ;
 020A 60910000          lds R22,_Hour
 020E           ;     save_Minute=Minute ;
 020E 40910000          lds R20,_Minute
 0212           ;       
 0212           ;       Key_Deal_Flag=0 ;
 0212 2224              clr R2
 0214 20920000          sts _Key_Deal_Flag,R2
 0218 7CC0              xjmp L23
 021A           L22:
 021A           ;     while(1)
 021A           ;     {
 021A           ;         GUITextMode=GUI_TEXTMODE_REVERSE ;
 021A 81E0              ldi R24,1
 021C 80930000          sts _GUITextMode,R24
 0220           ;         GUI_Display_Time(24,32);
 0220 20E2              ldi R18,32
 0222 08E1              ldi R16,24
 0224 0E940000          xcall _GUI_Display_Time
 0228           ;         GUITextMode=GUI_TEXTMODE_NORMAL ;
 0228 2224              clr R2
 022A 20920000          sts _GUITextMode,R2
 022E           ;         
 022E           ;         if(Key_Deal_Flag==1)
 022E 80910000          lds R24,_Key_Deal_Flag
 0232 8130              cpi R24,1
 0234 09F0              breq X5
 0236 6DC0              xjmp L25
 0238           X5:
 0238           ;         {
 0238           ;             if(Keyvalue==Key_Left)
 0238 80910000          lds R24,_Keyvalue
 023C 8331              cpi R24,19
 023E E9F4              brne L27
 0240           ;             {
 0240           ;                 Minute++;
 0240 80910000          lds R24,_Minute
 0244 8F5F              subi R24,255    ; addi 1
 0246 80930000          sts _Minute,R24
 024A           ;                 if(Minute>59)
 024A 8BE3              ldi R24,59
 024C 20900000          lds R2,_Minute
 0250 8215              cp R24,R2
 0252 08F0              brlo X6
 0254 5BC0              xjmp L28
 0256           X6:
 0256           ;                 {
 0256           ;                     Minute=0 ;
 0256 2224              clr R2
 0258 20920000          sts _Minute,R2
 025C           ;                     Hour++;
 025C 80910000          lds R24,_Hour
 0260 8F5F              subi R24,255    ; addi 1
 0262 80930000          sts _Hour,R24
 0266           ;                     if(Hour>23)
 0266 87E1              ldi R24,23
 0268 20900000          lds R2,_Hour
 026C 8215              cp R24,R2
 026E 08F0              brlo X7
 0270 4DC0              xjmp L28
 0272           X7:
 0272           ;                         Hour=0 ;
 0272 2224              clr R2
 0274 20920000          sts _Hour,R2
 0278           ;                 }
 0278           ;             }
 0278 49C0              xjmp L28
 027A           L27:
 027A           ;             else if(Keyvalue==Key_Right)
 027A 80910000          lds R24,_Keyvalue
 027E 8431              cpi R24,20
 0280 B1F4              brne L33
 0282           ;             {
 0282           ;                 Minute--;
 0282 80910000          lds R24,_Minute
 0286 8150              subi R24,1
 0288 80930000          sts _Minute,R24
 028C           ;                 if(Minute==255)
 028C 8F3F              cpi R24,255
 028E 09F0              breq X8
 0290 3DC0              xjmp L34
 0292           X8:
 0292           ;                 {
 0292           ;                     Minute=59 ;
 0292 8BE3              ldi R24,59
 0294 80930000          sts _Minute,R24
 0298           ;                     Hour--;
 0298 80910000          lds R24,_Hour
 029C 8150              subi R24,1
 029E 80930000          sts _Hour,R24
 02A2           ;                     if(Hour==255)
 02A2 8F3F              cpi R24,255
 02A4 99F5              brne L34
 02A6           ;                         Hour=23 ;
 02A6 87E1              ldi R24,23
 02A8 80930000          sts _Hour,R24
 02AC           ;                 }
 02AC           ;             }
 02AC 2FC0              xjmp L34
 02AE           L33:
 02AE           ;             //确认键
 02AE           ;             else if(Keyvalue==Key_Up)
 02AE 80910000          lds R24,_Keyvalue
 02B2 8231              cpi R24,18
 02B4 11F5              brne L39
 02B6           ;             {
 02B6           ;                 GUI_Clear();
 02B6 0E940000          xcall _GUI_Clear
 02BA           ;                 if(language==CH)
 02BA 20900000          lds R2,_language
 02BE 2220              tst R2
 02C0 61F4              brne L41
 02C2           ;                     GUI_DispStringAtBar("时间已设置",0,32,LCD_XSIZE,GUI_TA_HCENTER);
 02C2 80E1              ldi R24,16
 02C4 8C83              std y+4,R24
 02C6 81E6              ldi R24,97
 02C8 8A83              std y+2,R24
 02CA 80E2              ldi R24,32
 02CC 8883              std y+0,R24
 02CE 2227              clr R18
 02D0 00E0              ldi R16,<L43
 02D2 10E0              ldi R17,>L43
 02D4 0E940000          xcall _GUI_DispStringAtBar
 02D8 0BC0              xjmp L42
 02DA           L41:
 02DA           ;                 else 
 02DA           ;                     GUI_DispStringAtBar("Time is set",0,32,LCD_XSIZE,GUI_TA_HCENTER);
 02DA 80E1              ldi R24,16
 02DC 8C83              std y+4,R24
 02DE 81E6              ldi R24,97
 02E0 8A83              std y+2,R24
 02E2 80E2              ldi R24,32
 02E4 8883              std y+0,R24
 02E6 2227              clr R18
 02E8 00E0              ldi R16,<L44
 02EA 10E0              ldi R17,>L44
 02EC 0E940000          xcall _GUI_DispStringAtBar
 02F0           L42:
 02F0           ;                 
 02F0           ;                 GUI_Delay(3000);
 02F0 08EB              ldi R16,3000
 02F2 1BE0              ldi R17,11
 02F4 0E940000          xcall _GUI_Delay
 02F8           ;                 
 02F8           ;                 break ;
 02F8 0DC0              xjmp L24
 02FA           L39:
 02FA           ;                 
 02FA           ;             }
 02FA           ;             //退出键
 02FA           ;             else if(Keyvalue==Key_Down)
 02FA 80910000          lds R24,_Keyvalue
 02FE 8131              cpi R24,17
 0300 29F4              brne L45
 0302           ;             {
 0302           ;                 Hour=save_Hour ;
 0302 60930000          sts _Hour,R22
 0306           ;                 Minute=save_Minute ;
 0306 40930000          sts _Minute,R20
 030A           ;                 
 030A           ;                 break ;
 030A 04C0              xjmp L24
 030C           L45:
 030C           L34:
 030C           L28:
 030C           ;             }
 030C           ;             Key_Deal_Flag=0 ;
 030C 2224              clr R2
 030E 20920000          sts _Key_Deal_Flag,R2
 0312           ;         }
 0312           L25:
 0312           L23:
 0312 83CF              xjmp L22
 0314           L24:
 0314           ;     }
 0314           ; 	Key_Deal_Flag=0 ;
 0314 2224              clr R2
 0316 20920000          sts _Key_Deal_Flag,R2
 031A           L21:
 031A 2596              adiw R28,5
 031C 0E940000          xcall pop_gset2
 0320                   .dbline 0 ; func end
 0320 0895              ret
                        .area data(ram, con, rel)
 0000           L44:
 0000                   .blkb 12
                        .area idata
 0000 54696D652069732073657400  .byte 'T,'i,'m,'e,32,'i,'s,32,'s,'e,'t,0
                        .area data(ram, con, rel)
 000C           L43:
 000C                   .blkb 11
                        .area idata
 000C CAB1BCE4D2D1C9E8D6C300    .byte 202,177,188,228,210,209,201,232,214,195,0
                        .area data(ram, con, rel)
 0017           L19:
 0017                   .blkb 41
                        .area idata
 0017 446F20536F6D657468696E67200A7468  .byte 'D,'o,32,'S,'o,'m,'e,'t,'h,'i,'n,'g,32,10,'t,'h
 0027 656E204261636B20746F200A46617468  .byte 'e,'n,32,'B,'a,'c,'k,32,'t,'o,32,10,'F,'a,'t,'h
 0037 6572204D656E752100        .byte 'e,'r,32,'M,'e,'n,'u,33,0
                        .area data(ram, con, rel)
 0040           L15:
 0040                   .blkb 39
                        .area idata
 0040 446F20536F6D657468696E67200A7468  .byte 'D,'o,32,'S,'o,'m,'e,'t,'h,'i,'n,'g,32,10,'t,'h
 0050 656E204261636B20746F200A54686973  .byte 'e,'n,32,'B,'a,'c,'k,32,'t,'o,32,10,'T,'h,'i,'s
 0060 204D656E752100    .byte 32,'M,'e,'n,'u,33,0
                        .area data(ram, con, rel)
 0067           L13:
 0067                   .blkb 14
                        .area idata
 0067 54696D652053657474696E677300      .byte 'T,'i,'m,'e,32,'S,'e,'t,'t,'i,'n,'g,'s,0
                        .area data(ram, con, rel)
 0075           L12:
 0075                   .blkb 9
                        .area idata
 0075 CAB1BCE4C9E8D6C300        .byte 202,177,188,228,201,232,214,195,0
                        .area data(ram, con, rel)

⌨️ 快捷键说明

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