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

📄 lin.s

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 S
📖 第 1 页 / 共 2 页
字号:
;            mp3 -> R20
	.even
_adjust_cheng::
	xcall push_gset2
	mov R20,R16
	.dbline -1
	.dbline 22
; #include <iom64v.h>
; #include <macros.h>
; #include <string.h>
; #include <stdio.h>
; #include "./lin.h"
; #include <eeprom.h>
; #include "../Keyboard/key.h"
; #include <eeprom.h>
; 
; #define  uchar unsigned char
; #define  uint  unsigned int
; 
; #define	 CONFIG_1 2047   //通道存储器地址
; /*
; *通道自动调节
; *当有播放任务时自动切换MP3通道
; */
; #define	SING_A 7
; #define	SING_B 6
; #define	SING_C 5
; void adjust_cheng(uchar mp3) //当MP3不为0时为一个强制参数打开MP3通道
; {
	.dbline 24
;  uchar ii;
;  DDRE  |= (1<<5)|(1<<6)|(1<<7);
	in R24,0x2
	ori R24,224
	out 0x2,R24
	.dbline 25
;  PORTE &= 0x1f;
	in R24,0x3
	andi R24,31
	out 0x3,R24
	.dbline 26
;  if(mp3 != 0) {PORTE |= 1<<SING_C; PORTF |= 1<<3; return;} 
	tst R20
	breq L2
	.dbline 26
	.dbline 26
	sbi 0x3,5
	.dbline 26
	lds R24,98
	ori R24,8
	sts 98,R24
	.dbline 26
	xjmp L1
L2:
	.dbline 27
;  ii = EEPROMread(CONFIG_1);
	ldi R16,2047
	ldi R17,7
	xcall _EEPROMread
	mov R20,R16
	.dbline 28
	mov R22,R20
	clr R23
	cpi R22,0
	cpc R22,R23
	breq L7
X0:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L8
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L9
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L10
	xjmp L4
X1:
	.dbline 28
;  switch(ii){
L7:
	.dbline 30
;  			case 0:
; 				  PORTE |= 1<<SING_C;	 		    //MP3
	sbi 0x3,5
	.dbline 31
; 				  break;
	xjmp L5
L8:
	.dbline 33
; 			case 1:
; 				  PORTE |= (1<<SING_B)|(1<<SING_A); //话筒				  
	in R24,0x3
	ori R24,192
	out 0x3,R24
	.dbline 34
; 				  break;
	xjmp L5
L9:
	.dbline 36
; 			case 2:
; 				  PORTE |= (1<<SING_B);				//收音机
	sbi 0x3,6
	.dbline 37
; 				  break;
	xjmp L5
L10:
	.dbline 39
; 			case 3:
; 				  PORTE |= (1<<SING_A);				//CD机
	sbi 0x3,7
	.dbline 40
; 				  break;	  	  	  
L4:
L5:
	.dbline 42
;            }
;  open_close(ii);//开启相应的电源设备		   
	mov R16,R20
	clr R17
	xcall _open_close
	.dbline -2
L1:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r ii 20 c
	.dbsym r mp3 20 c
	.dbend
	.dbfunc e Line_in _Line_in fV
;             ii -> R20
	.even
_Line_in::
	xcall push_gset2
	sbiw R28,8
	.dbline -1
	.dbline 47
; }
; 
; extern uchar keybuf;
; void Line_in(void)
; {
	.dbline 49
;  	uchar ii;  
;  	ii = EEPROMread(CONFIG_1);
	ldi R16,2047
	ldi R17,7
	xcall _EEPROMread
	mov R20,R16
	.dbline 50
; 	if(ii > 3) ii = 0;
	ldi R24,3
	cp R24,R16
	brsh L12
	.dbline 50
	clr R20
L12:
	.dbline 51
; 	show_clear();
	xcall _show_clear
	.dbline 52
;     show_lcd(0, 0, 192, 2, &lin_menu[0],0);
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	ldi R24,<_lin_menu
	ldi R25,>_lin_menu
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,192
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	clr R16
	clr R17
	xcall _show_lcd
	xjmp L15
L14:
	.dbline 53
;    	while(1){
	.dbline 54
; 			 	     show_lcd(3, 0, 80, 2, 	  &lin_in4[0],0);//MP3
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	ldi R24,<_lin_in4
	ldi R25,>_lin_in4
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,3
	ldi R17,0
	xcall _show_lcd
	.dbline 55
; 					 show_lcd(3, 80+25, 80, 2, &lin_in1[0],0); //话筒输入  
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	ldi R24,<_lin_in1
	ldi R25,>_lin_in1
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	ldi R18,105
	ldi R19,0
	ldi R16,3
	ldi R17,0
	xcall _show_lcd
	.dbline 56
;  					 show_lcd(6, 0, 80, 2, 	  &lin_in2[0],0);//收音机  
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	ldi R24,<_lin_in2
	ldi R25,>_lin_in2
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,6
	ldi R17,0
	xcall _show_lcd
	.dbline 57
;  					 show_lcd(6, 80+25,80, 2, &lin_in3[0],0);//CD机 
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	ldi R24,<_lin_in3
	ldi R25,>_lin_in3
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	ldi R18,105
	ldi R19,0
	ldi R16,6
	ldi R17,0
	xcall _show_lcd
	.dbline 59
;  					  
; 					 switch(ii)
	mov R22,R20
	clr R23
	cpi R22,0
	cpc R22,R23
	breq L20
X2:
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L21
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L22
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	brne X4
	xjmp L23
X4:
	xjmp L17
X3:
	.dbline 60
;   					 {
L20:
	.dbline 61
;    					 case 0: show_lcd(3, 0, 80, 2, &lin_in4[0],1);
	ldi R24,1
	ldi R25,0
	std y+7,R25
	std y+6,R24
	ldi R24,<_lin_in4
	ldi R25,>_lin_in4
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,3
	ldi R17,0
	xcall _show_lcd
	.dbline 62
;    		   			 	  	 break;
	xjmp L18
L21:
	.dbline 63
;    		   			 case 1: show_lcd(3, 80+25, 80, 2, &lin_in1[0],1);
	ldi R24,1
	ldi R25,0
	std y+7,R25
	std y+6,R24
	ldi R24,<_lin_in1
	ldi R25,>_lin_in1
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	ldi R18,105
	ldi R19,0
	ldi R16,3
	ldi R17,0
	xcall _show_lcd
	.dbline 64
;    		   			 	  	 break;
	xjmp L18
L22:
	.dbline 65
;    					 case 2: show_lcd(6, 0, 80, 2, &lin_in2[0],1);
	ldi R24,1
	ldi R25,0
	std y+7,R25
	std y+6,R24
	ldi R24,<_lin_in2
	ldi R25,>_lin_in2
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	ldi R16,6
	ldi R17,0
	xcall _show_lcd
	.dbline 66
;    		   			 	  	 break;
	xjmp L18
L23:
	.dbline 67
;    					 case 3: show_lcd(6, 80+25, 80, 2, &lin_in3[0], 1);
	ldi R24,1
	ldi R25,0
	std y+7,R25
	std y+6,R24
	ldi R24,<_lin_in3
	ldi R25,>_lin_in3
	std y+5,R25
	std y+4,R24
	ldi R24,2
	ldi R25,0
	std y+3,R25
	std y+2,R24
	ldi R24,80
	std y+1,R25
	std y+0,R24
	ldi R18,105
	ldi R19,0
	ldi R16,6
	ldi R17,0
	xcall _show_lcd
	.dbline 68
; 					 	     break;
L17:
L18:
	.dbline 70
;   					 }
; 					 KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 70
L24:
	.dbline 71
L25:
	.dbline 71
; 					 while(keybuf == NULL);
	lds R2,_keybuf
	tst R2
	breq L24
	.dbline 72
	mov R24,R2
	cpi R24,1
	brne L27
	.dbline 72
	.dbline 72
	mov R24,R20
	subi R24,255    ; addi 1
	mov R20,R24
	cpi R20,4
	brne L30
	clr R20
	xjmp L30
L30:
	.dbline 72
; 					 if(keybuf == K_DOWN){(++ii == 4) ? (ii = 0) : 0;}
L27:
	.dbline 73
	lds R24,_keybuf
	cpi R24,3
	brne L31
	.dbline 73
	.dbline 73
	mov R24,R20
	subi R24,1
	mov R20,R24
	cpi R20,255
	brne L34
	ldi R20,3
	xjmp L34
L34:
	.dbline 73
; 					 if(keybuf == K_UP){(--ii == 255) ? (ii = 3) : 0;}
L31:
	.dbline 74
	lds R24,_keybuf
	cpi R24,2
	brne L35
	.dbline 74
	.dbline 74
	mov R24,R20
	subi R24,255    ; addi 1
	mov R20,R24
	cpi R20,4
	brne L38
	clr R20
	xjmp L38
L38:
	.dbline 74
; 					 if(keybuf == K_LIFT){(++ii == 4) ? (ii = 0) : 0;}
L35:
	.dbline 75
	lds R24,_keybuf
	cpi R24,6
	brne L39
	.dbline 75
	.dbline 75
	mov R24,R20
	subi R24,1
	mov R20,R24
	cpi R20,255
	brne L42
	ldi R20,3
	xjmp L42
L42:
	.dbline 75
; 					 if(keybuf == K_RIFT){(--ii == 255) ? (ii = 3) : 0;}
L39:
	.dbline 76
; 					 if(keybuf == K_ESC) break;
	lds R24,_keybuf
	cpi R24,5
	brne L43
	.dbline 76
	xjmp L16
L43:
	.dbline 77
; 					 if(keybuf != K_ENTER) continue;
	lds R24,_keybuf
	cpi R24,4
	breq L45
	.dbline 77
	xjmp L15
L45:
	.dbline 78
	mov R18,R20
	ldi R16,2047
	ldi R17,7
	xcall _EEPROMwrite
	.dbline 79
	clr R16
	xcall _adjust_cheng
	.dbline 80
	xjmp L16
L15:
	.dbline 53
	xjmp L14
L16:
	.dbline -2
L11:
	adiw R28,8
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r ii 20 c
	.dbend

⌨️ 快捷键说明

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