📄 ledmenu_icc.lst
字号:
494 9220 009B STS 0x009B,R2
(0046) main_menu[1].children_menus=green_menu;
496 E68B LDI R24,0x6B
497 E090 LDI R25,0
498 9390 009E STS 0x009E,R25
49A 9380 009D STS 0x009D,R24
(0047) main_menu[1].parent_menus=NULL;
49C 9230 00A0 STS 0x00A0,R3
49E 9220 009F STS 0x009F,R2
(0048)
(0049) main_menu[2].menu_count=3;
4A0 E083 LDI R24,3
4A1 9380 00A1 STS 0x00A1,R24
(0050) main_menu[2].display=red; //点亮红灯.
4A3 E68E LDI R24,0x6E
4A4 E094 LDI R25,4
4A5 9390 00A3 STS 0x00A3,R25
4A7 9380 00A2 STS 0x00A2,R24
(0051) main_menu[2].subs=openred;
4A9 E58C LDI R24,0x5C
4AA E090 LDI R25,0
4AB 9390 00A5 STS 0x00A5,R25
4AD 9380 00A4 STS 0x00A4,R24
(0052) main_menu[2].children_menus=NULL;
4AF 9230 00A7 STS 0x00A7,R3
4B1 9220 00A6 STS 0x00A6,R2
(0053) main_menu[2].parent_menus=NULL;
4B3 9230 00A9 STS 0x00A9,R3
4B5 9220 00A8 STS 0x00A8,R2
4B7 9508 RET
(0054) }
(0055)
(0056) void blue_menu_initial(void)
(0057) {
(0058) blue_menu[0].menu_count=2;
_blue_menu_initial:
4B8 E082 LDI R24,2
4B9 9380 007D STS blue_menu,R24
(0059) blue_menu[0].display=qr; //点亮兰灯,确认.
4BB E28E LDI R24,0x2E
4BC E095 LDI R25,5
4BD 9390 007F STS blue_menu+2,R25
4BF 9380 007E STS blue_menu+1,R24
(0060) blue_menu[0].subs=openblue;
4C1 E58A LDI R24,0x5A
4C2 E090 LDI R25,0
4C3 9390 0081 STS 0x0081,R25
4C5 9380 0080 STS blue_menu+3,R24
(0061) blue_menu[0].children_menus=NULL;
4C7 2422 CLR R2
4C8 2433 CLR R3
4C9 9230 0083 STS 0x0083,R3
4CB 9220 0082 STS 0x0082,R2
(0062) blue_menu[0].parent_menus=main_menu;
4CD E88F LDI R24,0x8F
4CE E090 LDI R25,0
4CF 9390 0085 STS 0x0085,R25
4D1 9380 0084 STS 0x0084,R24
(0063)
(0064) blue_menu[1].menu_count=2;
4D3 E082 LDI R24,2
4D4 9380 0086 STS 0x0086,R24
(0065) blue_menu[1].display=qx; //取消.
4D6 E68E LDI R24,0x6E
4D7 E095 LDI R25,5
4D8 9390 0088 STS 0x0088,R25
4DA 9380 0087 STS 0x0087,R24
(0066) blue_menu[1].subs=closeblue;
4DC E588 LDI R24,0x58
4DD E090 LDI R25,0
4DE 9390 008A STS 0x008A,R25
4E0 9380 0089 STS 0x0089,R24
(0067) blue_menu[1].children_menus=NULL;
4E2 9230 008C STS 0x008C,R3
4E4 9220 008B STS 0x008B,R2
(0068) blue_menu[1].parent_menus=main_menu;
4E6 E88F LDI R24,0x8F
4E7 E090 LDI R25,0
4E8 9390 008E STS 0x008E,R25
4EA 9380 008D STS 0x008D,R24
4EC 9508 RET
(0069) }
(0070)
(0071) void green_menu_initial(void)
(0072) {
(0073) green_menu[0].menu_count=2;
_green_menu_initial:
4ED E082 LDI R24,2
4EE 9380 006B STS green_menu,R24
(0074) green_menu[0].display=qr; //点亮绿灯---确认.
4F0 E28E LDI R24,0x2E
4F1 E095 LDI R25,5
4F2 9390 006D STS green_menu+2,R25
4F4 9380 006C STS green_menu+1,R24
(0075) green_menu[0].subs=opengreen;
4F6 E586 LDI R24,0x56
4F7 E090 LDI R25,0
4F8 9390 006F STS 0x006F,R25
4FA 9380 006E STS green_menu+3,R24
(0076) green_menu[0].children_menus=NULL;
4FC 2422 CLR R2
4FD 2433 CLR R3
4FE 9230 0071 STS 0x0071,R3
500 9220 0070 STS 0x0070,R2
(0077) green_menu[0].parent_menus=main_menu;
502 E88F LDI R24,0x8F
503 E090 LDI R25,0
504 9390 0073 STS 0x0073,R25
506 9380 0072 STS 0x0072,R24
(0078)
(0079) green_menu[1].menu_count=2;
508 E082 LDI R24,2
509 9380 0074 STS 0x0074,R24
(0080) green_menu[1].display=qx; //----取消.
50B E68E LDI R24,0x6E
50C E095 LDI R25,5
50D 9390 0076 STS 0x0076,R25
50F 9380 0075 STS 0x0075,R24
(0081) green_menu[1].subs=closegreen;
511 E584 LDI R24,0x54
512 E090 LDI R25,0
513 9390 0078 STS 0x0078,R25
515 9380 0077 STS 0x0077,R24
(0082) green_menu[1].children_menus=NULL;
517 9230 007A STS 0x007A,R3
519 9220 0079 STS 0x0079,R2
(0083) green_menu[1].parent_menus=main_menu;
51B E88F LDI R24,0x8F
51C E090 LDI R25,0
51D 9390 007C STS 0x007C,R25
51F 9380 007B STS 0x007B,R24
521 9508 RET
_led_menu_pro:
522 934A ST R20,-Y
523 935A ST R21,-Y
(0084) }
(0085)
(0086)
(0087) void led_menu_pro(void)
(0088) {
(0089) max_item=menu_led->menu_count;
524 91E0 0060 LDS R30,menu_led
526 91F0 0061 LDS R31,menu_led+1
528 8020 LDD R2,Z+0
529 9220 0063 STS max_item,R2
(0090) switch(keyval)
52B 9140 0065 LDS R20,keyval
52D 2755 CLR R21
52E 3040 CPI R20,0
52F 0745 CPC R20,R21
530 F409 BNE 0x0532
531 C0A1 RJMP 0x05D3
532 3041 CPI R20,1
533 E0E0 LDI R30,0
534 075E CPC R21,R30
535 F071 BEQ 0x0544
536 3042 CPI R20,2
537 E0E0 LDI R30,0
538 075E CPC R21,R30
539 F0D9 BEQ 0x0555
53A 3043 CPI R20,3
53B E0E0 LDI R30,0
53C 075E CPC R21,R30
53D F139 BEQ 0x0565
53E 3044 CPI R20,4
53F E0E0 LDI R30,0
540 075E CPC R21,R30
541 F409 BNE 0x0543
542 C06C RJMP 0x05AF
543 C08F RJMP 0x05D3
(0091) {
(0092) case 0: break;
(0093) case 1: //向上键.
(0094) if(user_choosen==0)
544 9020 0062 LDS R2,user_choosen
546 2022 TST R2
547 F421 BNE 0x054C
(0095) {
(0096) user_choosen=max_item;
548 9020 0063 LDS R2,max_item
54A 9220 0062 STS user_choosen,R2
(0097) }
(0098) refresh=1;
54C E081 LDI R24,1
54D 9380 0064 STS refresh,R24
(0099) user_choosen--;
54F 9180 0062 LDS R24,user_choosen
551 5081 SUBI R24,1
552 9380 0062 STS user_choosen,R24
(0100) break;
554 C07E RJMP 0x05D3
(0101) case 2: //向下键.
(0102) user_choosen++;
555 9180 0062 LDS R24,user_choosen
557 5F8F SUBI R24,0xFF
558 9380 0062 STS user_choosen,R24
(0103) if(user_choosen==max_item)
55A 9020 0063 LDS R2,max_item
55C 1582 CP R24,R2
55D F419 BNE 0x0561
(0104) {
(0105) user_choosen=0;
55E 2422 CLR R2
55F 9220 0062 STS user_choosen,R2
(0106) }
(0107) refresh=1;
561 E081 LDI R24,1
562 9380 0064 STS refresh,R24
(0108) break;
564 C06E RJMP 0x05D3
(0109) case 3: //确认键.
(0110) if(menu_led[user_choosen].subs!=NULL)
565 9020 0062 LDS R2,user_choosen
567 E089 LDI R24,0x9
568 9D82 MUL R24,R2
569 01F0 MOVW R30,R0
56A 9020 0060 LDS R2,menu_led
56C 9030 0061 LDS R3,menu_led+1
56E 0DE2 ADD R30,R2
56F 1DF3 ADC R31,R3
570 8023 LDD R2,Z+3
571 8034 LDD R3,Z+4
572 2022 TST R2
573 F411 BNE 0x0576
574 2033 TST R3
575 F079 BEQ 0x0585
(0111) {
(0112) (*menu_led[user_choosen].subs)(); //执行函数.
576 9020 0062 LDS R2,user_choosen
578 9D82 MUL R24,R2
579 01F0 MOVW R30,R0
57A 9020 0060 LDS R2,menu_led
57C 9030 0061 LDS R3,menu_led+1
57E 0DE2 ADD R30,R2
57F 1DF3 ADC R31,R3
580 81A3 LDD R26,Z+3
581 81B4 LDD R27,Z+4
582 01FD MOVW R30,R26
583 940E 06F9 CALL xicall
(0113) }
(0114) if(menu_led[user_choosen].children_menus!=NULL)
585 9020 0062 LDS R2,user_choosen
587 E089 LDI R24,0x9
588 9D82 MUL R24,R2
589 01F0 MOVW R30,R0
58A 9020 0060 LDS R2,menu_led
58C 9030 0061 LDS R3,menu_led+1
58E 0DE2 ADD R30,R2
58F 1DF3 ADC R31,R3
590 8025 LDD R2,Z+5
591 8036 LDD R3,Z+6
592 2022 TST R2
593 F411 BNE 0x0596
594 2033 TST R3
595 F0A9 BEQ 0x05AB
(0115) {
(0116) temp_choosen=user_choosen;
596 9020 0062 LDS R2,user_choosen
598 9220 006A STS temp_choosen,R2
(0117) menu_led=menu_led[user_choosen].children_menus;
59A 9D82 MUL R24,R2
59B 01F0 MOVW R30,R0
59C 9020 0060 LDS R2,menu_led
59E 9030 0061 LDS R3,menu_led+1
5A0 0DE2 ADD R30,R2
5A1 1DF3 ADC R31,R3
5A2 8025 LDD R2,Z+5
5A3 8036 LDD R3,Z+6
5A4 9230 0061 STS menu_led+1,R3
5A6 9220 0060 STS menu_led,R2
(0118) user_choosen=0;
5A8 2422 CLR R2
5A9 9220 0062 STS user_choosen,R2
(0119) }
(0120) refresh=1;
5AB E081 LDI R24,1
5AC 9380 0064 STS refresh,R24
(0121) break;
5AE C024 RJMP 0x05D3
(0122) case 4: //返回键.
(0123) if(menu_led[user_choosen].parent_menus!=NULL)
5AF 9020 0062 LDS R2,user_choosen
5B1 E089 LDI R24,0x9
5B2 9D82 MUL R24,R2
5B3 01F0 MOVW R30,R0
5B4 9020 0060 LDS R2,menu_led
5B6 9030 0061 LDS R3,menu_led+1
5B8 0DE2 ADD R30,R2
5B9 1DF3 ADC R31,R3
5BA 8027 LDD R2,Z+7
5BB 8430 LDD R3,Z+8
5BC 2022 TST R2
5BD F411 BNE 0x05C0
5BE 2033 TST R3
5BF F081 BEQ 0x05D0
(0124) {
(0125) menu_led=menu_led[user_choosen].parent_menus;
5C0 9020 0062 LDS R2,user_choosen
5C2 9D82 MUL R24,R2
5C3 01F0 MOVW R30,R0
5C4 9020 0060 LDS R2,menu_led
5C6 9030 0061 LDS R3,menu_led+1
5C8 0DE2 ADD R30,R2
5C9 1DF3 ADC R31,R3
5CA 8027 LDD R2,Z+7
5CB 8430 LDD R3,Z+8
5CC 9230 0061 STS menu_led+1,R3
5CE 9220 0060 STS menu_led,R2
(0126) }
(0127) refresh=1;
5D0 E081 LDI R24,1
5D1 9380 0064 STS refresh,R24
(0128) break;
(0129) default:
(0130) break;
(0131) }
(0132) if(refresh) //是否需要刷新LCD标志位.
5D3 9020 0064 LDS R2,refresh
5D5 2022 TST R2
5D6 F021 BEQ 0x05DB
(0133) {
(0134) lcd_clr();
5D7 DD75 RCALL _lcd_clr
(0135) refresh=0;
5D8 2422 CLR R2
5D9 9220 0064 STS refresh,R2
(0136) }
(0137) led_menu_show();
5DB D003 RCALL _led_menu_show
5DC 9159 LD R21,Y+
5DD 9149 LD R20,Y+
5DE 9508 RET
_led_menu_show:
n --> R20
5DF 940E 06EF CALL push_xgsetF000
5E1 9726 SBIW R28,6
(0138) }
(0139)
(0140) void led_menu_show(void)
(0141) {
(0142) uchar n;
(0143) max_item=menu_led->menu_count;
5E2 91E0 0060 LDS R30,menu_led
5E4 91F0 0061 LDS R31,menu_led+1
5E6 8020 LDD R2,Z+0
5E7 9220 0063 STS max_item,R2
(0144) if (max_item>=3) //菜单项为3则表示为主菜单.
5E9 2D82 MOV R24,R2
5EA 3083 CPI R24,3
5EB F0F0 BCS 0x060A
(0145) {
(0146) for(n=0;n<3;n++)
5EC 2744 CLR R20
5ED C016 RJMP 0x0604
(0147) {
(0148) /*使同一数组元素图形宽度相同,即取最大的图形宽度,这里取96,在数组赋值时也要注意*/
(0149) draw_bmp(n*2,20,96,0,menu_led[n].display);
5EE E089 LDI R24,0x9
5EF 9F84 MUL R24,R20
5F0 01F0 MOVW R30,R0
5F1 9020 0060 LDS R2,menu_led
5F3 9030 0061 LDS R3,menu_led+1
5F5 0DE2 ADD R30,R2
5F6 1DF3 ADC R31,R3
5F7 8021 LDD R2,Z+1
5F8 8032 LDD R3,Z+2
5F9 823D STD Y+5,R3
5FA 822C STD Y+4,R2
5FB 2422 CLR R2
5FC 822A STD Y+2,R2
5FD E680 LDI R24,0x60
5FE 8388 STD Y+0,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -