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

📄 menu.s

📁 一个用于LCD的菜单模式界面的程序,如何实现滚屏.
💻 S
📖 第 1 页 / 共 3 页
字号:
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e VoiceMenu _VoiceMenu A[45:5]S[MenuItem]
_RobotMenu::
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L19
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L20
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L21
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L22
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L16
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e RobotMenu _RobotMenu A[45:5]S[MenuItem]
_MainMenu::
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L8
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _TimeMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L23
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _VoiceMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L24
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _RobotMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L25
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _FlashMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkb 1
	.area idata
	.byte 5
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word L16
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word PL_NullSubs
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e MainMenu _MainMenu A[45:5]S[MenuItem]
_MenuPoint::
	.blkw 1
	.area idata
	.word _MainMenu
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e MenuPoint _MenuPoint pS[MenuItem]
_DisplayStart::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e DisplayStart _DisplayStart c
_UserChoose::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e UserChoose _UserChoose c
_DisplayPoint::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e DisplayPoint _DisplayPoint c
_ShowCount::
	.blkb 1
	.area idata
	.byte 2
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbsym e ShowCount _ShowCount c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\Menu\menu.c
	.dbfunc e ShowMenu _ShowMenu fV
;              n -> R20
	.even
_ShowMenu::
	xcall push_gset1
	sbiw R28,2
	.dbline -1
	.dbline 139
; }
; //------------------------------------------------------------------------------
; 
; 
; 
; 
; 
; 
; /*********************** 
; * 结构体区 * 
; ***********************/ 
; //----------------------以下为例子,请根据实际情况修改---------------------------
; struct MenuItem TimeMenu[4];
; struct MenuItem FlashMenu[5];
; struct MenuItem VoiceMenu[5];
; struct MenuItem RobotMenu[5];
; struct MenuItem MainMenu[5];
; 
; struct MenuItem TimeMenu[4]=
; {  //MenuCount		 DisplayString			 Subs				ChildrenMenus		ParentMenus
; 	 {4, 			 "1.Time Set",			 TimeSet,			Null,				MainMenu},
; 	 {4,			 "2.Date Set",		 	 DateSet,			Null,				MainMenu},
; 	 {4,			 "3.AlertSet",		 	 AlertSet,			Null,				MainMenu},
; 	 {4,  			 "4.Back",		 		 NullSubs,			MainMenu,			MainMenu},
; };	
; 
; struct MenuItem FlashMenu[5]=
; {  //MenuCount		 DisplayString			 Subs				ChildrenMenus		ParentMenus
; 	 {5, 			 "1.Flash Record",		 NullSubs,			Null,				MainMenu},
; 	 {5,			 "2.Play",		 	 	 NullSubs,			Null,				MainMenu},
; 	 {5,			 "3.Pause",		 	 	 NullSubs,			Null,				MainMenu},
; 	 {5,  			 "4.Flash Delete",		 NullSubs,			Null,				MainMenu},
; 	 {5,			 "5.Back",				 NullSubs,			MainMenu,			MainMenu},
; };	 
; 
; struct MenuItem VoiceMenu[5]=
; {  //MenuCount		 DisplayString			 Subs				ChildrenMenus		ParentMenus
; 	 {5, 			 "1.Voice Record"	,	 NullSubs,			Null,				MainMenu},
; 	 {5,			 "2.Play",		 	 	 NullSubs,			Null,				MainMenu},
; 	 {5,			 "3.Pause",		 	     NullSubs,			Null,				MainMenu},
; 	 {5,  			 "4.Voice Delete",		 NullSubs,			Null,				MainMenu},
;  	 {5,			 "5.Back",				 NullSubs,			MainMenu,			MainMenu},
; };	 
; 
; struct MenuItem RobotMenu[5]=
; {  //MenuCount		 DisplayString			 Subs				ChildrenMenus		ParentMenus
; 	 {5, 			 "1.Turn Left",		 	 NullSubs,			Null,				MainMenu},
; 	 {5,			 "2.Turn Right",		 NullSubs,			Null,				MainMenu},
; 	 {5,			 "3.Go Ahead",		 	 NullSubs,			Null,				MainMenu},
; 	 {5,  			 "4.Go Back",		 	 NullSubs,			Null,				MainMenu},
; 	 {5,			 "5.Back",				 NullSubs,			MainMenu,			MainMenu},
; };	 
; 
; 
; struct MenuItem MainMenu[5]=
; {  //MenuCount		 DisplayString			 Subs				ChildrenMenus		ParentMenus
; 	 {5, 			 "1.Time Set"	,		 NullSubs,			TimeMenu,			Null},
; 	 {5,			 "2.Voice Center",		 NullSubs,			VoiceMenu,			Null},
; 	 {5,			 "3.Robot Control",		 NullSubs,			RobotMenu,			Null},
; 	 {5,  			 "4.Flash Option",		 NullSubs,			FlashMenu,			Null},
;  	 {5,			 "5.Back",				 NullSubs,			MainMenu,			MainMenu},
; };	
; //------------------------------------------------------------------------------
; 
; 
; 
; 
; 
; 
; /*********************** 
; * 全局变量声明区 * 
; ***********************/ 
; struct MenuItem (*MenuPoint) = MainMenu; //结构体指针,指向结构体后由内部函数指针指向功能函数
; unsigned char DisplayStart = 0; //显示时的第一个菜单项
; unsigned char UserChoose = 0;  	//用户所选菜单项
; unsigned char DisplayPoint = 0; //显示指针
; unsigned MaxItems; 		   	 	//同级最大菜单数
; unsigned char ShowCount=2;		//同屏显示菜单数
; 
; 
; /*********************** 
; *显示函数区 * 
; ***********************/ 
; void ShowMenu(void) 
; {
	.dbline 141
;  	 unsigned char n;
; 	 MaxItems = MenuPoint[0].MenuCount;//定义最大同级菜单
	lds R30,_MenuPoint
	lds R31,_MenuPoint+1
	ldd R2,z+0
	clr R3
	sts _MaxItems+1,R3
	sts _MaxItems,R2
	.dbline 142
; 	 DisplayPoint = DisplayStart;
	lds R2,_DisplayStart
	sts _DisplayPoint,R2
	.dbline 143
; 	 for(n=0;DisplayPoint<MaxItems&&n<ShowCount;n++) 
	clr R20
	xjmp L30
L27:
	.dbline 144
; 	 	{if(DisplayPoint==UserChoose)
	.dbline 144
	lds R2,_UserChoose
	lds R3,_DisplayPoint
	cp R3,R2
	brne L31
	.dbline 145
; 		 		LCD_write_string(0,n,"->");
	ldi R24,<L33
	ldi R25,>L33
	std y+1,R25
	std y+0,R24
	mov R18,R20
	clr R19
	clr R16
	clr R17
	xcall _LCD_write_string
L31:
	.dbline 146
	lds R2,_DisplayPoint
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _DisplayPoint,R24
	ldi R16,9
	ldi R17,0
	movw R18,R2
	xcall empy16s
	movw R30,R16
	lds R2,_MenuPoint
	lds R3,_MenuPoint+1
	add R30,R2
	adc R31,R3
	ldd R2,z+1
	ldd R3,z+2
	std y+1,R3
	std y+0,R2
	mov R18,R20
	clr R19
	ldi R16,2
	ldi R17,0
	xcall _LCD_write_string
	.dbline 148
L28:
	.dbline 143
	inc R20
L30:
	.dbline 143
	lds R2,_MaxItems
	lds R3,_MaxItems+1
	lds R4,_DisplayPoint
	clr R5
	cp R4,R2
	cpc R5,R3
	brsh L34
	lds R2,_ShowCount
	cp R20,R2
	brlo L27
L34:
	.dbline -2
L26:
	adiw R28,2
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r n 20 c
	.dbend

⌨️ 快捷键说明

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