📄 menu.s
字号:
sts _main_menu+9+1+1,R25
sts _main_menu+9+1,R24
.dbline 45
sts _main_menu+9+3+1,R3
sts _main_menu+9+3,R2
.dbline 46
ldi R24,<_green_menu
ldi R25,>_green_menu
sts _main_menu+9+5+1,R25
sts _main_menu+9+5,R24
.dbline 47
sts _main_menu+9+7+1,R3
sts _main_menu+9+7,R2
.dbline 49
ldi R24,3
sts _main_menu+18,R24
.dbline 50
ldi R24,<_red
ldi R25,>_red
sts _main_menu+18+1+1,R25
sts _main_menu+18+1,R24
.dbline 51
ldi R24,<PL_openred
ldi R25,>PL_openred
sts _main_menu+18+3+1,R25
sts _main_menu+18+3,R24
.dbline 52
sts _main_menu+18+5+1,R3
sts _main_menu+18+5,R2
.dbline 53
sts _main_menu+18+7+1,R3
sts _main_menu+18+7,R2
.dbline -2
L91:
.dbline 0 ; func end
ret
.dbend
.dbfunc e blue_menu_initial _blue_menu_initial fV
.even
_blue_menu_initial::
.dbline -1
.dbline 57
.dbline 58
ldi R24,2
sts _blue_menu,R24
.dbline 59
ldi R24,<_qr
ldi R25,>_qr
sts _blue_menu+1+1,R25
sts _blue_menu+1,R24
.dbline 60
ldi R24,<PL_openblue
ldi R25,>PL_openblue
sts _blue_menu+3+1,R25
sts _blue_menu+3,R24
.dbline 61
clr R2
clr R3
sts _blue_menu+5+1,R3
sts _blue_menu+5,R2
.dbline 62
ldi R24,<_main_menu
ldi R25,>_main_menu
sts _blue_menu+7+1,R25
sts _blue_menu+7,R24
.dbline 64
ldi R24,2
sts _blue_menu+9,R24
.dbline 65
ldi R24,<_qx
ldi R25,>_qx
sts _blue_menu+9+1+1,R25
sts _blue_menu+9+1,R24
.dbline 66
ldi R24,<PL_closeblue
ldi R25,>PL_closeblue
sts _blue_menu+9+3+1,R25
sts _blue_menu+9+3,R24
.dbline 67
sts _blue_menu+9+5+1,R3
sts _blue_menu+9+5,R2
.dbline 68
ldi R24,<_main_menu
ldi R25,>_main_menu
sts _blue_menu+9+7+1,R25
sts _blue_menu+9+7,R24
.dbline -2
L114:
.dbline 0 ; func end
ret
.dbend
.dbfunc e green_menu_initial _green_menu_initial fV
.even
_green_menu_initial::
.dbline -1
.dbline 72
.dbline 73
ldi R24,2
sts _green_menu,R24
.dbline 74
ldi R24,<_qr
ldi R25,>_qr
sts _green_menu+1+1,R25
sts _green_menu+1,R24
.dbline 75
ldi R24,<PL_opengreen
ldi R25,>PL_opengreen
sts _green_menu+3+1,R25
sts _green_menu+3,R24
.dbline 76
clr R2
clr R3
sts _green_menu+5+1,R3
sts _green_menu+5,R2
.dbline 77
ldi R24,<_main_menu
ldi R25,>_main_menu
sts _green_menu+7+1,R25
sts _green_menu+7,R24
.dbline 79
ldi R24,2
sts _green_menu+9,R24
.dbline 80
ldi R24,<_qx
ldi R25,>_qx
sts _green_menu+9+1+1,R25
sts _green_menu+9+1,R24
.dbline 81
ldi R24,<PL_closegreen
ldi R25,>PL_closegreen
sts _green_menu+9+3+1,R25
sts _green_menu+9+3,R24
.dbline 82
sts _green_menu+9+5+1,R3
sts _green_menu+9+5,R2
.dbline 83
ldi R24,<_main_menu
ldi R25,>_main_menu
sts _green_menu+9+7+1,R25
sts _green_menu+9+7,R24
.dbline -2
L128:
.dbline 0 ; func end
ret
.dbend
.dbfunc e led_menu_pro _led_menu_pro fV
.even
_led_menu_pro::
xcall push_gset1
.dbline -1
.dbline 88
.dbline 89
lds R30,_menu_led
lds R31,_menu_led+1
ldd R2,z+0
sts _max_item,R2
.dbline 90
lds R20,_keyval
clr R21
cpi R20,0
cpc R20,R21
brne X9
xjmp L144
X9:
X4:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L147
cpi R20,2
ldi R30,0
cpc R21,R30
breq L150
cpi R20,3
ldi R30,0
cpc R21,R30
breq L153
cpi R20,4
ldi R30,0
cpc R21,R30
brne X10
xjmp L158
X10:
xjmp L144
X5:
.dbline 91
.dbline 92
L147:
.dbline 94
lds R2,_user_choosen
tst R2
brne L148
.dbline 95
.dbline 96
lds R2,_max_item
sts _user_choosen,R2
.dbline 97
L148:
.dbline 98
ldi R24,1
sts _refresh,R24
.dbline 99
lds R24,_user_choosen
subi R24,1
sts _user_choosen,R24
.dbline 100
xjmp L144
L150:
.dbline 102
lds R24,_user_choosen
subi R24,255 ; addi 1
sts _user_choosen,R24
.dbline 103
lds R2,_max_item
cp R24,R2
brne L151
.dbline 104
.dbline 105
clr R2
sts _user_choosen,R2
.dbline 106
L151:
.dbline 107
ldi R24,1
sts _refresh,R24
.dbline 108
xjmp L144
L153:
.dbline 110
lds R2,_user_choosen
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+3
ldd R3,z+4
tst R2
brne X6
tst R3
breq L154
X6:
.dbline 111
.dbline 112
lds R2,_user_choosen
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R26,z+3
ldd R27,z+4
movw R30,R26
xcall xicall
.dbline 113
L154:
.dbline 114
lds R2,_user_choosen
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+5
ldd R3,z+6
tst R2
brne X7
tst R3
breq L156
X7:
.dbline 115
.dbline 116
lds R2,_user_choosen
sts _temp_choosen,R2
.dbline 117
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+5
ldd R3,z+6
sts _menu_led+1,R3
sts _menu_led,R2
.dbline 118
clr R2
sts _user_choosen,R2
.dbline 119
L156:
.dbline 120
ldi R24,1
sts _refresh,R24
.dbline 121
xjmp L144
L158:
.dbline 123
lds R2,_user_choosen
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+7
ldd R3,z+8
tst R2
brne X8
tst R3
breq L159
X8:
.dbline 124
.dbline 125
lds R2,_user_choosen
ldi R24,9
mul R24,R2
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+7
ldd R3,z+8
sts _menu_led+1,R3
sts _menu_led,R2
.dbline 126
L159:
.dbline 127
ldi R24,1
sts _refresh,R24
.dbline 128
.dbline 130
L144:
.dbline 132
lds R2,_refresh
tst R2
breq L161
.dbline 133
.dbline 134
xcall _lcd_clr
.dbline 135
clr R2
sts _refresh,R2
.dbline 136
L161:
.dbline 137
xcall _led_menu_show
.dbline -2
L142:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbend
.dbfunc e led_menu_show _led_menu_show fV
; n -> R20
.even
_led_menu_show::
xcall push_gset2
sbiw R28,6
.dbline -1
.dbline 141
.dbline 143
lds R30,_menu_led
lds R31,_menu_led+1
ldd R2,z+0
sts _max_item,R2
.dbline 144
mov R24,R2
cpi R24,3
brlo L164
.dbline 145
.dbline 146
clr R20
xjmp L169
L166:
.dbline 147
.dbline 149
ldi R24,9
mul R24,R20
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+1
ldd R3,z+2
std y+5,R3
std y+4,R2
clr R2
std y+2,R2
ldi R24,96
std y+0,R24
ldi R18,20
ldi R24,2
mul R24,R20
mov R16,R0
xcall _draw_bmp
.dbline 150
L167:
.dbline 146
inc R20
L169:
.dbline 146
cpi R20,3
brlo L166
.dbline 151
; select_item(user_choosen); //标记出当前菜单项.
lds R16,_user_choosen
xcall _select_item
.dbline 152
; }
xjmp L165
L164:
.dbline 154
; else
; {
.dbline 155
; switch(temp_choosen)
lds R22,_temp_choosen
clr R23
cpi R22,0
cpc R22,R23
breq L173
X11:
cpi R22,1
ldi R30,0
cpc R23,R30
breq L174
cpi R22,2
ldi R30,0
cpc R23,R30
breq L175
xjmp L171
X12:
.dbline 156
; {
L173:
.dbline 158
; case 0:
; draw_bmp(0,20,96,0,blue);
ldi R24,<_blue
ldi R25,>_blue
std y+5,R25
std y+4,R24
clr R2
std y+2,R2
ldi R24,96
std y+0,R24
ldi R18,20
clr R16
xcall _draw_bmp
.dbline 159
; break;
xjmp L171
L174:
.dbline 161
; case 1:
; draw_bmp(0,20,96,0,green);
ldi R24,<_green
ldi R25,>_green
std y+5,R25
std y+4,R24
clr R2
std y+2,R2
ldi R24,96
std y+0,R24
ldi R18,20
clr R16
xcall _draw_bmp
.dbline 162
; break;
xjmp L171
L175:
.dbline 164
; case 2:
; draw_bmp(0,20,96,0,red);
ldi R24,<_red
ldi R25,>_red
std y+5,R25
std y+4,R24
clr R2
std y+2,R2
ldi R24,96
std y+0,R24
ldi R18,20
clr R16
xcall _draw_bmp
.dbline 165
; break;
.dbline 167
; default:
; break;
L171:
.dbline 169
; }
; for(n=0;n<max_item;n++)
clr R20
xjmp L179
L176:
.dbline 170
.dbline 171
ldi R24,9
mul R24,R20
movw R30,R0
lds R2,_menu_led
lds R3,_menu_led+1
add R30,R2
adc R31,R3
ldd R2,z+1
ldd R3,z+2
std y+5,R3
std y+4,R2
clr R2
std y+2,R2
ldi R24,32
std y+0,R24
ldi R18,20
ldi R24,2
mul R24,R20
mov R16,R0
subi R16,254 ; addi 2
xcall _draw_bmp
.dbline 172
L177:
.dbline 169
inc R20
L179:
.dbline 169
lds R2,_max_item
cp R20,R2
brlo L176
.dbline 173
lds R16,_user_choosen
subi R16,255 ; addi 1
xcall _select_item
.dbline 174
L165:
.dbline -2
L163:
adiw R28,6
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r n 20 c
.dbend
.dbfunc e select_item _select_item fV
; n -> R20
.even
_select_item::
xcall push_gset1
mov R20,R16
sbiw R28,6
.dbline -1
.dbline 178
; {
; draw_bmp((n+1)*2,20,32,0,menu_led[n].display);
; }
; select_item(user_choosen+1);
; }
; }
;
; void select_item(uchar n)
; {
.dbline 179
; draw_bmp(n*2,2,16,0,curflag);
ldi R24,<_curflag
ldi R25,>_curflag
std y+5,R25
std y+4,R24
clr R2
std y+2,R2
ldi R24,16
std y+0,R24
ldi R18,2
ldi R24,2
mul R24,R20
mov R16,R0
xcall _draw_bmp
.dbline -2
L180:
adiw R28,6
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r n 20 c
.dbend
.dbfunc e openblue _openblue fV
.even
_openblue::
.dbline -1
.dbline 183
; }
;
; void openblue(void)
; {
.dbline 184
; blueon;
sbi 0x18,5
.dbline 185
; greenoff;
cbi 0x18,6
.dbline 186
; redoff;
cbi 0x18,7
.dbline -2
L181:
.dbline 0 ; func end
ret
.dbend
.dbfunc e opengreen _opengreen fV
.even
_opengreen::
.dbline -1
.dbline 190
; }
;
; void opengreen(void)
; {
.dbline 191
; blueoff;
cbi 0x18,5
.dbline 192
; greenon;
sbi 0x18,6
.dbline 193
; redoff;
cbi 0x18,7
.dbline -2
L182:
.dbline 0 ; func end
ret
.dbend
.dbfunc e openred _openred fV
.even
_openred::
.dbline -1
.dbline 197
; }
;
; void openred(void)
; {
.dbline 198
; blueoff;
cbi 0x18,5
.dbline 199
; greenoff;
cbi 0x18,6
.dbline 200
; redon;
sbi 0x18,7
.dbline -2
L183:
.dbline 0 ; func end
ret
.dbend
.dbfunc e closeblue _closeblue fV
.even
_closeblue::
.dbline -1
.dbline 204
; }
;
; void closeblue(void)
; {
.dbline 205
; blueoff;
cbi 0x18,5
.dbline -2
L184:
.dbline 0 ; func end
ret
.dbend
.dbfunc e closegreen _closegreen fV
.even
_closegreen::
.dbline -1
.dbline 209
; }
;
; void closegreen(void)
; {
.dbline 210
; greenoff;
cbi 0x18,6
.dbline -2
L185:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main _main fV
.even
_main::
sbiw R28,6
.dbline -1
.dbline 221
; }
;
;
;
;
; /*************************************************
; 主程序.
; **************************************************/
;
; void main(void)
; {
.dbline 222
; main_init();
xcall _main_init
.dbline 223
; lcd_init();
xcall _lcd_init
.dbline 224
; lcd_clr();
xcall _lcd_clr
.dbline 225
; draw_bmp(0,0,128,0,xtcsh); //函数调用形式为页,列,宽度,数据指针.
ldi R24,<_xtcsh
ldi R25,>_xtcsh
std y+5,R25
std y+4,R24
clr R2
std y+2,R2
ldi R24,128
std y+0,R24
clr R18
clr R16
xcall _draw_bmp
.dbline 226
; draw_bmp(2,8,72,0,writeby);
ldi R24,<_writeby
ldi R25,>_writeby
std y+5,R25
std y+4,R24
clr R2
std y+2,R2
ldi R24,72
std y+0,R24
ldi R18,8
ldi R16,2
xcall _draw_bmp
.dbline 227
; draw_bmp(4,56,32,1,jiangping);
ldi R24,<_jiangping
ldi R25,>_jiangping
std y+5,R25
std y+4,R24
ldi R24,1
std y+2,R24
ldi R24,32
std y+0,R24
ldi R18,56
ldi R16,4
xcall _draw_bmp
.dbline 229
;
; blueon;
sbi 0x18,5
.dbline 230
; greenon;
sbi 0x18,6
.dbline 231
; redon;
sbi 0x18,7
.dbline 233
;
; delay_ms(3000); //延时3秒.
ldi R16,3000
ldi R17,11
xcall _delay_ms
.dbline 234
; lcd_clr();
xcall _lcd_clr
.dbline 236
;
; blueoff;
cbi 0x18,5
.dbline 237
; greenoff;
cbi 0x18,6
.dbline 238
; redoff;
cbi 0x18,7
.dbline 240
;
; main_menu_initial();
xcall _main_menu_initial
.dbline 241
; blue_menu_initial();
xcall _blue_menu_initial
.dbline 242
; green_menu_initial();
xcall _green_menu_initial
xjmp L188
L187:
.dbline 245
.dbline 246
xcall _get_key
sts _keyval,R16
.dbline 247
xcall _led_menu_pro
.dbline 248
L188:
.dbline 244
xjmp L187
X13:
.dbline -2
L186:
adiw R28,6
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu\menu.c
_temp_choosen::
.blkb 1
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/menu.h
.dbsym e temp_choosen _temp_choosen c
_green_menu::
.blkb 18
.dbsym e green_menu _green_menu A[18:2]X
_blue_menu::
.blkb 18
.dbsym e blue_menu _blue_menu A[18:2]X
_main_menu::
.blkb 36
.dbsym e main_menu _main_menu A[36:4]X
.area func_lit
PL_closegreen: .word `_closegreen
PL_opengreen: .word `_opengreen
PL_closeblue: .word `_closeblue
PL_openblue: .word `_openblue
PL_openred: .word `_openred
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -