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

📄 main.c

📁 在51下的外挂硬盘和FLASH的MP3方案程序以及原理图
💻 C
字号:
#include <stdio.h>
#include <string.h>
#include "..\Inc\AT8xC51SND1.h"
#include "..\Inc\GLOBAL.h"
#include "..\Inc\CHIPSOURCE.h"
#include "..\Inc\COMMON.h"
#include "..\Inc\IDEIO.h"
#include "..\Inc\FAT32.h"
#include "..\Inc\MP3DECODER.h"
#include "..\Inc\LCD.h"
#include "mp3player.c"

WORD test=0;

xdata char filename1[100];

void main(void)
{
	xdata WORD i,j=0;
	xdata BYTE key,status,f2,function=0;

	EA=1;
	
	//初始化
	LCDInit();
	LCDPrint(0,Title);
	InitPLL();
	InitUART();
	InitKEY();
//	InitTimer0();
	InitMP3Decoder();
	IDEInit();

	printf("ok\n");
	printf("%bd Drivers found!\n",IDE.TotalDevices);
	printf("Device 0 LBA: %ld\n",IDEDevice[0].TotalSectors);
	printf("Device 1 LBA: %ld\n",IDEDevice[1].TotalSectors);

	IDESetCurrentDevice(IDE_DEVICE_MASTER);

	printf("Ready\n");
	FAT32Init();
	i=FAT32MountPartition();
	printf("Mount Hard Disk Partition Table...ok\n");
	i=FAT32MountVolumeID(0);
	printf("\nMount Hard Disk Partition P%bd...ok\n",HDD.CurrentPartition);
	printf("Total Size:\t%ld bytes\nFree Size:\t%ld bytes\n",FAT32DiskSize(),FAT32DiskFreeSize());
	ShowDiskSize();
	filename1[0]=0;
	Play.CurrentPoint=1;
	while((status=FAT32GetDirName(Play.CurrentPoint))==3) Play.CurrentPoint++;
	printf("\n%d\n",Play.CurrentPoint);
	function=1;
	while(1)
	{
		key=GetKey();
		printf("key:%bd\n",key);
		switch (key)
		{
			case KEY_LEFT		:
				FunctionProcess(function,0);
				break;
			case KEY_RIGHT	:
				FunctionProcess(function,1);
				break;
			case KEY_UP	:
				function--;
				if (function>MAX_MENU) function=MAX_MENU-1;
				printf("%bd,%s\n",function,MenuList[function]);
				LCDClearLine(0);
				LCDPrint(0,MenuList[function]);
				break;
			case KEY_DOWN	:
				function=(++function)%MAX_MENU;
				printf("%bd,%s\n",function,MenuList[function]);
				LCDClearLine(0);
				LCDPrint(0,MenuList[function]);
				break;
			case KEY_OK		:
				if (FAT32GetDirName(Play.CurrentPoint)==2)
				{
					strcpy((char *) filename1,(char *) LongFileName);
					printf("%08lx->",FAT32.CurrentDirectory);
					FAT32ChangeDirectory(filename1);
					printf("%08lx->\n",FAT32.CurrentDirectory);
					Play.CurrentPoint=1;
					while((status=FAT32GetDirName(Play.CurrentPoint))==3) Play.CurrentPoint++;
					LCDClearLine(1);
					status=FAT32GetDirName(Play.CurrentPoint);
					if (status==1)
					{
						printf("%bd FILE->",Play.CurrentPoint);
						LCDPrint(0x10,"--");
					}
					else if (status==2)
					{
				 		printf("DIR->");
						LCDPrint(0x10,"->");
					}
					printf("%s\n",LongFileName);
					LCDPrint(0x11,LongFileName);
				}
				else
				{
					if (MP3.Playing)
					{
						if (AUDCON1&0x40)
							MP3DecoderControl(MP3_PAUSE,0);
						else
							MP3DecoderControl(MP3_PAUSE,1);
					}
					else					
					{
						if ((status=FAT32GetDirName(Play.CurrentPoint))==0) {j=1;status=FAT32GetDirName(Play.CurrentPoint);}
						strcpy((char *) filename1,(char *) LongFileName);
						f2=FAT32OpenFile(filename1);
						if (f2==FAT32_ERR_FILE_OPEN_ERROR) {printf("fail to open file\n");}
						else
						{
							printf("open file:%s \t%ld \t%lx\n",FCB[f2].FileName,FCB[f2].Size,FCB[f2].FirstCluster);
	//						InitMP3Decoder();
							LoadMP3Data(f2);
						}
					}
				}
				break;
			case KEY_CANCEL	:
				if (MP3.Playing)
				{
					MP3.Playing=0;
					FAT32CloseFile(MP3.File);
					printf("play over\n");
				}
				else
				{
					strcpy(filename1,"..         ");
					printf("%08lx->",FAT32.CurrentDirectory);
					FAT32ChangeDirectory(filename1);
					printf("%08lx->\n",FAT32.CurrentDirectory);
					Play.CurrentPoint=1;
					while((status=FAT32GetDirName(Play.CurrentPoint))==3) Play.CurrentPoint++;
					LCDClearLine(1);
					status=FAT32GetDirName(Play.CurrentPoint);
					if (status==1)
					{
						printf("%bd FILE->",Play.CurrentPoint);
						LCDPrint(0x10,"--");
					}
					else if (status==2)
					{
				 		printf("DIR->");
						LCDPrint(0x10,"->");
					}
					printf("%s\n",LongFileName);
					LCDPrint(0x11,LongFileName);
				}
				break;
		}
}
}

⌨️ 快捷键说明

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