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

📄 main.s

📁 AVR单片机系统开发经典实例部分源程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area vector(rom, abs)
	.org 56
	jmp _AD_handler
	.org 36
	jmp _TC0_handler
	.area data(ram, con, rel)
_AVR_bmp::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 128,224
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 252,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 127,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,252
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 240,193
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 15,127
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,240
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 192,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 192,248
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,63
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 7,193
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 240,254
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,31
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 7,143
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 207,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,252
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,128
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 240,252
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,127
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 127,'x
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'x,'y
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 127,127
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 252,240
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 193,7
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 31,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,254
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 252,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 31,7
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 193,240
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,63
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 15,15
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 127,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,255
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 255,231
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 7,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 2,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,31
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 63,31
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 7,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 1,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,0
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile C:\AVR\M\1/bmp_pixel.h
	.dbsym e AVR_bmp _AVR_bmp A[144:144]c
	.area text(rom, con, rel)
	.dbfile C:\AVR\M\1/bmp_pixel.h
	.dbfile C:\AVR\M\1\main.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 23
; #include "SPI.h"
; #include "Usart.h"
; #include "fat.h"
; #include "vs1003.h"
; #include "AD_key.h"
; #include "3310LCD_function.h"
; #include "bmp_pixel.h"
; extern struct DISK_FAT_INFO DiskFATInfo;
; extern struct MUSIC_INFO MusicInfoList[3];
; 
; //--------------  音乐播放程序 -------------------//
; 
; void VS1003_Play(void);
; 
; 
; 
; //----------------- ------------------------------
; //
; //                   主函数
; //
; //------------------------------------------------
; void main()
; {
	.dbline 27
;    
;  //  Usart_Init(9600);     // 串口初始化9600bps
;    
;    SPI_Init();           // SPI初始化,默认速度400Hz
	xcall _SPI_Init
	.dbline 30
;  
;    
;    LCD_init();          
	xcall _LCD_init
	.dbline 31
;    VS1003_Init();        // VS1003芯片初始化
	xcall _VS1003_Init
L2:
	.dbline 33
L3:
	.dbline 33
;    
;    while(SD_Init());     // SD卡循环初始化
	xcall _SD_Init
	tst R16
	brne L2
	.dbline 35
;    
;    Fat_Init();           // 文件系统初始化
	xcall _Fat_Init
	.dbline 36
;    AD_Init();            // AD初始化
	xcall _AD_Init
	.dbline 37
;    TC0_Init();           // T/C0初始化
	xcall _TC0_Init
	.dbline 38
;    VS1003_Play();        // 音乐播放
	xcall _VS1003_Play
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e VS1003_Play _VS1003_Play fV
;              j -> y+18
;            num -> y+14
;      music_num -> y+25
;     music_last -> R12
;     music_next -> R14
;      play_flag -> y+24
;              i -> y+10
;       size_buf -> y+6
;       vol_flag -> R10
;              n -> y+2
;   data_pointer -> y+22
	.even
_VS1003_Play::
	xcall push_gset5
	sbiw R28,26
	.dbline -1
	.dbline 49
; }
; 
; 
; 
; //----------------- ------------------------------
; //
; //                  音乐播放函数
; //
; //------------------------------------------------
; void VS1003_Play(void)
; {
	.dbline 51
; 	uint32 n;
; 	uint32 i,j=46;
	ldi R20,46
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+18,R20
	std z+19,R21
	std z+20,R22
	std z+21,R23
	.dbline 52
; 	uint32 size_buf=0;        // 已播放的文件大小
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+6,R20
	std z+7,R21
	std z+8,R22
	std z+9,R23
	.dbline 54
; 	uint32 num;               // 音乐文件所在的簇
; 	uint8 music_num=0;        // 正在播放文件的号码
	clr R0
	std y+25,R0
	.dbline 55
; 	uint8 play_flag=1;        // 播放标志
	clr R0
	inc R0
	std y+24,R0
	.dbline 56
; 	uint16 data_pointer=0;   
	clr R0
	clr R1
	std y+23,R1
	std y+22,R0
	.dbline 57
; 	uint8 music_next=0,music_last=0; // 音乐换曲标志
	clr R14
	.dbline 57
	clr R12
	.dbline 58
; 	uint8 vol_flag=0;         // 音量调节标志
	clr R10
	.dbline 60
; 	
; 	AD_Flag=0;                // AD键盘标志
	clr R2
	sts _AD_Flag,R2
	.dbline 61
;     AD_time=0;                // AD键盘采样次数
	sts _AD_time,R2
	.dbline 62
;     key_num=0;                // 按键号
	sts _key_num,R2
	.dbline 64
; 	
; 	GetMusicFile();           // 获取音乐文件
	xcall _GetMusicFile
	.dbline 66
; 	
; 	num = MusicInfoList[0].FileStartClustor;  // 调用音乐文件
	lds R4,_MusicInfoList+33+2
	lds R5,_MusicInfoList+33+2+1
	lds R2,_MusicInfoList+33
	lds R3,_MusicInfoList+33+1
	movw R30,R28
	std z+14,R2
	std z+15,R3
	std z+16,R4
	std z+17,R5
	xjmp L8
L7:
	.dbline 69
; 	
; 	while(1)
; 	{
	.dbline 70
; 	    LCD_clear();
	xcall _LCD_clear
	.dbline 71
; 		LCD_write_english_string(j,3,MusicInfoList[music_num].FileName);
	ldi R24,41
	ldd R0,y+25
	mul R24,R0
	movw R2,R0
	ldi R24,<_MusicInfoList
	ldi R25,>_MusicInfoList
	add R2,R24
	adc R3,R25
	std y+1,R3
	std y+0,R2
	ldi R18,3
	movw R30,R28
	ldd R16,z+18
	xcall _LCD_write_english_string
	.dbline 72
; 		for(i=0;i<DiskFATInfo.SectorsPerClustor;i++)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+10,R20
	std z+11,R21
	std z+12,R22
	std z+13,R23
	xjmp L13
L10:
	.dbline 73
; 		{ 
	.dbline 74
; 		   SD_ReadBlock(DiskFATInfo.FDT_LBA+(num-DiskFATInfo.FDT_StartClustor)*DiskFATInfo.SectorsPerClustor+i,Fat_Buffer);   // 获取音乐文件的数据
	ldi R24,<_Fat_Buffer
	ldi R25,>_Fat_Buffer
	std y+1,R25
	std y+0,R24
	lds R2,_DiskFATInfo+12
	lds R3,_DiskFATInfo+12+1
	clr R4
	clr R5
	movw R30,R28
	ldd R6,z+14
	ldd R7,z+15
	ldd R8,z+16
	ldd R9,z+17
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	lds R2,_DiskFATInfo+17
	clr R3
	clr R4
	clr R5
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R6
	movw R18,R8
	xcall empy32u
	lds R4,_DiskFATInfo+4+2
	lds R5,_DiskFATInfo+4+2+1
	lds R2,_DiskFATInfo+4
	lds R3,_DiskFATInfo+4+1
	add R2,R16
	adc R3,R17
	adc R4,R18
	adc R5,R19
	movw R30,R28
	ldd R6,z+10
	ldd R7,z+11
	ldd R8,z+12
	ldd R9,z+13
	add R2,R6
	adc R3,R7
	adc R4,R8
	adc R5,R9
	movw R16,R2
	movw R18,R4
	xcall _SD_ReadBlock
L18:
	.dbline 76
; 			do
; 			{	
	.dbline 79
; 			    //--------------------------- AD按键检测 ---------------------------//
; 				
; 			    if(key_num==6&&AD_time==0)play_flag=1;             // Key6按下,播放
	lds R24,_key_num
	cpi R24,6
	brne L21
	lds R2,_AD_time
	tst R2
	brne L21
	.dbline 79
	clr R0
	inc R0
	std y+24,R0
	xjmp L22
L21:
	.dbline 80
; 				else if(key_num==5&&AD_time==0)play_flag=0;        // Key5按下,停止
	lds R24,_key_num
	cpi R24,5
	brne L23
	lds R2,_AD_time
	tst R2
	brne L23
	.dbline 80
	clr R0
	std y+24,R0
	xjmp L24
L23:
	.dbline 81
; 				else if(key_num==1&&AD_time==0)music_next=1;       // Key1按下,下一首
	lds R24,_key_num
	cpi R24,1
	brne L25
	lds R2,_AD_time
	tst R2
	brne L25
	.dbline 81
	clr R14
	inc R14
	xjmp L26
L25:
	.dbline 82
; 				else if(key_num==4&&AD_time==0)music_last=1;       // Key4按下,上一首
	lds R24,_key_num
	cpi R24,4
	brne L27
	lds R2,_AD_time
	tst R2
	brne L27
	.dbline 82
	clr R12
	inc R12
	xjmp L28
L27:
	.dbline 83
; 				else if(key_num==3&&AD_time==0)vol_flag=1;         // Key3按下,音量+
	lds R24,_key_num
	cpi R24,3
	brne L29
	lds R2,_AD_time
	tst R2
	brne L29
	.dbline 83
	clr R10
	inc R10
	xjmp L30
L29:
	.dbline 84
; 				else if(key_num==2&&AD_time==0)vol_flag=2;         // Key2按下,音量-
	lds R24,_key_num
	cpi R24,2
	brne L31
	lds R2,_AD_time
	tst R2
	brne L31
	.dbline 84
	ldi R24,2
	mov R10,R24
L31:

⌨️ 快捷键说明

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