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

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

?? task._c

?? 基于ATmega64的MP3程序
?? _C
字號:
//ICC-AVR application builder : 2005-11-12 17:11:59
// Target : M16
// Crystal: 8.0000Mhz
// copyright:魯軍波(endylu)
#include <iom16v.h>
#include <macros.h>
#include "main.h"
extern uint8 timer1_over;
extern uint8 key_value;
extern uint8 set_volume;
extern uint8 MP3_all_number;
extern uint8 MP3_current_number;
extern uint8 play_state;   

extern MP3_INFO mp3_info;
extern FAT_INFO fat_info;

extern uint32 CHINALIB_point;
extern uint32 UNICODE_point;

extern uint8 buffer[512];
//extern const uint8 BassTrebleTable[48];

uint8 SONG_state=song_over;
uint8 secperclus;      //對下面顯示歌詞的時間有關

uint8 disp_state=5; 
uint8 STA013_INIT=1;

//=======================================================================
void SONG_task(void)
{
 static uint32 new_Sec;

 static uint16 bytepersec; 
 
 static uint16 file_Clus_allnumber;
 static uint16 file_Clus_sendnumber;
 
 uint32 FAT_Clus;
 uint8 doing;
 static uint8 doing1;
 
 switch(SONG_state)
 {
  case song_stop:
       {
	   
	   break;
	   }
  case song_start:
      {
	    file_Clus_allnumber=((mp3_info.DIR_Filesize[0]>>1)+((int)(mp3_info.DIR_Filesize[1])<<7))/(fat_info.BPB_SecPerClus)+1;   //多少簇                                          
        new_Sec=(((long)(mp3_info.DIR_FstClusL[1])<<8)+(mp3_info.DIR_FstClusL[0])-2)*fat_info.BPB_SecPerClus+fat_info.FirstDateSecter; //簇的頭扇區號 
        file_Clus_sendnumber=0;
		
		SONG_state=song_read_sector;
		secperclus=fat_info.BPB_SecPerClus;
		
	    break;
	   }
  
  case song_find_newsec:
       {         
                 FAT_Clus=((long)(fat_info.Relative+fat_info.BPB_RsvdSecCnt+mp3_info.DIR_FstClusL[1])<<9)+((int)mp3_info.DIR_FstClusL[0]<<1);

                 SD_read_sector2(FAT_Clus,mp3_info.DIR_FstClusL,2);

				 new_Sec=((long)(mp3_info.DIR_FstClusL[1])<<8)+mp3_info.DIR_FstClusL[0];
				 
		    if(new_Sec>=0xfff8)
				 SONG_state=song_over;    
			else
				{new_Sec=(new_Sec-2)*(fat_info.BPB_SecPerClus)+fat_info.FirstDateSecter; //簇的頭扇區號 
				 
				 doing=((long)file_Clus_sendnumber*80)/file_Clus_allnumber;
                 if(doing1!=doing)
                 {
				   LCD_set_XY(doing+1,4);
                   LCD_write_byte(0x5d,1);
				   doing1=doing;
				 }
				 file_Clus_sendnumber++;	
				 SONG_state=song_read_sector;
				 secperclus=fat_info.BPB_SecPerClus;           //每簇多少扇區
	            }
				 break;   
	   }
  case song_read_sector:
       {
	    if(secperclus--)
	      {
		   SD_start_read(new_Sec++);
           SD_get_date(buffer,512);		   
		   SONG_state=song_send_frame;
		   bytepersec=0;
		  }
		else
		  SONG_state=song_find_newsec;
	    break;
	   }
  case song_send_frame:
       {
	    STA013_Enable();
	    while(sta_Demand())      //每次連續請求6ms,隔20ms才又來請求       
		  {
		   Write_Byte_SD(*(buffer+bytepersec++));
		   if(bytepersec==512)
		     {SONG_state=song_read_sector;
			  break;
			 }
          }
		STA013_Disable();
		
		break;
	   }
  case song_over:
       {
	    doing1=0;
	    MP3_current_number++;
		if(MP3_current_number>MP3_all_number)
		   MP3_current_number=1;
		GEPAI();
		JINGDU(); 
	    ASCII(buffer,MP3_current_number);
        LCD_write_String(8,5,2,buffer,0); 
	
		MP3_Directory(MP3_current_number);
		if(mp3_info.Name_number==0)
		if((UNICODE_point>0)&(CHINALIB_point>0))
           LCD_write_String(6,2,8,buffer,0);
	   
		if((MP3_current_number==1)|(play_state==0))
		  {SONG_state=song_stop;
		   if(play_state!=2)
		     {play_state=0;
		      LCD_write_tubiao(0,5,0);
			 }
		  }
		else
		 {SONG_state=song_start;
	     } 
		disp_state=5;
		break;
	   }
 }
}

//=======================================================================
void KBOD_task(void)
{
 if(key_value!=0)
 {
  switch(key_value)
  {
   case volume_add:
        {
		 if(set_volume<8)
			{set_volume++;
			}
         LCD_set_XY(59,5);
         key_value=set_volume*3;
         while(key_value--)
              {
               LCD_write_byte(0x5A,1); 
              }
	     sta_SetVolume(59+set_volume*5,1);
		 key_value=0;
		 break;
		 }
   case volume_sub:
        {
		 if (set_volume>1)
		    {set_volume--;
		    }
         LCD_set_XY(59+set_volume*3,5);
         key_value=3;
         while(key_value--)
              {
               LCD_write_byte(0x42,1); 
              }
		  
	     sta_SetVolume(59+set_volume*5,1);
	     key_value=0; 		
		 break;
		}
   case next:
        {          
		 sta_StartDecoder();
		 if(play_state==2)
		    sta_PauseDecoder(); 
		 sta_SetVolume(59+set_volume*5,1);
		 
		 SONG_state=song_over;
		 key_value=0;
		 disp_state=5;
		 break;
		}
   case back:
       {
		if(MP3_current_number==1)
		    MP3_current_number=MP3_all_number-1;
		else
		    MP3_current_number=MP3_current_number-2;
		 
		sta_StartDecoder();
	    if(play_state==2)
		   sta_PauseDecoder(); 
		sta_SetVolume(59+set_volume*5,1);
		
		SONG_state=song_over; 
		key_value=0;
		disp_state=5;
		break;
		}
   case play:
        {
		 key_value=0;
		 play_state++;
		 
		 switch(play_state)
		       {
			    case 1:                //播放
				    {
					 if(STA013_INIT)
					   {sta_Init();
					    sta_StartDecoder();
						sta_SetVolume(59+set_volume*5,1);
						STA013_INIT--;
					    }
						
					 SONG_state=song_start;
					 LCD_write_tubiao(0,5,1);
					 break;
					}
				case 2:                 //暫停
				    {
					 sta_PauseDecoder();
					 LCD_write_tubiao(0,5,2);
					 break;
					}
				case 3:                 //繼續
				    {
					 play_state=1;
					 sta_ResumeDecoder();
					 LCD_write_tubiao(0,5,1);
					 break;
					}
			   }
			   
		 break;
		}
  }
 }
}

//=======================================================================
void DISP_task(void)
{
 static uint8 disp_point;
 static uint16 disp_number;
 static uint16 disp_i;
 static uint8 disp_j;
 static uint8 buffer_h[72];
 static uint8 buffer_l[72];
 static uint8 piont_24_code[24];

 uint8 n;
 uint8 m;
 
 if(mp3_info.Name_number) 
 {
  if(timer1_over)
    {
	 timer1_over=0;
	 switch(disp_state)
     {case 0:
       {
	    for(n=0;n<mp3_info.Name_number;n++)
		   {
		    if(mp3_info.NAME[n]<0x0060)
			   disp_number+=6;
			else
			   disp_number+=12; 
		    }
		
		disp_state=1;
		break;
	   }

  case 1:
       {
	   
	    if(disp_i>=disp_number)
          {
           buffer_h[disp_point]=0;
           buffer_l[disp_point]=0; 
	      }
       else 
          {
           if((disp_i%6)==0)
		     {
			  for(m=0,n=0;n<disp_i;)
			     {
				  if(mp3_info.NAME[m++]<0x0060)
				     n+=6;
				  else
				     n+=12;  
				  }
			  if(n==disp_i)
			    {Abtain_code(m,piont_24_code);
				 disp_j=0;
				}
			 }
           buffer_h[disp_point]=piont_24_code[disp_j];
           buffer_l[disp_point]=piont_24_code[disp_j+12];
          }
		  disp_j++;
	    disp_state=3;
	    break;
	   }

  case 3:
       {
	   LCD_set_XY(6,2);
       for (n=0; n<72; n++)
       {
	   if(++disp_point>71)
	     {disp_point=0; 
		  }
       LCD_write_byte(buffer_h[disp_point],1);
       }
	   
       LCD_set_XY(6,3); 
       for (n=0; n<72; n++)
       {
	   if(++disp_point>71)
	     {disp_point=0; 
		 }
       LCD_write_byte(buffer_l[disp_point],1);
       }

	   if(++disp_point>71)
	      disp_point=0;

	   disp_state=4;
		break; 
	   }
   case 4:
       {
		if(++disp_i==(72+disp_number))
		    disp_i=0;

		disp_state=1; 
		break;
	   }
   case 5:
      {
	   for(n=0;n<72;n++)
	      {
		   buffer_h[n]=0;
	       buffer_l[n]=0;
	      }
	   disp_point=0;
	   disp_number=0;
	   disp_i=0;
       disp_j=0;
       disp_state=0;
	   break;
	   }
  }
  }
}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲第一区在线暖暖韩国| 亚洲视频图片小说| 欧美日韩在线不卡| 欧美性三三影院| 欧美日韩欧美一区二区| 一本色道亚洲精品aⅴ| 色噜噜夜夜夜综合网| 91亚洲国产成人精品一区二三| 99精品国产视频| 欧美性三三影院| 欧美一区三区四区| 精品国产免费人成电影在线观看四季 | 欧美一区二区视频网站| 777精品伊人久久久久大香线蕉| 欧美精品在线一区二区三区| 日韩一区二区三区在线| 精品国产一区二区精华| 国产精品高潮久久久久无| 亚洲男女一区二区三区| 一区二区三区日韩欧美| 日韩中文字幕区一区有砖一区| 视频在线观看91| 激情综合网最新| 成人视屏免费看| 欧美日韩成人一区| 久久久亚洲高清| 亚洲精选在线视频| 日韩精品电影在线| 国产成人免费在线观看| 一本一道综合狠狠老| 欧美二区三区的天堂| 日本一区二区三区久久久久久久久不| 日韩一区有码在线| 麻豆国产精品777777在线| 国产精品99久| 欧美视频一区在线观看| 国产区在线观看成人精品 | 国产精品免费网站在线观看| 亚洲欧洲无码一区二区三区| 日韩精品亚洲专区| 成人av电影观看| 日韩欧美一区在线| 中文字幕亚洲欧美在线不卡| 麻豆国产精品一区二区三区| 91麻豆自制传媒国产之光| 日韩一区二区视频在线观看| 亚洲欧美日韩一区二区三区在线观看| 日本v片在线高清不卡在线观看| 成人免费看的视频| 日韩免费视频一区| 亚洲高清久久久| 成人福利视频网站| 久久久久久久久久久黄色| 亚洲第一福利视频在线| 不卡一区二区三区四区| 日韩午夜在线观看| 亚洲成人av中文| 99精品在线免费| 国产精品美女视频| 国产一区二区精品在线观看| 欧美一区二区三区在线看| 亚洲综合免费观看高清完整版在线 | 久久精品亚洲精品国产欧美 | 亚洲欧洲国产专区| 成人免费高清在线观看| 久久久久9999亚洲精品| 久久国产精品第一页| 欧美老女人在线| 亚洲高清中文字幕| 欧美日韩成人综合在线一区二区| 一区二区三区中文在线| 91福利在线导航| 一区二区成人在线| 欧美日韩中文字幕一区| 午夜精品久久久久| 欧美色图免费看| 日韩专区欧美专区| 4hu四虎永久在线影院成人| 午夜国产精品影院在线观看| 欧美揉bbbbb揉bbbbb| 首页欧美精品中文字幕| 日韩一区二区视频| 国产一区二区不卡老阿姨| 久久久久综合网| 成人高清免费在线播放| 亚洲美女免费在线| 3d成人动漫网站| 极品少妇一区二区| 国产精品免费av| 日本久久电影网| 丝袜美腿高跟呻吟高潮一区| 日韩午夜电影av| 国产成人精品免费| 亚洲精品免费视频| 精品视频色一区| 理论电影国产精品| 国产欧美久久久精品影院| 成人久久视频在线观看| 亚洲乱码中文字幕综合| 欧美日韩国产高清一区| 麻豆91精品91久久久的内涵| 亚洲色图在线看| 欧美日韩在线一区二区| 狠狠色2019综合网| 亚洲免费观看高清完整版在线观看 | 久久综合五月天婷婷伊人| 国产成人免费9x9x人网站视频| 亚洲欧洲国产日本综合| 在线播放中文一区| 成人爱爱电影网址| 日韩精品亚洲一区| 中文字幕中文乱码欧美一区二区| 欧美日韩国产成人在线免费| 国产盗摄一区二区三区| 亚洲午夜在线电影| 精品粉嫩超白一线天av| 91高清在线观看| 国产精品一区二区不卡| 爽好久久久欧美精品| 中文字幕在线不卡一区 | 久久综合国产精品| 91麻豆国产精品久久| 狠狠色丁香婷婷综合| 亚洲一区二区中文在线| 国产午夜一区二区三区| 欧美日韩高清不卡| 99re免费视频精品全部| 国产精品一二三四| 日本欧美韩国一区三区| 一区二区三区在线看| 久久噜噜亚洲综合| 日韩视频永久免费| 欧美性生活久久| 色综合网色综合| 国产成人久久精品77777最新版本| 日韩—二三区免费观看av| 曰韩精品一区二区| 亚洲天堂精品在线观看| 国产色91在线| 久久久久久久久伊人| 精品成人私密视频| 欧美精品一区二区三区一线天视频| 欧美日韩精品欧美日韩精品一| 色悠悠亚洲一区二区| 色综合中文字幕国产| 激情伊人五月天久久综合| 秋霞午夜鲁丝一区二区老狼| 亚洲国产精品天堂| 亚洲一区二区视频| 亚洲国产精品视频| 亚洲成av人片在线| 天天综合日日夜夜精品| 日韩电影免费一区| 美腿丝袜亚洲色图| 美国三级日本三级久久99 | 成人深夜视频在线观看| 成人动漫中文字幕| 色综合夜色一区| 欧美图片一区二区三区| 欧洲国产伦久久久久久久| 在线观看亚洲精品视频| 欧美三级乱人伦电影| 6080国产精品一区二区| 欧美一区二区三区影视| 日韩欧美一区二区三区在线| 久久欧美中文字幕| 欧美国产成人精品| 亚洲精品精品亚洲| 五月天亚洲精品| 久久av资源站| 成人99免费视频| 欧美三级三级三级| 欧美va在线播放| 国产亚洲精品7777| 一区二区三区四区不卡在线| 天堂资源在线中文精品| 精品一区二区三区在线观看国产| 国产成人免费视频网站 | 国产欧美精品一区二区色综合朱莉 | 久久成人免费网| 丁香婷婷综合网| 欧美色图一区二区三区| 精品粉嫩超白一线天av| 中文字幕在线观看不卡| 午夜a成v人精品| 成人免费av网站| 欧美日韩国产一级二级| 久久精品一区二区| 天天综合天天做天天综合| 国产乱码精品一区二区三| 91日韩在线专区| 欧美一级生活片| 中文字幕一区三区| 久久99精品久久久久婷婷| 在线视频亚洲一区| 国产午夜精品福利| 日本欧洲一区二区| 色综合久久99| 中文字幕不卡的av| 韩国av一区二区|