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

📄 menu.s

📁 简单菜单程序,八个按键.使用AVR单片机.2008/3/24--2008/3/29 编译器为ICCAVR7.14.晶振7.3728M,单片机为ATmega16(用ATmega32在proteus中仿
💻 S
📖 第 1 页 / 共 3 页
字号:
	sts _main_menu+9+1+1,R25
	sts _main_menu+9+1,R24
	.dbline 45
	sts _main_menu+9+3+1,R3
	sts _main_menu+9+3,R2
	.dbline 46
	ldi R24,<_green_menu
	ldi R25,>_green_menu
	sts _main_menu+9+5+1,R25
	sts _main_menu+9+5,R24
	.dbline 47
	sts _main_menu+9+7+1,R3
	sts _main_menu+9+7,R2
	.dbline 49
	ldi R24,3
	sts _main_menu+18,R24
	.dbline 50
	ldi R24,<_red
	ldi R25,>_red
	sts _main_menu+18+1+1,R25
	sts _main_menu+18+1,R24
	.dbline 51
	ldi R24,<PL_openred
	ldi R25,>PL_openred
	sts _main_menu+18+3+1,R25
	sts _main_menu+18+3,R24
	.dbline 52
	sts _main_menu+18+5+1,R3
	sts _main_menu+18+5,R2
	.dbline 53
	sts _main_menu+18+7+1,R3
	sts _main_menu+18+7,R2
	.dbline -2
L91:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e blue_menu_initial _blue_menu_initial fV
	.even
_blue_menu_initial::
	.dbline -1
	.dbline 57
	.dbline 58
	ldi R24,2
	sts _blue_menu,R24
	.dbline 59
	ldi R24,<_qr
	ldi R25,>_qr
	sts _blue_menu+1+1,R25
	sts _blue_menu+1,R24
	.dbline 60
	ldi R24,<PL_openblue
	ldi R25,>PL_openblue
	sts _blue_menu+3+1,R25
	sts _blue_menu+3,R24
	.dbline 61
	clr R2
	clr R3
	sts _blue_menu+5+1,R3
	sts _blue_menu+5,R2
	.dbline 62
	ldi R24,<_main_menu
	ldi R25,>_main_menu
	sts _blue_menu+7+1,R25
	sts _blue_menu+7,R24
	.dbline 64
	ldi R24,2
	sts _blue_menu+9,R24
	.dbline 65
	ldi R24,<_qx
	ldi R25,>_qx
	sts _blue_menu+9+1+1,R25
	sts _blue_menu+9+1,R24
	.dbline 66
	ldi R24,<PL_closeblue
	ldi R25,>PL_closeblue
	sts _blue_menu+9+3+1,R25
	sts _blue_menu+9+3,R24
	.dbline 67
	sts _blue_menu+9+5+1,R3
	sts _blue_menu+9+5,R2
	.dbline 68
	ldi R24,<_main_menu
	ldi R25,>_main_menu
	sts _blue_menu+9+7+1,R25
	sts _blue_menu+9+7,R24
	.dbline -2
L114:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e green_menu_initial _green_menu_initial fV
	.even
_green_menu_initial::
	.dbline -1
	.dbline 72
	.dbline 73
	ldi R24,2
	sts _green_menu,R24
	.dbline 74
	ldi R24,<_qr
	ldi R25,>_qr
	sts _green_menu+1+1,R25
	sts _green_menu+1,R24
	.dbline 75
	ldi R24,<PL_opengreen
	ldi R25,>PL_opengreen
	sts _green_menu+3+1,R25
	sts _green_menu+3,R24
	.dbline 76
	clr R2
	clr R3
	sts _green_menu+5+1,R3
	sts _green_menu+5,R2
	.dbline 77
	ldi R24,<_main_menu
	ldi R25,>_main_menu
	sts _green_menu+7+1,R25
	sts _green_menu+7,R24
	.dbline 79
	ldi R24,2
	sts _green_menu+9,R24
	.dbline 80
	ldi R24,<_qx
	ldi R25,>_qx
	sts _green_menu+9+1+1,R25
	sts _green_menu+9+1,R24
	.dbline 81
	ldi R24,<PL_closegreen
	ldi R25,>PL_closegreen
	sts _green_menu+9+3+1,R25
	sts _green_menu+9+3,R24
	.dbline 82
	sts _green_menu+9+5+1,R3
	sts _green_menu+9+5,R2
	.dbline 83
	ldi R24,<_main_menu
	ldi R25,>_main_menu
	sts _green_menu+9+7+1,R25
	sts _green_menu+9+7,R24
	.dbline -2
L128:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e led_menu_pro _led_menu_pro fV
	.even
_led_menu_pro::
	xcall push_gset1
	.dbline -1
	.dbline 88
	.dbline 89
	lds R30,_menu_led
	lds R31,_menu_led+1
	ldd R2,z+0
	sts _max_item,R2
	.dbline 90
	lds R20,_keyval
	clr R21
	cpi R20,0
	cpc R20,R21
	brne X9
	xjmp L144
X9:
X4:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L147
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L150
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L153
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	brne X10
	xjmp L158
X10:
	xjmp L144
X5:
	.dbline 91
	.dbline 92
L147:
	.dbline 94
	lds R2,_user_choosen
	tst R2
	brne L148
	.dbline 95
	.dbline 96
	lds R2,_max_item
	sts _user_choosen,R2
	.dbline 97
L148:
	.dbline 98
	ldi R24,1
	sts _refresh,R24
	.dbline 99
	lds R24,_user_choosen
	subi R24,1
	sts _user_choosen,R24
	.dbline 100
	xjmp L144
L150:
	.dbline 102
	lds R24,_user_choosen
	subi R24,255    ; addi 1
	sts _user_choosen,R24
	.dbline 103
	lds R2,_max_item
	cp R24,R2
	brne L151
	.dbline 104
	.dbline 105
	clr R2
	sts _user_choosen,R2
	.dbline 106
L151:
	.dbline 107
	ldi R24,1
	sts _refresh,R24
	.dbline 108
	xjmp L144
L153:
	.dbline 110
	lds R2,_user_choosen
	ldi R24,9
	mul R24,R2
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+3
	ldd R3,z+4
	tst R2
	brne X6
	tst R3
	breq L154
X6:
	.dbline 111
	.dbline 112
	lds R2,_user_choosen
	ldi R24,9
	mul R24,R2
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R26,z+3
	ldd R27,z+4
	movw R30,R26
	xcall xicall
	.dbline 113
L154:
	.dbline 114
	lds R2,_user_choosen
	ldi R24,9
	mul R24,R2
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+5
	ldd R3,z+6
	tst R2
	brne X7
	tst R3
	breq L156
X7:
	.dbline 115
	.dbline 116
	lds R2,_user_choosen
	sts _temp_choosen,R2
	.dbline 117
	ldi R24,9
	mul R24,R2
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+5
	ldd R3,z+6
	sts _menu_led+1,R3
	sts _menu_led,R2
	.dbline 118
	clr R2
	sts _user_choosen,R2
	.dbline 119
L156:
	.dbline 120
	ldi R24,1
	sts _refresh,R24
	.dbline 121
	xjmp L144
L158:
	.dbline 123
	lds R2,_user_choosen
	ldi R24,9
	mul R24,R2
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+7
	ldd R3,z+8
	tst R2
	brne X8
	tst R3
	breq L159
X8:
	.dbline 124
	.dbline 125
	lds R2,_user_choosen
	ldi R24,9
	mul R24,R2
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+7
	ldd R3,z+8
	sts _menu_led+1,R3
	sts _menu_led,R2
	.dbline 126
L159:
	.dbline 127
	ldi R24,1
	sts _refresh,R24
	.dbline 128
	.dbline 130
L144:
	.dbline 132
	lds R2,_refresh
	tst R2
	breq L161
	.dbline 133
	.dbline 134
	xcall _lcd_clr
	.dbline 135
	clr R2
	sts _refresh,R2
	.dbline 136
L161:
	.dbline 137
	xcall _led_menu_show
	.dbline -2
L142:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e led_menu_show _led_menu_show fV
;              n -> R20
	.even
_led_menu_show::
	xcall push_gset2
	sbiw R28,6
	.dbline -1
	.dbline 141
	.dbline 143
	lds R30,_menu_led
	lds R31,_menu_led+1
	ldd R2,z+0
	sts _max_item,R2
	.dbline 144
	mov R24,R2
	cpi R24,3
	brlo L164
	.dbline 145
	.dbline 146
	clr R20
	xjmp L169
L166:
	.dbline 147
	.dbline 149
	ldi R24,9
	mul R24,R20
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+1
	ldd R3,z+2
	std y+5,R3
	std y+4,R2
	clr R2
	std y+2,R2
	ldi R24,96
	std y+0,R24
	ldi R18,20
	ldi R24,2
	mul R24,R20
	mov R16,R0
	xcall _draw_bmp
	.dbline 150
L167:
	.dbline 146
	inc R20
L169:
	.dbline 146
	cpi R20,3
	brlo L166
	.dbline 151
; 		select_item(user_choosen);		//标记出当前菜单项.
	lds R16,_user_choosen
	xcall _select_item
	.dbline 152
; 	}
	xjmp L165
L164:
	.dbline 154
; 	else
; 	{
	.dbline 155
; 		switch(temp_choosen)
	lds R22,_temp_choosen
	clr R23
	cpi R22,0
	cpc R22,R23
	breq L173
X11:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L174
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L175
	xjmp L171
X12:
	.dbline 156
; 		{
L173:
	.dbline 158
; 			case 0:
; 				draw_bmp(0,20,96,0,blue);
	ldi R24,<_blue
	ldi R25,>_blue
	std y+5,R25
	std y+4,R24
	clr R2
	std y+2,R2
	ldi R24,96
	std y+0,R24
	ldi R18,20
	clr R16
	xcall _draw_bmp
	.dbline 159
; 				break;
	xjmp L171
L174:
	.dbline 161
; 			case 1:
; 				draw_bmp(0,20,96,0,green);
	ldi R24,<_green
	ldi R25,>_green
	std y+5,R25
	std y+4,R24
	clr R2
	std y+2,R2
	ldi R24,96
	std y+0,R24
	ldi R18,20
	clr R16
	xcall _draw_bmp
	.dbline 162
; 				break;
	xjmp L171
L175:
	.dbline 164
; 			case 2:
; 				draw_bmp(0,20,96,0,red);
	ldi R24,<_red
	ldi R25,>_red
	std y+5,R25
	std y+4,R24
	clr R2
	std y+2,R2
	ldi R24,96
	std y+0,R24
	ldi R18,20
	clr R16
	xcall _draw_bmp
	.dbline 165
; 				break;
	.dbline 167
; 			default:
; 				break;
L171:
	.dbline 169
; 		}
; 		for(n=0;n<max_item;n++)
	clr R20
	xjmp L179
L176:
	.dbline 170
	.dbline 171
	ldi R24,9
	mul R24,R20
	movw R30,R0
	lds R2,_menu_led
	lds R3,_menu_led+1
	add R30,R2
	adc R31,R3
	ldd R2,z+1
	ldd R3,z+2
	std y+5,R3
	std y+4,R2
	clr R2
	std y+2,R2
	ldi R24,32
	std y+0,R24
	ldi R18,20
	ldi R24,2
	mul R24,R20
	mov R16,R0
	subi R16,254    ; addi 2
	xcall _draw_bmp
	.dbline 172
L177:
	.dbline 169
	inc R20
L179:
	.dbline 169
	lds R2,_max_item
	cp R20,R2
	brlo L176
	.dbline 173
	lds R16,_user_choosen
	subi R16,255    ; addi 1
	xcall _select_item
	.dbline 174
L165:
	.dbline -2
L163:
	adiw R28,6
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r n 20 c
	.dbend
	.dbfunc e select_item _select_item fV
;              n -> R20
	.even
_select_item::
	xcall push_gset1
	mov R20,R16
	sbiw R28,6
	.dbline -1
	.dbline 178
; 		{
; 			draw_bmp((n+1)*2,20,32,0,menu_led[n].display);
; 		}
; 		select_item(user_choosen+1);					
; 	}		
; }
; 
; void select_item(uchar n)
; {
	.dbline 179
; 	draw_bmp(n*2,2,16,0,curflag);
	ldi R24,<_curflag
	ldi R25,>_curflag
	std y+5,R25
	std y+4,R24
	clr R2
	std y+2,R2
	ldi R24,16
	std y+0,R24
	ldi R18,2
	ldi R24,2
	mul R24,R20
	mov R16,R0
	xcall _draw_bmp
	.dbline -2
L180:
	adiw R28,6
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r n 20 c
	.dbend
	.dbfunc e openblue _openblue fV
	.even
_openblue::
	.dbline -1
	.dbline 183
; }
; 
; void openblue(void)
; {
	.dbline 184
; 	blueon;
	sbi 0x18,5
	.dbline 185
; 	greenoff;
	cbi 0x18,6
	.dbline 186
; 	redoff;
	cbi 0x18,7
	.dbline -2
L181:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e opengreen _opengreen fV
	.even
_opengreen::
	.dbline -1
	.dbline 190
; }
; 
; void opengreen(void)
; {
	.dbline 191
; 	blueoff;
	cbi 0x18,5
	.dbline 192
; 	greenon;
	sbi 0x18,6
	.dbline 193
; 	redoff;
	cbi 0x18,7
	.dbline -2
L182:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e openred _openred fV
	.even
_openred::
	.dbline -1
	.dbline 197
; }
; 
; void openred(void)
; {
	.dbline 198
; 	blueoff;
	cbi 0x18,5
	.dbline 199
; 	greenoff;
	cbi 0x18,6
	.dbline 200
; 	redon;
	sbi 0x18,7
	.dbline -2
L183:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e closeblue _closeblue fV
	.even
_closeblue::
	.dbline -1
	.dbline 204
; }
; 
; void closeblue(void)
; {
	.dbline 205
; 	blueoff;
	cbi 0x18,5
	.dbline -2
L184:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e closegreen _closegreen fV
	.even
_closegreen::
	.dbline -1
	.dbline 209
; }
; 
; void closegreen(void)
; {
	.dbline 210
; 	greenoff;
	cbi 0x18,6
	.dbline -2
L185:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	sbiw R28,6
	.dbline -1
	.dbline 221
; }
; 	
; 
; 
; 
; /*************************************************
; 主程序.
; **************************************************/
; 
; void main(void)
; {
	.dbline 222
; 	main_init();
	xcall _main_init
	.dbline 223
; 	lcd_init();
	xcall _lcd_init
	.dbline 224
; 	lcd_clr();
	xcall _lcd_clr
	.dbline 225
; 	draw_bmp(0,0,128,0,xtcsh);		//函数调用形式为页,列,宽度,数据指针.
	ldi R24,<_xtcsh
	ldi R25,>_xtcsh
	std y+5,R25
	std y+4,R24
	clr R2
	std y+2,R2
	ldi R24,128
	std y+0,R24
	clr R18
	clr R16
	xcall _draw_bmp
	.dbline 226
; 	draw_bmp(2,8,72,0,writeby);
	ldi R24,<_writeby
	ldi R25,>_writeby
	std y+5,R25
	std y+4,R24
	clr R2
	std y+2,R2
	ldi R24,72
	std y+0,R24
	ldi R18,8
	ldi R16,2
	xcall _draw_bmp
	.dbline 227
; 	draw_bmp(4,56,32,1,jiangping);
	ldi R24,<_jiangping
	ldi R25,>_jiangping
	std y+5,R25
	std y+4,R24
	ldi R24,1
	std y+2,R24
	ldi R24,32
	std y+0,R24
	ldi R18,56
	ldi R16,4
	xcall _draw_bmp
	.dbline 229
; 
; 	blueon;
	sbi 0x18,5
	.dbline 230
; 	greenon;
	sbi 0x18,6
	.dbline 231
; 	redon;
	sbi 0x18,7
	.dbline 233
; 		
; 	delay_ms(3000);				//延时3秒.
	ldi R16,3000
	ldi R17,11
	xcall _delay_ms
	.dbline 234
; 	lcd_clr();
	xcall _lcd_clr
	.dbline 236
; 	
; 	blueoff;
	cbi 0x18,5
	.dbline 237
; 	greenoff;
	cbi 0x18,6
	.dbline 238
; 	redoff;
	cbi 0x18,7
	.dbline 240
; 	
; 	main_menu_initial();
	xcall _main_menu_initial
	.dbline 241
; 	blue_menu_initial();
	xcall _blue_menu_initial
	.dbline 242
; 	green_menu_initial();
	xcall _green_menu_initial
	xjmp L188
L187:
	.dbline 245
	.dbline 246
	xcall _get_key
	sts _keyval,R16
	.dbline 247
	xcall _led_menu_pro
	.dbline 248
L188:
	.dbline 244
	xjmp L187
X13:
	.dbline -2
L186:
	adiw R28,6
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu\menu.c
_temp_choosen::
	.blkb 1
	.dbfile C:\DOCUME~1\Administrator\桌面\LedMenu/menu.h
	.dbsym e temp_choosen _temp_choosen c
_green_menu::
	.blkb 18
	.dbsym e green_menu _green_menu A[18:2]X
_blue_menu::
	.blkb 18
	.dbsym e blue_menu _blue_menu A[18:2]X
_main_menu::
	.blkb 36
	.dbsym e main_menu _main_menu A[36:4]X
	.area func_lit
PL_closegreen:	.word `_closegreen
PL_opengreen:	.word `_opengreen
PL_closeblue:	.word `_closeblue
PL_openblue:	.word `_openblue
PL_openred:	.word `_openred

⌨️ 快捷键说明

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