📄 menu.s
字号:
.dbfunc e Menu_Change _Menu_Change fV
; KeyNum -> R20
.even
_Menu_Change::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 153
; LCD_write_string(2,n,MenuPoint[DisplayPoint++].DisplayString);
;
; }
;
; }
;
; void Menu_Change(unsigned char KeyNum)
; {
.dbline 154
; if(KeyNum)
tst R20
brne X3
xjmp L36
X3:
.dbline 155
; {
.dbline 156
; switch(KeyNum)
clr R21
cpi R20,55
ldi R30,0
cpc R21,R30
brne X4
xjmp L47
X4:
ldi R24,55
ldi R25,0
cp R24,R20
cpc R25,R21
brlt L57
L56:
cpi R20,48
ldi R30,0
cpc R21,R30
brne X5
xjmp L55
X5:
cpi R20,51
ldi R30,0
cpc R21,R30
breq L41
xjmp L39
L57:
cpi R20,66
ldi R30,0
cpc R21,R30
breq L44
cpi R20,66
ldi R30,0
cpc R21,R30
brge X6
xjmp L39
X6:
L58:
cpi R20,70
ldi R30,0
cpc R21,R30
brne X7
xjmp L50
X7:
xjmp L39
X0:
.dbline 157
; {
L41:
.dbline 159
; case UP:
; UserChoose --;
lds R24,_UserChoose
subi R24,1
sts _UserChoose,R24
.dbline 160
; if (UserChoose ==255)
cpi R24,255
breq X8
xjmp L39
X8:
.dbline 161
; {
.dbline 162
; UserChoose = 0;//上翻截至,如果要回滚赋值MaxItems-1
clr R2
sts _UserChoose,R2
.dbline 163
; }
.dbline 164
; break;
xjmp L39
L44:
.dbline 166
; case Esc:
; if (MenuPoint[UserChoose].ParentMenus != Null)
lds R2,_UserChoose
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_MenuPoint
lds R3,_MenuPoint+1
add R30,R2
adc R31,R3
ldd R2,z+7
ldd R3,z+8
tst R2
brne X1
tst R3
brne X9
xjmp L39
X9:
X1:
.dbline 167
; {
.dbline 168
; MenuPoint = MenuPoint[UserChoose].ParentMenus;
lds R2,_UserChoose
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_MenuPoint
lds R3,_MenuPoint+1
add R30,R2
adc R31,R3
ldd R2,z+7
ldd R3,z+8
sts _MenuPoint+1,R3
sts _MenuPoint,R2
.dbline 169
; UserChoose = 0;
clr R2
sts _UserChoose,R2
.dbline 170
; DisplayStart = 0;
sts _DisplayStart,R2
.dbline 171
; }
.dbline 172
; break;
xjmp L39
L47:
.dbline 174
; case Down:
; UserChoose ++;
lds R24,_UserChoose
subi R24,255 ; addi 1
sts _UserChoose,R24
.dbline 175
; if (UserChoose == MaxItems)
lds R2,_MaxItems
lds R3,_MaxItems+1
mov R4,R24
clr R5
cp R4,R2
cpc R5,R3
breq X10
xjmp L39
X10:
.dbline 176
; {
.dbline 177
; UserChoose = MaxItems-1;//下翻截至,如要回滚赋值为0
movw R24,R2
sbiw R24,1
sts _UserChoose,R24
.dbline 178
; }
.dbline 179
; break;
xjmp L39
L50:
.dbline 181
; case Enter:
; if (MenuPoint[UserChoose].Subs != NullSubs)
lds R2,_UserChoose
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_MenuPoint
lds R3,_MenuPoint+1
add R30,R2
adc R31,R3
ldd R2,z+3
ldd R3,z+4
ldi R24,<PL_NullSubs
ldi R25,>PL_NullSubs
cp R2,R24
cpc R3,R25
breq L51
.dbline 182
; {
.dbline 183
; (*MenuPoint[UserChoose].Subs)();
lds R2,_UserChoose
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_MenuPoint
lds R3,_MenuPoint+1
add R30,R2
adc R31,R3
ldd R26,z+3
ldd R27,z+4
movw R30,R26
xcall xicall
.dbline 184
; }
xjmp L39
L51:
.dbline 185
; else if (MenuPoint[UserChoose].ChildrenMenus != Null)
lds R2,_UserChoose
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_MenuPoint
lds R3,_MenuPoint+1
add R30,R2
adc R31,R3
ldd R2,z+5
ldd R3,z+6
tst R2
brne X2
tst R3
breq L39
X2:
.dbline 186
; {
.dbline 187
; MenuPoint = MenuPoint[UserChoose].ChildrenMenus;
lds R2,_UserChoose
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_MenuPoint
lds R3,_MenuPoint+1
add R30,R2
adc R31,R3
ldd R2,z+5
ldd R3,z+6
sts _MenuPoint+1,R3
sts _MenuPoint,R2
.dbline 188
; UserChoose = 0;
clr R2
sts _UserChoose,R2
.dbline 189
; DisplayStart = 0;
sts _DisplayStart,R2
.dbline 190
; }
.dbline 191
; break;
xjmp L39
L55:
.dbline 193
; case Reset:
; MenuPoint = MainMenu;
ldi R24,<_MainMenu
ldi R25,>_MainMenu
sts _MenuPoint+1,R25
sts _MenuPoint,R24
.dbline 194
; UserChoose = 0;
clr R2
sts _UserChoose,R2
.dbline 195
; DisplayStart = 0;
sts _DisplayStart,R2
.dbline 196
; break;
.dbline 197
; default:break;
L39:
.dbline 199
; }
; if (UserChoose%ShowCount==0) //一屏只能显示ShowCount行
lds R17,_ShowCount
lds R16,_UserChoose
xcall mod8u
tst R16
brne L59
.dbline 200
; DisplayStart = UserChoose;
lds R2,_UserChoose
sts _DisplayStart,R2
xjmp L60
L59:
.dbline 201
; else if(UserChoose==1||UserChoose== 3)
lds R24,_UserChoose
cpi R24,1
breq L63
cpi R24,3
brne L61
L63:
.dbline 202
; DisplayStart = UserChoose-1; //实现滚屏的关键
lds R24,_UserChoose
subi R24,1
sts _DisplayStart,R24
L61:
L60:
.dbline 203
ldi R16,1
ldi R17,0
xcall _LCD_write_command
.dbline 204
ldi R16,5
ldi R17,0
xcall _delay_nms
.dbline 205
xcall _ShowMenu
.dbline 206
L36:
.dbline -2
L35:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r KeyNum 20 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
_MaxItems::
.blkb 2
.dbsym e MaxItems _MaxItems i
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L33:
.blkb 3
.area idata
.byte 45,62,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L25:
.blkb 15
.area idata
.byte 52,46,'F,'l,'a,'s,'h,32,'O,'p,'t,'i,'o,'n,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L24:
.blkb 16
.area idata
.byte 51,46,'R,'o,'b,'o,'t,32,'C,'o,'n,'t,'r,'o,'l,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L23:
.blkb 15
.area idata
.byte 50,46,'V,'o,'i,'c,'e,32,'C,'e,'n,'t,'e,'r,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L22:
.blkb 10
.area idata
.byte 52,46,'G,'o,32,'B,'a,'c,'k,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L21:
.blkb 11
.area idata
.byte 51,46,'G,'o,32,'A,'h,'e,'a,'d,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L20:
.blkb 13
.area idata
.byte 50,46,'T,'u,'r,'n,32,'R,'i,'g,'h,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L19:
.blkb 12
.area idata
.byte 49,46,'T,'u,'r,'n,32,'L,'e,'f,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L18:
.blkb 15
.area idata
.byte 52,46,'V,'o,'i,'c,'e,32,'D,'e,'l,'e,'t,'e,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L17:
.blkb 15
.area idata
.byte 49,46,'V,'o,'i,'c,'e,32,'R,'e,'c,'o,'r,'d,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L16:
.blkb 7
.area idata
.byte 53,46,'B,'a,'c,'k,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L15:
.blkb 15
.area idata
.byte 52,46,'F,'l,'a,'s,'h,32,'D,'e,'l,'e,'t,'e,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L14:
.blkb 8
.area idata
.byte 51,46,'P,'a,'u,'s,'e,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L13:
.blkb 7
.area idata
.byte 50,46,'P,'l,'a,'y,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L12:
.blkb 15
.area idata
.byte 49,46,'F,'l,'a,'s,'h,32,'R,'e,'c,'o,'r,'d,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L11:
.blkb 7
.area idata
.byte 52,46,'B,'a,'c,'k,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L10:
.blkb 11
.area idata
.byte 51,46,'A,'l,'e,'r,'t,'S,'e,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L9:
.blkb 11
.area idata
.byte 50,46,'D,'a,'t,'e,32,'S,'e,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L8:
.blkb 11
.area idata
.byte 49,46,'T,'i,'m,'e,32,'S,'e,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L7:
.blkb 9
.area idata
.byte 'A,'l,'e,'r,'t,'S,'e,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L5:
.blkb 8
.area idata
.byte 'D,'a,'t,'e,'S,'e,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
L3:
.blkb 8
.area idata
.byte 'T,'i,'m,'e,'S,'e,'t,0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
.area func_lit
PL_NullSubs: .word `_NullSubs
PL_AlertSet: .word `_AlertSet
PL_DateSet: .word `_DateSet
PL_TimeSet: .word `_TimeSet
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -