📄 menu.lis
字号:
0096 00E4 ldi R16,64
0098 D3DF xcall _send_comm
009A .dbline 72
009A ; {
009A 6627 clr R22
009C 03C0 xjmp L27
009E L24:
009E .dbline 73
009E .dbline 74
009E 0027 clr R16
00A0 DCDF xcall _send_data
00A2 .dbline 75
00A2 L25:
00A2 .dbline 72
00A2 6395 inc R22
00A4 L27:
00A4 .dbline 72
00A4 6034 cpi R22,64
00A6 D8F3 brlo L24
00A8 .dbline 76
00A8 L21:
00A8 .dbline 68
00A8 4395 inc R20
00AA L23:
00AA .dbline 68
00AA 4830 cpi R20,8
00AC 88F3 brlo L20
00AE .dbline 78
00AE ; green_menu[0].menu_count=2;
00AE ; green_menu[0].display=qr; //点亮绿灯---确认.
00AE ; green_menu[0].subs=opengreen;
00AE ; green_menu[0].children_menus=NULL;
00AE ; green_menu[0].parent_menus=main_menu;
00AE ;
00AE C098 cbi 0x18,0
00B0 .dbline 79
00B0 ; green_menu[1].menu_count=2;
00B0 C19A sbi 0x18,1
00B2 .dbline 80
00B2 ; green_menu[1].display=qx; //----取消.
00B2 4427 clr R20
00B4 0DC0 xjmp L31
00B6 L28:
00B6 .dbline 81
00B6 ; green_menu[1].subs=closegreen;
00B6 .dbline 82
00B6 ; green_menu[1].children_menus=NULL;
00B6 042F mov R16,R20
00B8 086B ori R16,184
00BA C2DF xcall _send_comm
00BC .dbline 83
00BC ; green_menu[1].parent_menus=main_menu;
00BC 00E4 ldi R16,64
00BE C0DF xcall _send_comm
00C0 .dbline 84
00C0 ; }
00C0 6627 clr R22
00C2 03C0 xjmp L35
00C4 L32:
00C4 .dbline 85
00C4 .dbline 86
00C4 0027 clr R16
00C6 C9DF xcall _send_data
00C8 .dbline 87
00C8 L33:
00C8 .dbline 84
00C8 6395 inc R22
00CA L35:
00CA .dbline 84
00CA 6034 cpi R22,64
00CC D8F3 brlo L32
00CE .dbline 88
00CE L29:
00CE .dbline 80
00CE 4395 inc R20
00D0 L31:
00D0 .dbline 80
00D0 4830 cpi R20,8
00D2 88F3 brlo L28
00D4 .dbline -2
00D4 L19:
00D4 0E940000 xcall pop_gset2
00D8 .dbline 0 ; func end
00D8 0895 ret
00DA .dbsym r page 20 c
00DA .dbsym r col 22 c
00DA .dbend
00DA .dbfunc e draw_bmp _draw_bmp fV
00DA ; address -> R20
00DA ; p -> R22
00DA ; window -> R10
00DA ; x -> R12
00DA ; bmp -> R14,R15
00DA ; mod -> y+16
00DA ; width -> y+14
00DA ; col -> y+12
00DA ; page -> y+10
.even
00DA _draw_bmp::
00DA 0E940000 xcall push_arg4
00DE 0E940000 xcall push_gset5
00E2 EA88 ldd R14,y+18
00E4 FB88 ldd R15,y+19
00E6 .dbline -1
00E6 .dbline 97
00E6 ;
00E6 ;
00E6 ; void led_menu_pro(void)
00E6 ; {
00E6 ; max_item=menu_led->menu_count;
00E6 ; switch(keyval)
00E6 ; {
00E6 ; case 0: break;
00E6 ; case 1: //向上键.
00E6 ; if(user_choosen==0)
00E6 ; {
00E6 ; user_choosen=max_item;
00E6 ; }
00E6 .dbline 99
00E6 ; refresh=1;
00E6 ; user_choosen--;
00E6 AA24 clr R10
00E8 .dbline 100
00E8 ; break;
00E8 6627 clr R22
00EA .dbline 102
00EA ; case 2: //向下键.
00EA ; user_choosen++;
00EA CC84 ldd R12,y+12
00EC 58C0 xjmp L40
00EE L37:
00EE .dbline 103
00EE ; if(user_choosen==max_item)
00EE .dbline 105
00EE ; {
00EE ; user_choosen=0;
00EE 8FE7 ldi R24,127
00F0 8C15 cp R24,R12
00F2 08F4 brsh L41
00F4 .dbline 105
00F4 5AC0 xjmp L36
00F6 L41:
00F6 .dbline 106
00F6 ; }
00F6 8FE3 ldi R24,63
00F8 8C15 cp R24,R12
00FA 40F4 brsh L43
00FC .dbline 107
00FC ; refresh=1;
00FC .dbline 108
00FC ; break;
00FC AA24 clr R10
00FE A394 inc R10
0100 .dbline 109
0100 ; case 3: //确认键.
0100 10E4 ldi R17,64
0102 0C2D mov R16,R12
0104 0E940000 xcall mod8u
0108 402F mov R20,R16
010A .dbline 110
010A ; if(menu_led[user_choosen].subs!=NULL)
010A 02C0 xjmp L44
010C L43:
010C .dbline 112
010C ; {
010C ; (*menu_led[user_choosen].subs)(); //执行函数.
010C .dbline 113
010C ; }
010C AA24 clr R10
010E .dbline 114
010E ; if(menu_led[user_choosen].children_menus!=NULL)
010E 4C2D mov R20,R12
0110 .dbline 115
0110 ; {
0110 L44:
0110 .dbline 117
0110 ; temp_choosen=user_choosen;
0110 ; menu_led=menu_led[user_choosen].children_menus;
0110 AA20 tst R10
0112 19F0 breq L45
0114 .dbline 118
0114 ; user_choosen=0;
0114 .dbline 119
0114 ; }
0114 C098 cbi 0x18,0
0116 .dbline 120
0116 ; refresh=1;
0116 C19A sbi 0x18,1
0118 .dbline 121
0118 ; break;
0118 02C0 xjmp L46
011A L45:
011A .dbline 124
011A ; case 4: //返回键.
011A ; if(menu_led[user_choosen].parent_menus!=NULL)
011A ; {
011A .dbline 125
011A ; menu_led=menu_led[user_choosen].parent_menus;
011A C09A sbi 0x18,0
011C .dbline 126
011C ; }
011C C198 cbi 0x18,1
011E .dbline 127
011E ; refresh=1;
011E L46:
011E .dbline 128
011E ; break;
011E 0A85 ldd R16,y+10
0120 086B ori R16,184
0122 8EDF xcall _send_comm
0124 .dbline 129
0124 ; default:
0124 042F mov R16,R20
0126 0064 ori R16,64
0128 8BDF xcall _send_comm
012A .dbline 131
012A ; break;
012A ; }
012A 0888 ldd R0,y+16
012C 0020 tst R0
012E 41F0 breq L47
0130 .dbline 131
0130 E62F mov R30,R22
0132 FF27 clr R31
0134 EE0D add R30,R14
0136 FF1D adc R31,R15
0138 0491 lpm R16,Z
013A 0095 com R16
013C 8EDF xcall _send_data
013E 06C0 xjmp L48
0140 L47:
0140 .dbline 132
0140 ; if(refresh) //是否需要刷新LCD标志位.
0140 E62F mov R30,R22
0142 FF27 clr R31
0144 EE0D add R30,R14
0146 FF1D adc R31,R15
0148 0491 lpm R16,Z
014A 87DF xcall _send_data
014C L48:
014C .dbline 134
014C ; {
014C ; lcd_clr();
014C AA20 tst R10
014E 19F0 breq L49
0150 .dbline 135
0150 ; refresh=0;
0150 .dbline 136
0150 ; }
0150 C098 cbi 0x18,0
0152 .dbline 137
0152 ; led_menu_show();
0152 C19A sbi 0x18,1
0154 .dbline 138
0154 ; }
0154 02C0 xjmp L50
0156 L49:
0156 .dbline 141
0156 ;
0156 ; void led_menu_show(void)
0156 ; {
0156 .dbline 142
0156 ; uchar n;
0156 C09A sbi 0x18,0
0158 .dbline 143
0158 ; max_item=menu_led->menu_count;
0158 C198 cbi 0x18,1
015A .dbline 144
015A ; if (max_item>=3) //菜单项为3则表示为主菜单.
015A L50:
015A .dbline 146
015A ; {
015A ; for(n=0;n<3;n++)
015A 0A85 ldd R16,y+10
015C 086B ori R16,184
015E 0F5F subi R16,255 ; addi 1
0160 6FDF xcall _send_comm
0162 .dbline 147
0162 ; {
0162 042F mov R16,R20
0164 0064 ori R16,64
0166 6CDF xcall _send_comm
0168 .dbline 149
0168 ; /*使同一数组元素图形宽度相同,即取最大的图形宽度,这里取96,在数组赋值时也要注意*/
0168 ; draw_bmp(n*2,20,96,0,menu_led[n].display);
0168 0888 ldd R0,y+16
016A 0020 tst R0
016C 61F0 breq L51
016E .dbline 149
016E 2E84 ldd R2,y+14
0170 3324 clr R3
0172 E62F mov R30,R22
0174 FF27 clr R31
0176 E20D add R30,R2
0178 F31D adc R31,R3
017A EE0D add R30,R14
017C FF1D adc R31,R15
017E 0491 lpm R16,Z
0180 0095 com R16
0182 6BDF xcall _send_data
0184 0AC0 xjmp L52
0186 L51:
0186 .dbline 150
0186 ; }
0186 2E84 ldd R2,y+14
0188 3324 clr R3
018A E62F mov R30,R22
018C FF27 clr R31
018E E20D add R30,R2
0190 F31D adc R31,R3
0192 EE0D add R30,R14
0194 FF1D adc R31,R15
0196 0491 lpm R16,Z
0198 60DF xcall _send_data
019A L52:
019A .dbline 152
019A 6395 inc R22
019C .dbline 153
019C L38:
019C .dbline 102
019C C394 inc R12
019E L40:
019E .dbline 102
019E 2C84 ldd R2,y+12
01A0 0E84 ldd R0,y+14
01A2 200C add R2,R0
01A4 C214 cp R12,R2
01A6 08F4 brsh X3
01A8 A2CF xjmp L37
01AA X3:
01AA .dbline -2
01AA L36:
01AA 0E940000 xcall pop_gset5
01AE 2496 adiw R28,4
01B0 .dbline 0 ; func end
01B0 0895 ret
01B2 .dbsym r address 20 c
01B2 .dbsym r p 22 c
01B2 .dbsym r window 10 c
01B2 .dbsym r x 12 c
01B2 .dbsym r bmp 14 pkc
01B2 .dbsym l mod 16 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -