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

📄 playedit.s

📁 mega128+VS1003做的mp3的程序 可以用WINAVR编译
💻 S
📖 第 1 页 / 共 5 页
字号:
	.module playedit.c
	.area text(rom, con, rel)
	.dbfile E:\software\MP3程序\PlayEdit\playedit.c
	.dbfunc e Del_Edit _Del_Edit fV
;           move -> R14
;          point -> R22,R23
;           temp -> y+272
;           FILE -> y+16
;         active -> y+8
;            day -> R10
;           data -> R20
	.even
_Del_Edit::
	xcall push_gset5
	mov R20,R16
	sbiw R28,63
	sbiw R28,63
	sbiw R28,63
	sbiw R28,63
	sbiw R28,23  ; offset = 275
	.dbline -1
	.dbline 27
; #include <iom64v.h>
; #include <macros.h>
; #include <string.h>
; #include <stdio.h>
; #include "../Vs1003/vs1003.h"
; #include "../Ch375b/375interface.h"
; #include "../Keyboard/key.h"
; #include "../Ds1302/ds1302.h"
; #include <eeprom.h>
; extern uchar keybuf;
; extern uchar const nAsciiDot[];
; extern uchar const please_time[];
; extern unsigned char const full[];
; extern unsigned char const show_main[];
; 
; typedef struct fileinfor{ 		//当前时间的数据结构
; 		uchar filename[28]; //文件名
; 		uchar active;		//有效标志
; 		uchar hour;		/*时*/
; 		uchar min;   	/*分*/
;         uchar sec;   	/*秒*/
; };
; /*
; 删除文件
; */					
; void Del_Edit(uchar data)
; {
L2:
	.dbline 36
;  uchar day;
;  uchar temp;
;  uchar active[8];
;  uchar move;
;  struct fileinfor FILE[8];
;  uint point;
;  //检查空间
;  RELOAD:
;  point = 0;
	clr R22
	clr R23
	.dbline 37
;  point += 8*data*sizeof(FILE[0]);
	ldi R24,8
	mul R24,R20
	ldi R24,32
	mul R24,R0
	add R22,R0
	adc R23,R1
	.dbline 39
;  
;  for(day=0; day<8; day++)
	clr R10
	xjmp L6
L3:
	.dbline 40
	.dbline 41
	subi R22,224  ; offset = 32
	sbci R23,255
	.dbline 42
	ldi R24,32
	ldi R25,0
	std y+1,R25
	std y+0,R24
	mul R24,R10
	movw R18,R0
	movw R24,R28
	adiw R24,16
	add R18,R24
	adc R19,R25
	movw R16,R22
	xcall _EEPROMReadBytes
	.dbline 43
L4:
	.dbline 39
	inc R10
L6:
	.dbline 39
	mov R24,R10
	cpi R24,8
	brlo L3
	.dbline 44
;     {
;  	 point += sizeof(FILE[day]);
; 	 EEPROMReadBytes(point,&FILE[day],sizeof(FILE[day]));
;     } 
;  day = 0;
	clr R10
	.dbline 45
;  for(temp=0; temp<8; temp++)
	clr R0
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R0
	xjmp L10
L7:
	.dbline 46
;  {
	.dbline 47
;   if(FILE[temp].active == 0x55) {active[day] = temp;day++;} 
	ldi R24,32
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R0,z+0
	mul R24,R0
	movw R30,R0
	movw R24,R28
	adiw R24,44
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,85
	brne L11
	.dbline 47
	.dbline 47
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	movw R26,R28
	subi R26,240  ; addi 272
	sbci R27,254
	ld R0,x
	std z+0,R0
	.dbline 47
	inc R10
	.dbline 47
L11:
	.dbline 48
L8:
	.dbline 45
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R0,z+0
	inc R0
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R0
L10:
	.dbline 45
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R24,z+0
	cpi R24,8
	brlo L7
	.dbline 49
;  } 
;  active[day] = 0xff;
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 50
;  Print_val(day);
	mov R16,R10
	clr R17
	xcall _Print_val
	.dbline 51
;  day = 0;
	clr R10
	.dbline 52
;  temp = 0;
	clr R0
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R0
	xjmp L15
L14:
	.dbline 53
;  while(1){ //显示出来
	.dbline 54
;  		    show_clear();
	xcall _show_clear
	.dbline 55
; 			show_lcd(0, 0, 192, 2, &show_main[0],0);
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	ldi R24,<_show_main
	ldi R25,>_show_main
	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
	.dbline 56
; 			move = 0;
	clr R14
	.dbline 57
; 				     if(active[day]   == 0xff) goto NEXT; 
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	brne L17
	.dbline 57
	xjmp L19
L17:
	.dbline 58
; 			         if(active[day]   != 0xff){move += 1; 
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	breq L20
	.dbline 58
	.dbline 58
	inc R14
	.dbline 59
; 					 					      show_name(&FILE[active[day]],2,0);
	clr R2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,2
	ldi R19,0
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R16,R0
	movw R24,R28
	adiw R24,16
	add R16,R24
	adc R17,R25
	xcall _show_name
	.dbline 60
; 											 }
L20:
	.dbline 61
; 				     if(active[day+1]   == 0xff) goto NEXT;							 									 
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	brne L22
	.dbline 61
	xjmp L19
L22:
	.dbline 62
; 					 if(active[day+1] != 0xff) {move += 1;
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	breq L25
	.dbline 62
	.dbline 62
	inc R14
	.dbline 63
; 					                          show_name(&FILE[active[day+1]],4,0);
	clr R2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,4
	ldi R19,0
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R16,R0
	movw R24,R28
	adiw R24,16
	add R16,R24
	adc R17,R25
	xcall _show_name
	.dbline 64
; 											 } 
L25:
	.dbline 65
; 					 if(active[day+2]   == 0xff) goto NEXT;
	movw R24,R28
	adiw R24,10
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	brne L29
	.dbline 65
	xjmp L19
L29:
	.dbline 66
; 				     if(active[day+2] != 0xff) {move += 1;
	movw R24,R28
	adiw R24,10
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R24,z+0
	cpi R24,255
	breq L32
	.dbline 66
	.dbline 66
	inc R14
	.dbline 67
; 					                          show_name(&FILE[active[day+2]],6,0);
	clr R2
	clr R3
	std y+1,R3
	std y+0,R2
	ldi R18,6
	ldi R19,0
	movw R24,R28
	adiw R24,10
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R16,R0
	movw R24,R28
	adiw R24,16
	add R16,R24
	adc R17,R25
	xcall _show_name
	.dbline 68
; 											 }
L32:
L19:
	.dbline 70
; 	        NEXT:										 
;             if(move != 0){											   
	tst R14
	brne X4
	xjmp L36
X4:
	.dbline 70
	.dbline 71
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R12,z+0
	clr R13
	tst R12
	brne X0
	tst R13
	breq L41
X0:
	movw R24,R12
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	breq L42
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X5
	xjmp L44
X5:
	xjmp L38
X1:
	.dbline 71
; 						switch(temp){
L41:
	.dbline 72
; 									 case 0:show_name(&FILE[active[day]],2,1);break;
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,2
	ldi R19,0
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R16,R0
	movw R24,R28
	adiw R24,16
	add R16,R24
	adc R17,R25
	xcall _show_name
	.dbline 72
	xjmp L39
L42:
	.dbline 73
; 									 case 1:show_name(&FILE[active[day+1]],4,1);break;
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,4
	ldi R19,0
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R16,R0
	movw R24,R28
	adiw R24,16
	add R16,R24
	adc R17,R25
	xcall _show_name
	.dbline 73
	xjmp L39
L44:
	.dbline 74
; 									 case 2:show_name(&FILE[active[day+2]],6,1);break;
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	ldi R18,6
	ldi R19,0
	movw R24,R28
	adiw R24,10
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R16,R0
	movw R24,R28
	adiw R24,16
	add R16,R24
	adc R17,R25
	xcall _show_name
	.dbline 74
L38:
L39:
	.dbline 76
; 						  			}
; 						} 
L36:
	.dbline 77
; 			KEYBUF_NULL;
	clr R2
	sts _keybuf,R2
	.dbline 77
L46:
	.dbline 78
L47:
	.dbline 78
; 			while(keybuf == NULL);
	lds R2,_keybuf
	tst R2
	breq L46
	.dbline 79
; 			if(keybuf == K_UP){
	mov R24,R2
	cpi R24,3
	brne L49
	.dbline 79
	.dbline 80
; 					  	       if(--temp == 255){
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R24,z+0
	subi R24,1
	mov R2,R24
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R2
	cpi R24,255
	brne L51
	.dbline 80
	.dbline 81
; 							   			 		 temp = 0;
	clr R0
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R0
	.dbline 82
; 												 if(day != 0) {day -= 3;temp=2;} 
	tst R10
	breq L53
	.dbline 82
	.dbline 82
	mov R24,R10
	subi R24,3
	mov R10,R24
	.dbline 82
	ldi R24,2
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R24
	.dbline 82
L53:
	.dbline 83
; 							                    } 
L51:
	.dbline 84
; 			                  }
L49:
	.dbline 85
; 		    if(keybuf == K_DOWN){
	lds R24,_keybuf
	cpi R24,1
	brne L55
	.dbline 85
	.dbline 86
; 					  	 	   if(move !=0){
	tst R14
	breq L57
	.dbline 86
	.dbline 87
; 							   			 	if(++temp == move){
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R24,z+0
	subi R24,255    ; addi 1
	mov R2,R24
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R2
	cp R24,R14
	brne L59
	.dbline 87
	.dbline 88
; 										    		  	 	  temp = 0;
	clr R0
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	std z+0,R0
	.dbline 89
; 												              if(move == 3) day += 3;  
	mov R24,R14
	cpi R24,3
	brne L61
	.dbline 89
	mov R24,R10
	subi R24,253    ; addi 3
	mov R10,R24
L61:
	.dbline 90
L59:
	.dbline 90
; 							               } 				  }
L57:
	.dbline 91
; 			                    }
L55:
	.dbline 92
; 			if(keybuf == K_ESC) break;
	lds R24,_keybuf
	cpi R24,5
	brne L63
	.dbline 92
	xjmp L16
L63:
	.dbline 93
; 			if(keybuf != K_ENTER) continue;
	lds R24,_keybuf
	cpi R24,4
	breq L65
	.dbline 93
	xjmp L15
L65:
	.dbline 95
; 			
; 			point = 0;
	clr R22
	clr R23
	.dbline 96
; 			point += 8*data*sizeof(FILE[0]);
	ldi R24,8
	mul R24,R20
	ldi R24,32
	mul R24,R0
	add R22,R0
	adc R23,R1
	.dbline 97
; 			point += sizeof(FILE[0]);
	subi R22,224  ; offset = 32
	sbci R23,255
	.dbline 98
	movw R30,R28
	subi R30,240  ; addi 272
	sbci R31,254
	ldd R2,z+0
	clr R3
	movw R30,R28
	subi R30,239  ; addi 273
	sbci R31,254
	std z+1,R3
	std z+0,R2
	movw R0,R2
	tst R2
	brne X2
	tst R3
	breq L70
X2:
	movw R30,R28
	subi R30,239  ; addi 273
	sbci R31,254
	ldd R24,z+0
	ldd R25,z+1
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X6
	xjmp L72
X6:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X7
	xjmp L77
X7:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brne X8
	xjmp L82
X8:
	xjmp L2
X3:
	.dbline 98
; 			switch(temp){
L70:
	.dbline 99
; 						 case 0:FILE[active[day]].active = 0xff;
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R30,R0
	movw R24,R28
	adiw R24,44
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 100
; 						 	    point += active[day]*sizeof(FILE[0]);	
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	add R22,R0
	adc R23,R1
	.dbline 101
; 								EEPROMWriteBytes(point,&FILE[active[day]],sizeof(FILE[0]));						 
	clr R25
	std y+1,R25
	std y+0,R24
	movw R24,R28
	adiw R24,8
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R18,R0
	movw R24,R28
	adiw R24,16
	add R18,R24
	adc R19,R25
	movw R16,R22
	xcall _EEPROMWriteBytes
	.dbline 102
; 						 	    break;
	xjmp L2
L72:
	.dbline 103
; 						 case 1:FILE[active[day+1]].active = 0xff;
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R30,R0
	movw R24,R28
	adiw R24,44
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 104
; 						 	    point += active[day+1]*sizeof(FILE[0]);	
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	add R22,R0
	adc R23,R1
	.dbline 105
; 								EEPROMWriteBytes(point,&FILE[active[day+1]],sizeof(FILE[0]));
	clr R25
	std y+1,R25
	std y+0,R24
	movw R24,R28
	adiw R24,9
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R18,R0
	movw R24,R28
	adiw R24,16
	add R18,R24
	adc R19,R25
	movw R16,R22
	xcall _EEPROMWriteBytes
	.dbline 106
; 						 	    break;
	xjmp L2
L77:
	.dbline 107
; 						 case 2:FILE[active[day+2]].active = 0xff;
	movw R24,R28
	adiw R24,10
	mov R30,R10
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldi R24,32
	mul R24,R2
	movw R30,R0
	movw R24,R28
	adiw R24,44
	add R30,R24
	adc R31,R25
	ldi R24,255
	std z+0,R24
	.dbline 108
; 						 	    point += active[day+2]*sizeof(FILE[0]);	

⌨️ 快捷键说明

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