⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ledmenu_icc.lst

📁 做点阵式lcd多级菜单开发的一个例子 可以帮助初学者了解 交互式界面简单设计的部分
💻 LST
📖 第 1 页 / 共 4 页
字号:
     5FF E124      LDI	R18,0x14
     600 2F04      MOV	R16,R20
     601 0F00      LSL	R16
     602 DD75      RCALL	_draw_bmp
     603 9543      INC	R20
     604 3043      CPI	R20,3
     605 F340      BCS	0x05EE
(0150) 		}
(0151) 		select_item(user_choosen);		//标记出当前菜单项.
     606 9100 0062 LDS	R16,user_choosen
     608 D057      RCALL	_select_item
(0152) 	}
     609 C053      RJMP	0x065D
(0153) 	else
(0154) 	{
(0155) 		switch(temp_choosen)
     60A 9160 006A LDS	R22,temp_choosen
     60C 2777      CLR	R23
     60D 3060      CPI	R22,0
     60E 0767      CPC	R22,R23
     60F F049      BEQ	0x0619
     610 3061      CPI	R22,1
     611 E0E0      LDI	R30,0
     612 077E      CPC	R23,R30
     613 F089      BEQ	0x0625
     614 3062      CPI	R22,2
     615 E0E0      LDI	R30,0
     616 077E      CPC	R23,R30
     617 F0C9      BEQ	0x0631
     618 C023      RJMP	0x063C
(0156) 		{
(0157) 			case 0:
(0158) 				draw_bmp(0,20,96,0,blue);
     619 EE8E      LDI	R24,0xEE
     61A E092      LDI	R25,2
     61B 839D      STD	Y+5,R25
     61C 838C      STD	Y+4,R24
     61D 2422      CLR	R2
     61E 822A      STD	Y+2,R2
     61F E680      LDI	R24,0x60
     620 8388      STD	Y+0,R24
     621 E124      LDI	R18,0x14
     622 2700      CLR	R16
     623 DD54      RCALL	_draw_bmp
(0159) 				break;
     624 C017      RJMP	0x063C
(0160) 			case 1:
(0161) 				draw_bmp(0,20,96,0,green);
     625 EA8E      LDI	R24,0xAE
     626 E093      LDI	R25,3
     627 839D      STD	Y+5,R25
     628 838C      STD	Y+4,R24
     629 2422      CLR	R2
     62A 822A      STD	Y+2,R2
     62B E680      LDI	R24,0x60
     62C 8388      STD	Y+0,R24
     62D E124      LDI	R18,0x14
     62E 2700      CLR	R16
     62F DD48      RCALL	_draw_bmp
(0162) 				break;
     630 C00B      RJMP	0x063C
(0163) 			case 2:
(0164) 				draw_bmp(0,20,96,0,red);
     631 E68E      LDI	R24,0x6E
     632 E094      LDI	R25,4
     633 839D      STD	Y+5,R25
     634 838C      STD	Y+4,R24
     635 2422      CLR	R2
     636 822A      STD	Y+2,R2
     637 E680      LDI	R24,0x60
     638 8388      STD	Y+0,R24
     639 E124      LDI	R18,0x14
     63A 2700      CLR	R16
     63B DD3C      RCALL	_draw_bmp
(0165) 				break;
(0166) 			default:
(0167) 				break;
(0168) 		}
(0169) 		for(n=0;n<max_item;n++)
     63C 2744      CLR	R20
     63D C017      RJMP	0x0655
(0170) 		{
(0171) 			draw_bmp((n+1)*2,20,32,0,menu_led[n].display);
     63E E089      LDI	R24,0x9
     63F 9F84      MUL	R24,R20
     640 01F0      MOVW	R30,R0
     641 9020 0060 LDS	R2,menu_led
     643 9030 0061 LDS	R3,menu_led+1
     645 0DE2      ADD	R30,R2
     646 1DF3      ADC	R31,R3
     647 8021      LDD	R2,Z+1
     648 8032      LDD	R3,Z+2
     649 823D      STD	Y+5,R3
     64A 822C      STD	Y+4,R2
     64B 2422      CLR	R2
     64C 822A      STD	Y+2,R2
     64D E280      LDI	R24,0x20
     64E 8388      STD	Y+0,R24
     64F E124      LDI	R18,0x14
     650 2F04      MOV	R16,R20
     651 5F0F      SUBI	R16,0xFF
     652 0F00      LSL	R16
     653 DD24      RCALL	_draw_bmp
     654 9543      INC	R20
     655 9020 0063 LDS	R2,max_item
     657 1542      CP	R20,R2
     658 F328      BCS	0x063E
(0172) 		}
(0173) 		select_item(user_choosen+1);					
     659 9100 0062 LDS	R16,user_choosen
     65B 5F0F      SUBI	R16,0xFF
     65C D003      RCALL	_select_item
(0174) 	}		
     65D 9626      ADIW	R28,6
     65E 940C 06F4 JMP	pop_xgsetF000
_select_item:
  n                    --> R10
     660 92AA      ST	R10,-Y
     661 2EA0      MOV	R10,R16
     662 9726      SBIW	R28,6
(0175) }
(0176) 
(0177) void select_item(uchar n)
(0178) {
(0179) 	draw_bmp(n*2,2,16,0,curflag);
     663 EA8E      LDI	R24,0xAE
     664 E095      LDI	R25,5
     665 839D      STD	Y+5,R25
     666 838C      STD	Y+4,R24
     667 2422      CLR	R2
     668 822A      STD	Y+2,R2
     669 E180      LDI	R24,0x10
     66A 8388      STD	Y+0,R24
     66B E022      LDI	R18,2
     66C 2D0A      MOV	R16,R10
     66D 0F00      LSL	R16
     66E DD09      RCALL	_draw_bmp
     66F 9626      ADIW	R28,6
     670 90A9      LD	R10,Y+
     671 9508      RET
(0180) }
(0181) 
(0182) void openblue(void)
(0183) {
(0184) 	blueon;
_openblue:
     672 9AC5      SBI	0x18,5
(0185) 	greenoff;
     673 98C6      CBI	0x18,6
(0186) 	redoff;
     674 98C7      CBI	0x18,7
     675 9508      RET
(0187) }
(0188) 
(0189) void opengreen(void)
(0190) {
(0191) 	blueoff;
_opengreen:
     676 98C5      CBI	0x18,5
(0192) 	greenon;
     677 9AC6      SBI	0x18,6
(0193) 	redoff;
     678 98C7      CBI	0x18,7
     679 9508      RET
(0194) }
(0195) 
(0196) void openred(void)
(0197) {
(0198) 	blueoff;
_openred:
     67A 98C5      CBI	0x18,5
(0199) 	greenoff;
     67B 98C6      CBI	0x18,6
(0200) 	redon;
     67C 9AC7      SBI	0x18,7
     67D 9508      RET
(0201) }
(0202) 
(0203) void closeblue(void)
(0204) {
(0205) 	blueoff;
_closeblue:
     67E 98C5      CBI	0x18,5
     67F 9508      RET
(0206) }
(0207) 
(0208) void closegreen(void)
(0209) {
(0210) 	greenoff;
_closegreen:
     680 98C6      CBI	0x18,6
     681 9508      RET
_main:
     682 9726      SBIW	R28,6
(0211) }
(0212) 	
(0213) 
(0214) 
(0215) 
(0216) /*************************************************
(0217) 主程序.
(0218) **************************************************/
(0219) 
(0220) void main(void)
(0221) {
(0222) 	main_init();
     683 DDE1      RCALL	_main_init
(0223) 	lcd_init();
     684 DCBF      RCALL	_lcd_init
(0224) 	lcd_clr();
     685 DCC7      RCALL	_lcd_clr
(0225) 	draw_bmp(0,0,128,0,xtcsh);		//函数调用形式为页,列,宽度,数据指针.
     686 E58E      LDI	R24,0x5E
     687 E090      LDI	R25,0
     688 839D      STD	Y+5,R25
     689 838C      STD	Y+4,R24
     68A 2422      CLR	R2
     68B 822A      STD	Y+2,R2
     68C E880      LDI	R24,0x80
     68D 8388      STD	Y+0,R24
     68E 2722      CLR	R18
     68F 2700      CLR	R16
     690 DCE7      RCALL	_draw_bmp
(0226) 	draw_bmp(2,8,72,0,writeby);
     691 E58E      LDI	R24,0x5E
     692 E091      LDI	R25,1
     693 839D      STD	Y+5,R25
     694 838C      STD	Y+4,R24
     695 2422      CLR	R2
     696 822A      STD	Y+2,R2
     697 E488      LDI	R24,0x48
     698 8388      STD	Y+0,R24
     699 E028      LDI	R18,0x8
     69A E002      LDI	R16,2
     69B DCDC      RCALL	_draw_bmp
(0227) 	draw_bmp(4,56,32,1,jiangping);
     69C EE8E      LDI	R24,0xEE
     69D E091      LDI	R25,1
     69E 839D      STD	Y+5,R25
     69F 838C      STD	Y+4,R24
     6A0 E081      LDI	R24,1
     6A1 838A      STD	Y+2,R24
     6A2 E280      LDI	R24,0x20
     6A3 8388      STD	Y+0,R24
     6A4 E328      LDI	R18,0x38
     6A5 E004      LDI	R16,4
     6A6 DCD1      RCALL	_draw_bmp
(0228) 
(0229) 	blueon;
     6A7 9AC5      SBI	0x18,5
(0230) 	greenon;
     6A8 9AC6      SBI	0x18,6
(0231) 	redon;
     6A9 9AC7      SBI	0x18,7
(0232) 		
(0233) 	delay_ms(3000);				//延时3秒.
     6AA EB08      LDI	R16,0xB8
     6AB E01B      LDI	R17,0xB
     6AC DC6B      RCALL	_delay_ms
(0234) 	lcd_clr();
     6AD DC9F      RCALL	_lcd_clr
(0235) 	
(0236) 	blueoff;
     6AE 98C5      CBI	0x18,5
(0237) 	greenoff;
     6AF 98C6      CBI	0x18,6
(0238) 	redoff;
     6B0 98C7      CBI	0x18,7
(0239) 	
(0240) 	main_menu_initial();
     6B1 DDBE      RCALL	_main_menu_initial
(0241) 	blue_menu_initial();
     6B2 DE05      RCALL	_blue_menu_initial
(0242) 	green_menu_initial();
     6B3 DE39      RCALL	_green_menu_initial
     6B4 C004      RJMP	0x06B9
(0243) 
(0244)  	while(1)
(0245) 	{
(0246)  		keyval=get_key();	 			  //读键.
     6B5 DD2D      RCALL	_get_key
     6B6 9300 0065 STS	keyval,R16
(0247) 		led_menu_pro();
FILE: <library>
     6B8 DE69      RCALL	_led_menu_pro
     6B9 CFFB      RJMP	0x06B5
     6BA 9626      ADIW	R28,6
     6BB 9508      RET
push_arg4:
     6BC 933A      ST	R19,-Y
     6BD 932A      ST	R18,-Y
push_arg2:
     6BE 931A      ST	R17,-Y
     6BF 930A      ST	R16,-Y
     6C0 9508      RET
mod8u:
     6C1 9468      BSET	6
     6C2 C001      RJMP	xdiv8u
div8u:
     6C3 94E8      BCLR	6
xdiv8u:
     6C4 932A      ST	R18,-Y
     6C5 92FA      ST	R15,-Y
     6C6 92EA      ST	R14,-Y
     6C7 24FF      CLR	R15
     6C8 24EE      CLR	R14
     6C9 E120      LDI	R18,0x10
     6CA 0F00      LSL	R16
     6CB 1CFF      ROL	R15
     6CC 1CEE      ROL	R14
     6CD 16E1      CP	R14,R17
     6CE F010      BCS	0x06D1
     6CF 1AE1      SUB	R14,R17
     6D0 9503      INC	R16
     6D1 952A      DEC	R18
     6D2 F7B9      BNE	0x06CA
     6D3 F40E      BRTC	0x06D5
     6D4 2D0E      MOV	R16,R14
     6D5 90E9      LD	R14,Y+
     6D6 90F9      LD	R15,Y+
     6D7 9129      LD	R18,Y+
     6D8 9508      RET
pop_xgsetF0FC:
     6D9 90A9      LD	R10,Y+
     6DA 90B9      LD	R11,Y+
     6DB 90C9      LD	R12,Y+
     6DC 90D9      LD	R13,Y+
     6DD 90E9      LD	R14,Y+
     6DE 90F9      LD	R15,Y+
     6DF 9149      LD	R20,Y+
     6E0 9159      LD	R21,Y+
     6E1 9169      LD	R22,Y+
     6E2 9179      LD	R23,Y+
     6E3 9508      RET
push_xgsetF0FC:
     6E4 937A      ST	R23,-Y
     6E5 936A      ST	R22,-Y
push_xgset30FC:
     6E6 935A      ST	R21,-Y
     6E7 934A      ST	R20,-Y
push_xgset00FC:
     6E8 92FA      ST	R15,-Y
     6E9 92EA      ST	R14,-Y
push_xgset003C:
     6EA 92DA      ST	R13,-Y
     6EB 92CA      ST	R12,-Y
     6EC 92BA      ST	R11,-Y
     6ED 92AA      ST	R10,-Y
     6EE 9508      RET
push_xgsetF000:
     6EF 937A      ST	R23,-Y
     6F0 936A      ST	R22,-Y
     6F1 935A      ST	R21,-Y
     6F2 934A      ST	R20,-Y
     6F3 9508      RET
pop_xgsetF000:
     6F4 9149      LD	R20,Y+
     6F5 9159      LD	R21,Y+
     6F6 9169      LD	R22,Y+
     6F7 9179      LD	R23,Y+
     6F8 9508      RET
xicall:
     6F9 920A      ST	R0,-Y
     6FA 95C8      LPM
     6FB 920A      ST	R0,-Y
     6FC 9631      ADIW	R30,1
     6FD 95C8      LPM
     6FE 2DF0      MOV	R31,R0
     6FF 91E9      LD	R30,Y+
     700 9009      LD	R0,Y+
     701 9409      IJMP

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -