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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? mp3.c

?? 用atmega64+vs1003(音頻解碼芯片)+SD制成的板子
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*-------------------------------------------------------------
    MP3 Player 
	XieLiangHui
	AVR Studio 4.12 sp4+  WinAvr 2005-11-5
*/
#include <avr/io.h>
#include <avr/interrupt.h>
#include <string.h>
#include <avr/eeprom.h>
#include <stdio.h>       
#include "comm.h"
#include "vs1003.h"
#include "mp3.h"
#include "sd.h"
#include "fat.h"
#include "lcd.h"
#include "bmp.h"
#include "delay.h"     
MENU_CONECT  m_c[4];  //保存目錄顯示的四行文件名
/*每一秒中斷一次
ISR(SIG_OVERFLOW0)  //Real Time Count every 1s interrupt
{
 	TimeFlag|=bT1S;
}
//  每32.768MS中斷一次
ISR(SIG_OVERFLOW2)
{
	TimeFlag|=(bT32MS|bTkey); 
	Rtime++;
} */

uchar MenuCnt;
uchar MenuMode;
uchar SelIndex;
ulong  CurDir;
uchar fileindex=1;
uint TotalFile;
#define  VIEW_MODE  1
#define  PLAY_MODE  2
#define  STBY_MODE  3
#define  SET_MODE   4
#define  RADIO_MODE 5
#define  REC_MODE   6
unsigned long filelength;
unsigned int voltbl[] PROGMEM ={ 
	0x9191,0x8c8c,0x8787,0x8282,0x7d7d,0x7878,0x7373,0x6e6e,0x6969,0x6464,
	0x5f5f,0x5a5a,0x5555,0x5050,0x4b4b,0x4646,0x4141,0x3c3c,0x3737,0x3232,
	0x2d2d,0x2828,0x2323,0x1e1e,0x1919,0x1414,0x0f0f,0x0a0a,0x0505,0x0000

	};
TIME  rtc;              
//extern   unsigned long FileSize;  
extern PARTRECORD PartInfo;

/*
void Delay2s(void)
{
  unsigned char i;
  i=Rtime;
  while((Rtime-i)<60);

}
*/
void ReadConfig(void)
{
	  unsigned char flag;
	  flag=eeprom_read_byte((uchar*) kEepFlag);
	  if(flag!=0xab){
	  	vol=5; fileindex=1; SelIndex=0;CurDir=fatGetRootClust();
	  	TotalFile=0; 	flag=0xab;
	  	eeprom_write_byte((uchar*)kEepFlag,flag);
	  	eeprom_busy_wait();
	  	eeprom_write_byte((uchar*) kEepVol,vol);
	  	eeprom_busy_wait();
	  }else{
		 vol=eeprom_read_byte((uchar*)kEepVol);
//		 eeprom_read_byte(&MenuMode,(void *) kEepMenuMode);
//		 eeprom_read_word(&fileindex,(void *)kEepfileindex);
	  }
	  
	  MenuCnt=0; TotalFile=0;	PlayMode=0;
	  MenuMode=STBY_MODE; MenuCnt=0;
	  vs1003_cmd_write(0x0b,pgm_read_word(voltbl+vol));
}
int  main()
{   
	InitSystem(); 
	FindSysFile();  //查找系統(tǒng)文件(漢字庫(kù),及編碼轉(zhuǎn)換文件)
	ReadConfig();    //讀取配置數(shù)據(jù)
	MenuMode=STBY_MODE;
	StopPlay();
	while(TRUE) { 
		GetKey();	
		RtcCount();     
		MenuOpter();		
		LcdWrite();         
		MusicPlay();    
		LyricDisplayCtrl();         
	} 
	return 0;   
}
void GetKey(void)	
{ 
	//按鍵處理程序
	static unsigned char sakey=kNull;
	static unsigned char KeyCnt=0;
	unsigned char tempKey;
	if(!(TimeFlag&bTkey))  return;
		TimeFlag&=~bTkey;
		tempKey = kNull;
		if(!(PINE&PLAY)){
			tempKey =kPlay;
		}else if(!(PINE&VOLDOWN)){ 
			tempKey = kVolDown;
		}else if(!(PINE&VOLUP)) {
	 	    tempKey = kVolUp;
		}else if(!(PINE&NEXTSONG)){
	      tempKey = kNext;	
	    }else if(!(PINE&PREVSONG)){
		  tempKey = kPrev;
		}
		if(tempKey==sakey){ 
       if(tempKey!=kNull){
       	  if(++KeyCnt>30) KeyVal=sakey+0x10;
      }
			 return;
		}
		KeyCnt=0;
		sakey=tempKey;
		if(sakey!=kNull) KeyVal=sakey;
}
void MusicPlay(void)
{  
	unsigned char n;
	while(TRUE){
		if(!(WorkFlag&bReadOvr)){
			if(!ReadFileData())	  WorkFlag|=bReadOvr;
	}  
//---------數(shù)據(jù)寫(xiě)入VS1003-----------------------------//	
	if(WorkFlag&bPause)    break;
		if(WorkFlag&bDatRdy){
			do{
		  	   if(PINB&MP3_DATA_REQ) {
					for(n=0;n<32;n++) {   //
						vs1003_data_write(BUFFER[data_pointer++]);
			    	}  
				 	if(filelength<32) { 
				 		WorkFlag|=(bPlayOvr|bReadOvr);
				 		break;
		 		 	}
			 		filelength-=32;
				}else
		       		break;    
			}while(data_pointer<511);
			if(data_pointer>=511) {  
				data_pointer=0;
				WorkFlag&=(~bDatRdy);
				continue;
			  }
     }
         break;
 } 	  
}
//     
BOOL ReadFileData(void)
{
	unsigned long LBA;
	if(!(WorkFlag&bDatRdy)){
		if(SectorIndex>=SectorsPerCluster){
			NextCluster = fatNextCluster(NextCluster);
			if(NextCluster==CLUST_EOFE)	return FALSE;
			SectorIndex=0;
		}
			LBA =fatClustToSect(NextCluster); 
			ReadBlock(LBA+SectorIndex);
			SectorIndex++;
			WorkFlag|=bDatRdy; 
	}
		return TRUE;
}
void StopPlay()
{
	 vs1003_Reset();
	 WorkFlag|=(bPause|bPlayOvr); //停止放音
	 WorkFlag&=~(bLrc|bDatRdy);
	 data_pointer=SectorIndex=0;
	
}
void  StartPlay(unsigned long FirstClust)
{
	NextCluster=FirstClust;
	WorkFlag&=~(bReadOvr|bDatRdy|bPlayOvr|bPause); 
	data_pointer=SectorIndex=0;
}
void RtcCount()
{
	if(TimeFlag&bT1S){
		TimeFlag&=~bT1S;
		TimeFlag|=bRtcUpdate;
		if(++rtc.sec>=60){
		   rtc.sec=0;
		   if(++rtc.min>=60){
		   	rtc.min=0;
		   	if(++rtc.hour>=24){
		   		rtc.hour=0;
		   		if(++rtc.day>GetDay(rtc.month)){
		   		  rtc.day=1;
		   		  if(++rtc.month>12){
		   		    rtc.month=1;
		   		    rtc.year++; 	
		   		 }
				}
		   	}
		 }	
	   }
	}
	
}	
const unsigned char DayTable[] PROGMEM ={31,28,31,30,31,30,31,31,30,31,30,31};
unsigned char GetDay(unsigned char mo)
{
	 return pgm_read_byte(&DayTable[mo]);	
}

void InitSystem()
{
	key_port();
/*	ASSR=0X08 ;
	TCCR0=0X05;  //128分頻 計(jì)數(shù)模式
	TCCR2=0X05;  //1/1024
	TIFR|=(_BV(TOV0))|(_BV(TOV2));
	TIMSK|=_BV(TOIE0)|_BV(TOIE2);
	SFIOR&=~_BV(TSM);
 	sei();*/
	spi_init();
	LCD_Init();
	LCD_clear();
	mp3_port_init();
	sd_port_init();
	vs1003_init();
	SD_Init(); 
	SPCR = 0x50;                
	SPSR = 0x01;                //setup SPI
	LCD_draw_map(0,2,AVR_bmp,40,24);        // 顯示“AVR”位圖 
	LCD_draw_map(44,2,china_bmp,36,15);     // 顯示”實(shí)驗(yàn)室“位圖 
	fatInit();                  //初始化FAT文件系統(tǒng)    
	rtc.year=2006;
	rtc.month=rtc.day=1;
	rtc.hour=rtc.min=rtc.sec=0;
	StopPlay();
}

//查詢SD卡文件系統(tǒng)信息
/*
void DispSdInfo(void)
{   
	unsigned int data;   
	unsigned char t1,t2;   
	
	switch (FatType)
	{
		case FAT12:
				LCD_write_String(0,0,"FAT 12");
				break;
		case FAT32:
				LCD_write_String(0,0,"FAT 32");
				break;
		case FAT16:
				LCD_write_String(0,0,"FAT 16");
				break;
		default:
				LCD_write_String(0,0,"No Partition!");
				break;
	}
//顯示磁盤容量                     
	data=PartInfo.prSize>>11;
	LCD_set_XY(56,0);
	t1=data/100;
	LCD_write_char(t1+48);
	data=data%100;
	t1=data/10;
	LCD_write_char(t1+48);
	t2=data%10;
	LCD_write_char(t2+48);
	LCD_write_String(0,76,"M");
	LCD_write_String(1,0,"RATE"); 

}	
*/
void SaveHzk12Sector(unsigned long StartCluser)
{  //0x000-0x17c
	void *eep=0;
	unsigned long temp,temp1;
	do{	
		eeprom_busy_wait();
		eeprom_read_block(&temp,(void *)eep,4);
		temp1=fatClustToSect(StartCluser);
		if(temp!=temp1){
			eeprom_write_block(&temp1,(void*)eep,4);
		}
			eep+=4;
		}while((StartCluser=fatNextCluster(StartCluser))!=CLUST_EOFE);	
		eeprom_busy_wait();
}             
  
void SaveUniCodeSector(unsigned long StartCluser)
{

	void *eep=(void*)0x200;
	unsigned long temp,temp1;
	do{	
		eeprom_busy_wait();
		eeprom_read_block(&temp,(void *)eep,4);
		temp1=fatClustToSect(StartCluser);
		if(temp!=temp1){
			eeprom_write_block(&temp1,(void*)eep,4);
		}
			eep+=4;
		}while((StartCluser=fatNextCluster(StartCluser))!=CLUST_EOFE);	
		eeprom_busy_wait();
}      
     
unsigned char GetChar(unsigned char *buf)
{  
	unsigned long address; 
	if(lyric.filelen>0)   lyric.filelen--;  
	if(lyric.so!=64){
		return buf[lyric.so++];	
	}else{ 
	
		if(++lyric.wl>=8){
			lyric.wl=0;
			if(++lyric.sl>=SectorsPerCluster){
				lyric.sl=0;
				lyric.Clust=fatNextCluster(lyric.Clust);
				if(lyric.Clust==CLUST_EOFE)  return 0xff;  //文件結(jié)束
			}              
		}	 
		address=(unsigned long )(fatClustToSect(lyric.Clust)+lyric.sl)*512+(unsigned long) lyric.wl*64;;
		ReadSD64Byte(address,buf);   //讀取64個(gè)字節(jié)
		lyric.so=0;
		return buf[lyric.so++];
	}
}

//取第二行內(nèi)容的首指針
unsigned char *GetSecondLine(unsigned char *pb)
{
	unsigned char i;
	unsigned char bHz=0;
	unsigned char line=0;
	for(i=0;i<29;i++){
		if(pb[i]=='\0')     return (pb+i);
		if(!bHz){
			if(pb[i]>0x80){
		  	bHz=1;
		  	if(line>(84-12))   //無(wú)法顯示完一個(gè)完整的字符
			return pb+i;
			line+=12;
        }else{
		    if(line>(84-6))  return (pb+i);
          	line+=6;
		}
	}else{
         bHz=0;
	}
	}
	 return (pb+i);
}
//-------------------------------------------
//讀取一句有效的歌詞記錄
void ReadLrcFileData(void)
{  
	unsigned char lbuf[64];  
	unsigned char c;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99riav一区二区三区| 欧美日韩国产影片| 一区二区三区四区乱视频| 欧美精品aⅴ在线视频| 国产成人免费在线观看不卡| 亚洲曰韩产成在线| 国产午夜精品一区二区三区嫩草| 91丝袜呻吟高潮美腿白嫩在线观看| 日本成人中文字幕在线视频| 中文字幕人成不卡一区| 欧美成人性福生活免费看| 色老汉一区二区三区| 国产高清久久久| 免费成人深夜小野草| 亚洲一区二区偷拍精品| 国产精品国产三级国产aⅴ中文 | 欧美一区二区三区婷婷月色| www.色综合.com| 国产一区二区三区久久久| 天天影视涩香欲综合网| 一区二区三区四区激情| 国产精品灌醉下药二区| 中文字幕佐山爱一区二区免费| 中文字幕在线不卡一区| 国产69精品一区二区亚洲孕妇| 国产精品欧美一区二区三区| 成人av在线网站| 亚洲激情校园春色| 777欧美精品| 国产福利精品导航| 一区二区三区中文字幕电影| 欧美丝袜丝nylons| 国产美女av一区二区三区| 天堂va蜜桃一区二区三区| 一区二区三区久久| 亚洲欧美一区二区久久| 中文字幕色av一区二区三区| 国产精品女主播av| 亚洲欧洲一区二区在线播放| 亚洲国产成人午夜在线一区 | 成人高清在线视频| 风间由美一区二区三区在线观看| 国产精品一区二区久久不卡 | 蜜臀av亚洲一区中文字幕| 日韩在线一二三区| 美腿丝袜在线亚洲一区| 蜜桃精品在线观看| 久久精品国产秦先生| 秋霞电影网一区二区| 青青草国产精品亚洲专区无| 蜜桃视频在线一区| 国产美女一区二区| 国产成人av自拍| 99精品视频在线播放观看| 色94色欧美sute亚洲线路二 | 欧美中文一区二区三区| 欧美性色综合网| 欧美精品99久久久**| 精品国产网站在线观看| 国产亚洲婷婷免费| 国产精品麻豆视频| 亚洲国产日韩综合久久精品| 日日噜噜夜夜狠狠视频欧美人| 久久99久久久久久久久久久| 成人在线综合网| 欧美在线制服丝袜| 精品99久久久久久| 国产精品三级视频| 亚洲成av人**亚洲成av**| 另类欧美日韩国产在线| 盗摄精品av一区二区三区| 91福利视频久久久久| 日韩女优av电影| 一区在线中文字幕| 午夜婷婷国产麻豆精品| 久久精品99国产精品日本| 高清在线不卡av| 欧美日韩一区二区三区视频| 久久婷婷成人综合色| 亚洲色图.com| 精品在线亚洲视频| 91亚洲精品久久久蜜桃网站| 欧美一级精品大片| 中文字幕一区二区日韩精品绯色| 日本亚洲电影天堂| 99re成人在线| 欧美成人一区二区| 国产91精品一区二区| 在线免费观看成人短视频| 日韩视频123| 亚洲精选在线视频| 国产一二精品视频| 欧美日韩一区二区欧美激情| 国产精品视频你懂的| 日韩精品一二区| 99国产精品国产精品毛片| 日韩精品一区二区三区视频播放 | 欧美mv和日韩mv的网站| 亚洲精品免费视频| 国产成人自拍高清视频在线免费播放| 91成人在线免费观看| 国产欧美日本一区二区三区| 亚洲mv大片欧洲mv大片精品| aaa亚洲精品| 久久精品视频免费| 蜜臀av一区二区在线免费观看| 色综合久久综合网欧美综合网| 久久日韩粉嫩一区二区三区| 日日摸夜夜添夜夜添亚洲女人| 色综合久久综合中文综合网| 国产精品久久久久久久久免费桃花 | 麻豆91在线观看| 欧美最猛黑人xxxxx猛交| 国产精品传媒在线| 国产精品99久久久久久久vr| 日韩一区二区三区免费看 | 一区二区三区美女视频| 91在线免费看| 国产人久久人人人人爽| 久久99久久久久| 日韩欧美久久久| 免费视频一区二区| 欧美日韩一级二级| 亚洲成av人片一区二区| 欧美视频自拍偷拍| 亚洲在线视频一区| 色猫猫国产区一区二在线视频| 日韩一区有码在线| 99re在线视频这里只有精品| 国产精品二三区| 色综合中文字幕国产| 久久疯狂做爰流白浆xx| 欧美一卡二卡在线| 蜜臀a∨国产成人精品| 日韩色在线观看| 国产一区二区精品久久| 久久你懂得1024| 国产寡妇亲子伦一区二区| 国产三级一区二区三区| 国产大片一区二区| 中文字幕av一区二区三区高| 大尺度一区二区| 最新国产の精品合集bt伙计| 99久久伊人网影院| 亚洲免费观看高清完整版在线观看 | 亚洲一二三四在线观看| 欧美日韩激情在线| 日韩成人一区二区三区在线观看| 欧美一区二区高清| 韩国一区二区视频| 国产精品亲子伦对白| 色呦呦网站一区| 亚洲午夜影视影院在线观看| 在线播放中文字幕一区| 精品一区中文字幕| 中文字幕不卡一区| 欧美性猛交xxxx乱大交退制版| 水蜜桃久久夜色精品一区的特点| 日韩视频免费观看高清完整版| 国产一区二区三区电影在线观看| 中文乱码免费一区二区| 色欧美片视频在线观看在线视频| 午夜精品免费在线| 久久综合网色—综合色88| 波多野结衣精品在线| 亚洲国产精品欧美一二99| 日韩视频免费观看高清完整版在线观看 | 亚洲天天做日日做天天谢日日欢| 欧美色中文字幕| 激情文学综合插| 日韩美女久久久| 日韩一区二区三区av| 成人免费av资源| 亚洲成人一二三| 久久精品日产第一区二区三区高清版| 亚洲图片激情小说| 3atv在线一区二区三区| 国产黄色精品网站| 亚洲成人久久影院| 久久免费电影网| 欧美在线制服丝袜| 国产一区二区精品在线观看| 一区二区三区在线视频观看| 日韩欧美一区二区三区在线| 91免费视频网| 蜜臀av在线播放一区二区三区| 最新热久久免费视频| 日韩精品专区在线影院重磅| 99久久婷婷国产| 精品一区二区三区免费视频| 亚洲免费观看高清完整版在线观看 | 亚洲欧美激情插| 精品国产乱码久久久久久1区2区| 色综合中文字幕| 国产精品99久久久久久宅男| 日本不卡视频在线| 亚洲精品国产第一综合99久久| 久久久久久久久免费| 欧美一区二区三区性视频| 在线观看国产日韩|