📄 menu.s
字号:
ldi R21,4
xjmp L14
L11:
.dbline 40
.dbline 41
.dbline 42
L12:
.dbline 39
subi R20,1
sbci R21,0
L14:
.dbline 39
cpi R20,0
cpc R20,R21
brne L11
X1:
L8:
.dbline 38
subi R16,1
sbci R17,0
L10:
.dbline 38
cpi R16,0
cpc R16,R17
brne L7
X2:
.dbline -2
L6:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r n 20 i
.dbsym r m 16 i
.dbend
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
.dbfunc e chkbusy _chkbusy fV
.even
_chkbusy::
.dbline -1
.dbline 24
.dbline 26
sbi 0x18,4
.dbline 27
cbi 0x18,2
.dbline 28
sbi 0x18,3
.dbline -2
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e send_comm _send_comm fV
; command -> R20
.even
_send_comm::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 33
.dbline 34
xcall _chkbusy
.dbline 35
sbi 0x18,4
.dbline 36
cbi 0x18,2
.dbline 37
cbi 0x18,3
.dbline 38
out 0x1b,R20
.dbline 39
sbi 0x18,4
.dbline 40
; main_menu[0].children_menus=blue_menu;
cbi 0x18,4
.dbline -2
L16:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r command 20 c
.dbend
.dbfunc e send_data _send_data fV
; dat -> R20
.even
_send_data::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 44
; main_menu[0].parent_menus=NULL;
;
; main_menu[1].menu_count=3;
; main_menu[1].display=green; //点亮绿灯
.dbline 45
; main_menu[1].subs=NULL;
xcall _chkbusy
.dbline 46
; main_menu[1].children_menus=green_menu;
sbi 0x18,4
.dbline 47
; main_menu[1].parent_menus=NULL;
sbi 0x18,2
.dbline 48
;
cbi 0x18,3
.dbline 49
; main_menu[2].menu_count=3;
out 0x1b,R20
.dbline 50
; main_menu[2].display=red; //点亮红灯.
cbi 0x18,4
.dbline -2
L17:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r dat 20 c
.dbend
.dbfunc e lcd_init _lcd_init fV
.even
_lcd_init::
.dbline -1
.dbline 55
; main_menu[2].subs=openred;
; main_menu[2].children_menus=NULL;
; main_menu[2].parent_menus=NULL;
; }
;
.dbline 56
; void blue_menu_initial(void)
ldi R16,192
xcall _send_comm
.dbline 57
; {
ldi R16,184
xcall _send_comm
.dbline 58
; blue_menu[0].menu_count=2;
ldi R16,64
xcall _send_comm
.dbline 59
; blue_menu[0].display=qr; //点亮兰灯,确认.
ldi R16,63
xcall _send_comm
.dbline -2
L18:
.dbline 0 ; func end
ret
.dbend
.dbfunc e lcd_clr _lcd_clr fV
; page -> R20
; col -> R22
.even
_lcd_clr::
xcall push_gset2
.dbline -1
.dbline 64
; blue_menu[0].subs=openblue;
; blue_menu[0].children_menus=NULL;
; blue_menu[0].parent_menus=main_menu;
;
; blue_menu[1].menu_count=2;
.dbline 66
; blue_menu[1].display=qx; //取消.
; blue_menu[1].subs=closeblue;
sbi 0x18,0
.dbline 67
; blue_menu[1].children_menus=NULL;
cbi 0x18,1
.dbline 68
; blue_menu[1].parent_menus=main_menu;
clr R20
xjmp L23
L20:
.dbline 69
; }
.dbline 70
;
mov R16,R20
ori R16,184
xcall _send_comm
.dbline 71
; void green_menu_initial(void)
ldi R16,64
xcall _send_comm
.dbline 72
; {
clr R22
xjmp L27
L24:
.dbline 73
.dbline 74
clr R16
xcall _send_data
.dbline 75
L25:
.dbline 72
inc R22
L27:
.dbline 72
cpi R22,64
brlo L24
.dbline 76
L21:
.dbline 68
inc R20
L23:
.dbline 68
cpi R20,8
brlo L20
.dbline 78
; green_menu[0].menu_count=2;
; green_menu[0].display=qr; //点亮绿灯---确认.
; green_menu[0].subs=opengreen;
; green_menu[0].children_menus=NULL;
; green_menu[0].parent_menus=main_menu;
;
cbi 0x18,0
.dbline 79
; green_menu[1].menu_count=2;
sbi 0x18,1
.dbline 80
; green_menu[1].display=qx; //----取消.
clr R20
xjmp L31
L28:
.dbline 81
; green_menu[1].subs=closegreen;
.dbline 82
; green_menu[1].children_menus=NULL;
mov R16,R20
ori R16,184
xcall _send_comm
.dbline 83
; green_menu[1].parent_menus=main_menu;
ldi R16,64
xcall _send_comm
.dbline 84
; }
clr R22
xjmp L35
L32:
.dbline 85
.dbline 86
clr R16
xcall _send_data
.dbline 87
L33:
.dbline 84
inc R22
L35:
.dbline 84
cpi R22,64
brlo L32
.dbline 88
L29:
.dbline 80
inc R20
L31:
.dbline 80
cpi R20,8
brlo L28
.dbline -2
L19:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r page 20 c
.dbsym r col 22 c
.dbend
.dbfunc e draw_bmp _draw_bmp fV
; address -> R20
; p -> R22
; window -> R10
; x -> R12
; bmp -> R14,R15
; mod -> y+16
; width -> y+14
; col -> y+12
; page -> y+10
.even
_draw_bmp::
xcall push_arg4
xcall push_gset5
ldd R14,y+18
ldd R15,y+19
.dbline -1
.dbline 97
;
;
; void led_menu_pro(void)
; {
; max_item=menu_led->menu_count;
; switch(keyval)
; {
; case 0: break;
; case 1: //向上键.
; if(user_choosen==0)
; {
; user_choosen=max_item;
; }
.dbline 99
; refresh=1;
; user_choosen--;
clr R10
.dbline 100
; break;
clr R22
.dbline 102
; case 2: //向下键.
; user_choosen++;
ldd R12,y+12
xjmp L40
L37:
.dbline 103
; if(user_choosen==max_item)
.dbline 105
; {
; user_choosen=0;
ldi R24,127
cp R24,R12
brsh L41
.dbline 105
xjmp L36
L41:
.dbline 106
; }
ldi R24,63
cp R24,R12
brsh L43
.dbline 107
; refresh=1;
.dbline 108
; break;
clr R10
inc R10
.dbline 109
; case 3: //确认键.
ldi R17,64
mov R16,R12
xcall mod8u
mov R20,R16
.dbline 110
; if(menu_led[user_choosen].subs!=NULL)
xjmp L44
L43:
.dbline 112
; {
; (*menu_led[user_choosen].subs)(); //执行函数.
.dbline 113
; }
clr R10
.dbline 114
; if(menu_led[user_choosen].children_menus!=NULL)
mov R20,R12
.dbline 115
; {
L44:
.dbline 117
; temp_choosen=user_choosen;
; menu_led=menu_led[user_choosen].children_menus;
tst R10
breq L45
.dbline 118
; user_choosen=0;
.dbline 119
; }
cbi 0x18,0
.dbline 120
; refresh=1;
sbi 0x18,1
.dbline 121
; break;
xjmp L46
L45:
.dbline 124
; case 4: //返回键.
; if(menu_led[user_choosen].parent_menus!=NULL)
; {
.dbline 125
; menu_led=menu_led[user_choosen].parent_menus;
sbi 0x18,0
.dbline 126
; }
cbi 0x18,1
.dbline 127
; refresh=1;
L46:
.dbline 128
; break;
ldd R16,y+10
ori R16,184
xcall _send_comm
.dbline 129
; default:
mov R16,R20
ori R16,64
xcall _send_comm
.dbline 131
; break;
; }
ldd R0,y+16
tst R0
breq L47
.dbline 131
mov R30,R22
clr R31
add R30,R14
adc R31,R15
lpm R16,Z
com R16
xcall _send_data
xjmp L48
L47:
.dbline 132
; if(refresh) //是否需要刷新LCD标志位.
mov R30,R22
clr R31
add R30,R14
adc R31,R15
lpm R16,Z
xcall _send_data
L48:
.dbline 134
; {
; lcd_clr();
tst R10
breq L49
.dbline 135
; refresh=0;
.dbline 136
; }
cbi 0x18,0
.dbline 137
; led_menu_show();
sbi 0x18,1
.dbline 138
; }
xjmp L50
L49:
.dbline 141
;
; void led_menu_show(void)
; {
.dbline 142
; uchar n;
sbi 0x18,0
.dbline 143
; max_item=menu_led->menu_count;
cbi 0x18,1
.dbline 144
; if (max_item>=3) //菜单项为3则表示为主菜单.
L50:
.dbline 146
; {
; for(n=0;n<3;n++)
ldd R16,y+10
ori R16,184
subi R16,255 ; addi 1
xcall _send_comm
.dbline 147
; {
mov R16,R20
ori R16,64
xcall _send_comm
.dbline 149
; /*使同一数组元素图形宽度相同,即取最大的图形宽度,这里取96,在数组赋值时也要注意*/
; draw_bmp(n*2,20,96,0,menu_led[n].display);
ldd R0,y+16
tst R0
breq L51
.dbline 149
ldd R2,y+14
clr R3
mov R30,R22
clr R31
add R30,R2
adc R31,R3
add R30,R14
adc R31,R15
lpm R16,Z
com R16
xcall _send_data
xjmp L52
L51:
.dbline 150
; }
ldd R2,y+14
clr R3
mov R30,R22
clr R31
add R30,R2
adc R31,R3
add R30,R14
adc R31,R15
lpm R16,Z
xcall _send_data
L52:
.dbline 152
inc R22
.dbline 153
L38:
.dbline 102
inc R12
L40:
.dbline 102
ldd R2,y+12
ldd R0,y+14
add R2,R0
cp R12,R2
brsh X3
xjmp L37
X3:
.dbline -2
L36:
xcall pop_gset5
adiw R28,4
.dbline 0 ; func end
ret
.dbsym r address 20 c
.dbsym r p 22 c
.dbsym r window 10 c
.dbsym r x 12 c
.dbsym r bmp 14 pkc
.dbsym l mod 16 c
.dbsym l width 14 c
.dbsym l col 12 c
.dbsym l page 10 c
.dbend
.area bss(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
L54:
.blkb 1
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
L55:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
L56:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
L57:
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/lcd_12864.h
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/get_key.h
.dbfunc e get_key _get_key fc
.dbsym s keylock L57 c
.dbsym s havekey L56 c
.dbsym s keytime L55 c
.dbsym s lastkcode L54 c
; pass -> R16
; kcodebuf -> R18
.even
_get_key::
.dbline -1
.dbline 8
.dbline 14
in R18,0x10
andi R18,255
.dbline 15
lds R24,L55
subi R24,255 ; addi 1
sts L55,R24
.dbline 16
lds R2,L54
cp R18,R2
breq L58
.dbline 16
clr R2
sts L55,R2
L58:
.dbline 17
cpi R18,255
brne L60
.dbline 18
.dbline 19
clr R2
sts L56,R2
.dbline 20
sts L57,R2
.dbline 21
sts L55,R2
.dbline 22
clr R16
.dbline 23
xjmp L61
L60:
.dbline 24
cpi R18,127
brne L62
.dbline 25
.dbline 26
ldi R24,1
sts L57,R24
.dbline 27
lds R2,L55
tst R2
brne L64
.dbline 27
ldi R16,7
xjmp L63
L64:
.dbline 29
.dbline 30
lds R24,L55
cpi R24,100
brne L66
.dbline 31
.dbline 32
ldi R16,7
.dbline 33
ldi R24,80
sts L55,R24
.dbline 34
xjmp L63
L66:
.dbline 35
ldi R16,9
.dbline 36
.dbline 37
xjmp L63
L62:
.dbline 38
cpi R18,191
brne L68
.dbline 39
.dbline 40
ldi R24,1
sts L57,R24
.dbline 41
lds R2,L55
tst R2
brne L70
.dbline 41
ldi R16,8
xjmp L69
L70:
.dbline 42
lds R24,L55
cpi R24,100
brne L72
.dbline 43
.dbline 44
ldi R16,8
.dbline 45
ldi R24,80
sts L55,R24
.dbline 46
xjmp L69
L72:
.dbline 47
ldi R16,9
.dbline 48
xjmp L69
L68:
.dbline 50
lds R2,L56
tst R2
brne L74
.dbline 51
.dbline 52
ldi R24,1
sts L56,R24
.dbline 53
ldi R16,10
.dbline 54
xjmp L75
L74:
.dbline 56
lds R24,L57
cpi R24,1
brne L76
.dbline 56
ldi R16,10
xjmp L77
L76:
.dbline 58
cpi R18,223
brne L78
.dbline 59
.dbline 60
ldi R24,1
sts L57,R24
.dbline 61
ldi R16,6
.dbline 62
xjmp L79
L78:
.dbline 63
cpi R18,239
brne L80
.dbline 64
.dbline 65
ldi R24,1
sts L57,R24
.dbline 66
ldi R16,5
.dbline 67
xjmp L81
L80:
.dbline 68
cpi R18,247
brne L82
.dbline 69
.dbline 70
ldi R24,1
sts L57,R24
.dbline 71
ldi R16,4
.dbline 72
xjmp L83
L82:
.dbline 73
cpi R18,251
brne L84
.dbline 74
.dbline 75
ldi R24,1
sts L57,R24
.dbline 76
ldi R16,3
.dbline 77
xjmp L85
L84:
.dbline 78
cpi R18,253
brne L86
.dbline 79
.dbline 80
ldi R24,1
sts L57,R24
.dbline 81
ldi R16,2
.dbline 82
xjmp L87
L86:
.dbline 83
cpi R18,254
brne L88
.dbline 84
.dbline 85
ldi R24,1
sts L57,R24
.dbline 86
ldi R16,1
.dbline 87
xjmp L89
L88:
.dbline 88
ldi R16,10
L89:
L87:
L85:
L83:
L81:
L79:
L77:
L75:
L69:
L63:
L61:
.dbline 89
sts L54,R18
.dbline 91
.dbline -2
L53:
.dbline 0 ; func end
ret
.dbsym r pass 16 c
.dbsym r kcodebuf 18 c
.dbend
.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu\menu.c
.dbfunc e main_init _main_init fV
.even
_main_init::
.dbline -1
.dbline 23
.dbline 24
ldi R24,255
out 0x1a,R24
.dbline 25
clr R2
out 0x1b,R2
.dbline 26
out 0x17,R24
.dbline 27
out 0x18,R2
.dbline 29
out 0x14,R2
.dbline 30
out 0x15,R24
.dbline 31
out 0x11,R2
.dbline 32
out 0x12,R24
.dbline -2
L90:
.dbline 0 ; func end
ret
.dbend
.dbfunc e main_menu_initial _main_menu_initial fV
.even
_main_menu_initial::
.dbline -1
.dbline 36
.dbline 37
ldi R24,3
sts _main_menu,R24
.dbline 38
ldi R24,<_blue
ldi R25,>_blue
sts _main_menu+1+1,R25
sts _main_menu+1,R24
.dbline 39
clr R2
clr R3
sts _main_menu+3+1,R3
sts _main_menu+3,R2
.dbline 40
ldi R24,<_blue_menu
ldi R25,>_blue_menu
sts _main_menu+5+1,R25
sts _main_menu+5,R24
.dbline 41
sts _main_menu+7+1,R3
sts _main_menu+7,R2
.dbline 43
ldi R24,3
sts _main_menu+9,R24
.dbline 44
ldi R24,<_green
ldi R25,>_green
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -