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 + -
显示快捷键?