亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mega8_player_v11.c

?? Atmel ATMEGA32 Serial controlled SD card MP3 Player.
?? C
字號:


#include<avr/io.h>
#include <avr/interrupt.h>
#include"MMC_SD/MMC_SD.h" //head files
#include"FAT/FAT.h"
#include"VS1003B/VS1003B.h"
#include<avr/pgmspace.h>


#define F_CPU 8000000 
#define BAUD 1200
#define UBRR_VAL F_CPU/16/BAUD-1

unsigned char seri_buffer6;
unsigned char seri_buffer5;
unsigned char seri_buffer4;
unsigned char seri_buffer3;
unsigned char seri_buffer2;
unsigned char seri_buffer1;
unsigned char seri_buffer;

unsigned char play_no=0;
unsigned char play=0;



#define uint unsigned int

//diagnose and state indicate leds
//at start up this two led indicate error
//at normal they indicate the state of the MODE 
#define LED1_CON() DDRB|=_BV(PB0)
#define LED1_ON()  PORTB|=_BV(PB0)
#define LED1_OFF() PORTB&=~_BV(PB0)

#define LED2_CON() DDRB|=_BV(PB1)
#define LED2_ON()  PORTB|=_BV(PB1)
#define LED2_OFF() PORTB&=~_BV(PB1)

//keys
#define STOP _BV(PC0)
#define MODE _BV(PC1)
#define NEXT _BV(PC2)
#define UP   _BV(PC3)
#define DOWN _BV(PC4)
#define PREV _BV(PC5)

#define MP3 1
#define WMA 2
#define MID 3

//mode
#define REPET_ALL 0
#define REPET_ONE 1
#define RANDOM    2

extern WORD SectorsPerClust;//每簇扇區數
extern WORD FirstDataSector;//第一個數據扇區數   //struct of file information
extern BYTE FAT32_Enable;

struct FileInfoStruct FileInfo;//文件信息

struct direntry MusicInfo;	//要播放的mp3文件信息		//the mp3 file item whichi will be played
uint16 totalsongs;			//總的音樂文件數目			//total songs in the root directery on the SD card
uint8 type;					//文件類型					//file type


BYTE		songno[8];

void Delay(uint16 n)//延時
{
	while(n--)asm("nop");
}

//Timer initialization offer seed of the srandom()
void Timer1_Initial()
{
 TCNT1H=0x00;
 TCNT1L=0x00;
 TCCR1A=0x03;//ctc mode  use icr1
 TCCR1B=0x01;//system clock;
 ICR1H=0xff;
 ICR1L=0xff;
}

void PlayMusic()//播放音樂函數,一旦執行不會退出
{
	uint16 keylen;			//用于鍵處理		//for key processing
	uint16 count;			//數據計數			//data counting
	uint8 i;				//循環變量			//loop variable
	uint16 j;				//循環變量			//loop variable
	DWORD p;				//簇指示值			//cluster
	DWORD totalsect;		//文件擁有的扇區數	//cotain the total sector number of a file
	uint16 leftbytes;		//剩余字節			//cotain the left bytes number of a file //the last cluster usually not fully occupied by the file
	uint8 *buffer;			//緩沖				//buffer
	DWORD sector;			//扇區				//recor the current sector to judge the end sector
	uint8 flag;				//播放/暫停標志		//flag of pause
	uint16 vol=DefaultVolume;//初始音量,應與vs1003函數里的初始音量相同	//default volume
	uint16 songs=1;			//默認放第一首歌	//play the fist songs by default
	uint8 mode=1;			//單曲重復			//repet all by default
	if(totalsongs==0)return;//如果沒有歌曲則異常退出	//if no music file return
	unsigned long rand_val;

	Timer1_Initial();//啟動定時器,用于產生隨機函數的種子	//initialize the timer


 
	count=0;//清基數	//clear count
	flag=1;
	while(count<2048 && (type != MID))//recommand 2048 zeros honoring DREQ befor soft reset
	{									//用于從wma跳出到下一首歌,和一首歌結束填充數據//midi格式不需要
		if((VS1003B_PIN & _BV(VS1003B_DREQ))!=0)
		{
			for(j=0;j<32;j++)
			{
				VS1003B_WriteDAT(0x00);//填充0	//fill 0
				count++;
			}
			if(count == 2047)break;
		}
	}

	VS1003B_SoftReset();//soft reset //in case of playing wma files//軟件復位
	
	//songno[8]="\\1";


	Search(songno[8],&MusicInfo,&songs,&type);		//找到相應的文件		//find the file

	p     = MusicInfo.deStartCluster+(((unsigned long)MusicInfo.deHighClust)<<16);//讀文件首簇	//the first cluster of the file
		
	totalsect = MusicInfo.deFileSize/512; //計算扇區數			//calculate the total sectors
	leftbytes = MusicInfo.deFileSize%512; //計算剩余的字節數	//calculate the left bytes	
	i=0;
	sector=0;
	
	while(1)
	{
		keylen=0;
    	for(;i<SectorsPerClust;i++)		//a cluster
		{
			buffer=malloc(512);
			FAT_LoadPartCluster(p,i,buffer);	//read a sector
			count=0;
			while(count<512)
			{
				if(flag==0){if(keylen){Delay(100);keylen--;}}
				else if(type == MID){if(keylen){Delay(100);keylen--;}}
				if((VS1003B_PIN & _BV(VS1003B_DREQ))!=0 && flag)	  //send data  honoring DREQ
				{
					for(j=0;j<32;j++)				//32 Bytes each time
					{
						VS1003B_WriteDAT(buffer[count]);
						count++;
					}
					if(keylen)keylen--;	//for key processing
					if(sector == totalsect && count >= leftbytes)	//if this is the end of the file
					{
						if(type == MID)//waiting the midi file was decoded
						{
													count=0;
							while(count<2048)//recommand 2048 zeros honoring DREQ goto next songs
							{
								if((VS1003B_PIN & _BV(VS1003B_DREQ))!=0 )
								{
									for(j=0;j<32;j++)
									{
										VS1003B_WriteDAT(0x00);
										count++;
									}
									if(count == 2047)break;
								}
							}
						}
						i=SectorsPerClust;
						break;
					}//文件結束			//file ended
					if(count == 511){break;}  //break if a sector was sent
				}
			}

			sector++;
			free(buffer);
		}
		i=0;
		p=FAT_NextCluster(p);		//read next cluster
		if(p == 0x0fffffff || p == 0x0ffffff8 || (FAT32_Enable == 0 && p == 0xffff)) //如果無后續簇則結束,	//no more cluster
		{
		
		return;

		}
	}
}





void init_uart(unsigned int ubrr) 

	{
        UBRRH = (unsigned char)(ubrr>>8);
        UBRRL = (unsigned char)(ubrr);

    	UCSRB = (1<<RXCIE)|(1<<TXEN)|(1<<RXEN);	

		sei(); // Eneable Interrupt

// 8 Databits, receive and transmit enabled, receive and transmit complete interrupt enabled
		
	}


/* Receive interrupt */

SIGNAL(SIG_UART_RECV) 
	
{
	
unsigned char chksum;

		seri_buffer=UDR;

			seri_buffer5=seri_buffer4;
			seri_buffer4=seri_buffer3;
			seri_buffer3=seri_buffer2;
			seri_buffer2=seri_buffer1;
			seri_buffer1=seri_buffer;

		//	UDR=seri_buffer;

//FF 55 99 MN CKS

		if ((seri_buffer5==0xff) & (seri_buffer4==0x55) &(seri_buffer3==0x99))

		{
			chksum=seri_buffer5+seri_buffer4+seri_buffer3+seri_buffer2;
			

			if (seri_buffer1==chksum)
				
				{
					play_no=seri_buffer2;
					play=1;

					UDR=seri_buffer1;

				}
		}


}


SIGNAL(SIG_UART_DATA) 

	{

		UCSRB &= ~(1<<UDRIE);

	}



//main function
int main()
{

start:
	Delay(0xffff);				//supply enough delay
	Delay(0xffff);
	Delay(0xffff);
	Delay(0xffff);
	Delay(0xffff);

	DDRC &= 0x00;
	PORTD |= 0xfF;
	
	LED1_CON();
	LED1_OFF();
	LED2_CON();
	LED2_OFF();

	Delay(0xffff);

	MMC_SD_Init();					//SPI initialize

	Delay(0xffff);

	if(VS1003B_Init())LED1_ON();	//config vs1003
		
		if(VS1003B_Init()==1) goto start;

	Delay(0xffff);				//supply enough delay
	Delay(0xffff);
	Delay(0xffff);
	Delay(0xffff);
	Delay(0xffff);

	MMC_SD_Reset();			//sd card initialize

	Delay(0xffff);								//wait for stable

	if(FAT_Init())LED2_ON();//initialize file system  FAT16 and FAT32 are supported

if(FAT_Init()==1) goto start;
			

//if (LED1_ON()==1) goto start;
//if (LED2_ON()==1) goto start;


init_uart(UBRR_VAL);



dondur:

	Delay(0xffff);	


	if (play==0x01)

	{

		switch (play_no)

		{

		case 1: 
				songno[8]="\\1";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 2:
				songno[8]="\\2";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 3:
				songno[8]="\\3";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 4: 
				songno[8]="\\4";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 5:
				songno[8]="\\5";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 6:
				songno[8]="\\6";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 7:
				songno[8]="\\7";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 8: 
				songno[8]="\\8";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 9:
				songno[8]="\\9";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 10:
				songno[8]="\\10";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 11: 
				songno[8]="\\11";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 12:
				songno[8]="\\12";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 13:
				songno[8]="\\13";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 14: 
				songno[8]="\\14";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 15:
				songno[8]="\\15";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 16:
				songno[8]="\\16";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 17:
				songno[8]="\\17";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 18: 
				songno[8]="\\18";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 19:
				songno[8]="\\19";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 20:
				songno[8]="\\20";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 21: 
				songno[8]="\\21";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 22:
				songno[8]="\\22";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 23:
				songno[8]="\\23";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 24: 
				songno[8]="\\24";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 25:
				songno[8]="\\25";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 26:
				songno[8]="\\26";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 27:
				songno[8]="\\27";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;
		case 28: 
				songno[8]="\\28";
				Search(songno[8],&MusicInfo,&totalsongs,&type);
				PlayMusic();
				break;

		}

		play=0;
    }

goto dondur;



}




?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久电影一区二区三区| 五月婷婷激情综合网| 极品少妇xxxx精品少妇偷拍 | 久久久久久久久久久久久夜| 国产精品欧美久久久久一区二区| 精品国偷自产国产一区| 欧美成人午夜电影| 69久久99精品久久久久婷婷| 在线视频国产一区| 在线精品国精品国产尤物884a| 一本久久a久久免费精品不卡| 91亚洲国产成人精品一区二三| 99久久精品情趣| av午夜一区麻豆| 一本色道久久综合精品竹菊| 一本大道av一区二区在线播放| 91性感美女视频| 日本高清免费不卡视频| 在线观看日韩国产| 欧美日韩亚洲另类| 9191精品国产综合久久久久久 | 欧美精品一区二区三区蜜桃视频 | 欧美日韩国产一级片| 91精品蜜臀在线一区尤物| 在线综合亚洲欧美在线视频| 欧美一区二区视频网站| 精品国产区一区| 国产日韩欧美在线一区| 中文字幕日韩精品一区| 亚洲精品视频在线观看网站| 偷拍自拍另类欧美| 久久99精品国产91久久来源| 国产成人精品www牛牛影视| 成人激情综合网站| 91麻豆免费视频| 在线播放视频一区| 久久色在线视频| 中文字幕一区二区不卡 | 久久超级碰视频| 成人精品亚洲人成在线| 在线观看免费成人| 日韩丝袜美女视频| 中文字幕欧美三区| 亚洲综合激情另类小说区| 美女mm1313爽爽久久久蜜臀| 国产91精品免费| 欧美性猛片xxxx免费看久爱| 精品福利二区三区| 亚洲猫色日本管| 久久成人精品无人区| 色先锋aa成人| 精品国产在天天线2019| 亚洲免费三区一区二区| 蜜桃久久av一区| jlzzjlzz欧美大全| 欧美电视剧在线观看完整版| 亚洲视频一二三区| 久久不见久久见免费视频1| 99久久er热在这里只有精品66| 欧美日韩午夜精品| 欧美国产精品一区| 午夜精品视频在线观看| 高清国产一区二区| 9191成人精品久久| 亚洲精品第一国产综合野| 精品中文字幕一区二区| 欧日韩精品视频| 欧美国产欧美综合| 久久精品国产成人一区二区三区 | 69堂精品视频| 日韩一区中文字幕| 国产一区二区免费视频| 欧美在线观看视频在线| 国产精品沙发午睡系列990531| 三级成人在线视频| 色综合天天综合色综合av| 久久先锋影音av鲁色资源| 亚洲国产成人av好男人在线观看| 成人精品鲁一区一区二区| 亚洲精品在线三区| 日韩高清欧美激情| 91福利在线看| 中文字幕av一区二区三区免费看| 免费国产亚洲视频| 欧美日韩aaaaa| 一区二区三区在线观看国产| 成人妖精视频yjsp地址| 久久网这里都是精品| 日本va欧美va瓶| 欧美色图天堂网| 综合激情网...| 国产91在线观看| 国产婷婷色一区二区三区四区| 美女网站视频久久| 欧美日韩一区二区电影| 一区二区三区欧美视频| 99精品久久久久久| 亚洲日本欧美天堂| 色综合久久综合网97色综合| 国产精品免费久久久久| 丰满白嫩尤物一区二区| 国产午夜一区二区三区| 国产一级精品在线| 久久影音资源网| 国产一区二区三区精品欧美日韩一区二区三区 | 国产精品久久久久久久久久久免费看 | 亚洲18影院在线观看| 91福利在线导航| 亚洲精品成人少妇| 欧美视频一区在线观看| 亚洲高清久久久| 欧美私人免费视频| 亚洲国产精品视频| 欧美精品在欧美一区二区少妇| 午夜精品一区二区三区电影天堂 | 久久99国产精品久久99果冻传媒| 91麻豆精品国产91久久久| 日韩精品一级二级| 日韩视频免费直播| 国产一区二区在线影院| 久久精品综合网| 成人免费不卡视频| 亚洲色图在线看| 欧美视频三区在线播放| 美国欧美日韩国产在线播放| 久久中文娱乐网| 国产91富婆露脸刺激对白| 亚洲欧美综合另类在线卡通| 99久久国产综合色|国产精品| 亚洲夂夂婷婷色拍ww47| 91精品婷婷国产综合久久性色 | 99久久婷婷国产| 一区二区三区成人在线视频 | 亚洲精品第1页| 欧美三级欧美一级| 蜜桃视频第一区免费观看| 久久久国产精品麻豆| 91女神在线视频| 亚洲高清久久久| 精品99999| 91尤物视频在线观看| 日韩va亚洲va欧美va久久| 国产亚洲午夜高清国产拍精品| 91玉足脚交白嫩脚丫在线播放| 婷婷夜色潮精品综合在线| 26uuu国产电影一区二区| av欧美精品.com| 午夜精品免费在线观看| 国产清纯在线一区二区www| 色婷婷久久一区二区三区麻豆| 日韩国产成人精品| 国产欧美日韩麻豆91| 欧美日韩国产中文| 国产91露脸合集magnet| 日韩在线一区二区三区| 日本一区二区在线不卡| 欧美日韩一本到| 国产一区二区电影| 亚洲欧洲日韩av| 日韩亚洲欧美在线| 99re66热这里只有精品3直播| 日韩中文字幕1| 国产精品毛片a∨一区二区三区| 欧美三片在线视频观看| 国产自产视频一区二区三区| 一区二区三区不卡视频| 国产亚洲欧美中文| 欧美精品tushy高清| 成人小视频免费观看| 美女在线一区二区| 一区二区三区中文在线观看| 日韩精品中文字幕在线不卡尤物| 99久久精品免费看国产 | 欧美一级午夜免费电影| 91在线视频免费观看| 久久国产麻豆精品| 亚洲地区一二三色| 中文字幕在线视频一区| 精品国产成人在线影院| 欧美二区乱c少妇| 91一区二区在线| 国产精品自拍网站| 免费在线看成人av| 亚洲午夜一区二区三区| 成人欧美一区二区三区小说 | 一区二区成人在线| 中文字幕av一区二区三区免费看| 欧美一级午夜免费电影| 欧美视频一区二区三区| 色久综合一二码| 成人av中文字幕| 国精产品一区一区三区mba桃花| 日韩精品电影在线| 亚洲午夜在线电影| 一区二区三区成人| 亚洲精品乱码久久久久久久久| 国产精品久久久久久久久动漫| 久久久欧美精品sm网站| 精品久久久久av影院| 日韩三级在线观看|