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

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

?? procyon.c

?? Procyon方案(手工制作的MP3播放器電路及資料)
?? C
?? 第 1 頁 / 共 2 頁
字號:
//*****************************************************************
//
// File Name	: 'procyon.c'
// Title		: Procyon MP3 player main
// Author		: Pascal Stang
// Date			: 11/22/2000
// Version		: 0.1
// Target MCU	: ATmega103
// Editor Tabs	: 3
//
//*****************************************************************


//#define AVR_AT90S8515
#define AVR_ATMEGA103

#ifndef WIN32
	#include <io.h>
	#include <signal.h>
	#include <interrupt.h>
#endif

#include "global.h"
#include "lcd.h"
#include "systimer.h"
#include "uart.h"
#include "i2c.h"
#include "spi.h"
#include "sta013.h"
#include "ata_if.h"
#include "playmgr.h"

//#include "procyon.h"

// function prototypes
void mainInitPorts(void);
void mainLCDtest(void);
void mainHDItest(void);
void mainSTA013test1(void);
void mainSTA013test2(void);
void mainLoadToBuffer(void);
void mainPlayFromBuffer(void);
void mainLoadToDisk(void);
void mainPlayFromDisk(void);
void mainPlayFromDisk2(void);
void mainDumpFromDisk(void);
void mainInitDecoder(void);



void mainInitPorts(void)
{
	// general configuration - safe all ports
	outp(0x00, DDRA);			// initialize PortA to input
	outp(0xFF, DDRB);			// initialize PortB to input
	//outp(0x00, DDRC);			// initialize PortC to input
	outp(0x00, DDRD);			// initialize PortD to input
	outp(0x00, DDRE);			// initialize PortE to input

	// specific configuration

	// STA013 data request
	cbi(STA013_DEMAND_PORT-1,STA013_DEMAND_PIN);	// set demand pin as input 

}

int main(void)
{
	unsigned int i;
	unsigned int j;
	unsigned char run;
	unsigned char s,r;

	//outp(0x7D, XDIV);			// set division ratio F_CPU/(129-d)
	//outp(0x7F, XDIV);			// set division ratio F_CPU/(129-d)
	//sbi(XDIV, XDIVEN);		// enable clock division

	mainInitPorts();				// initialize I/O ports
	timerInit0();				// initialize and start timebase
	uartInit();					// initialize uart
	i2c_init();					// initialize I2C interface
	spiInit();					// initialize spi interface
	ataInit();					// initialize ATA driver

	sbi(MCUCR, SRE);			// enable RAM interface

	timerPause(200);			// wait for hardware get up and running

	lcdInit();					// initialize LCD

	timerPause(200);			// wait for hardware get up and running

	lcdGotoXY(0,0); lcdPrintStr("--- Procyon MP3  ---");

	i = 0;
	j = 0;
	s = 0;
	r = 0;

	uartPrintStr("\r\n\n--- Procyon MP3  ---\r\n");
	//uartSendBuffer("Procyon MP3\n\r",13);
	uartPrintStr("Press ""?"" for help.\r\n");

	run = TRUE;

	while(run)
	{
		// print prompt
		uartPrintStr("\r\nProcyon MP3>");

		while(!uartReceiveByte(&s));
		uartPrintChar(s);
		uartPrintStr("\r\n\n");
		switch(s)
		{
		case '1':
			mainSTA013test1();
			break;
		case '2':
			mainPlayFromDisk2();
			break;
		case 'd':
			mainLCDtest();
			break;
		case 'h':
			mainHDItest();
			break;
		case 'i':
			mainInitDecoder();
			break;
		case 'k':
			mainLoadToBuffer();
			break;
		case 'l':
			mainLoadToDisk();
			break;
		case 'q':
			mainPlayFromBuffer();
			break;
		case 'p':
			mainPlayFromDisk();
			break;
		case 'u':
			mainDumpFromDisk();
			break;
		case '?':
			uartPrintStr("Commands:\r\n");
			uartPrintStr("(h) hard disk test\r\n");
			uartPrintStr("(d) lcd display test\r\n");
			uartPrintStr("(1) mp3 decoder test from serial port\r\n");
			uartPrintStr("(i) mp3 decoder initialize\r\n");
			uartPrintStr("(k) load data into buffer from serial port\r\n");
			uartPrintStr("(q) play mp3 from buffer\r\n");
			uartPrintStr("(l) load data into disk from serial port\r\n");
			uartPrintStr("(p) play mp3 from disk\r\n");
			uartPrintStr("(2) play mp3 from disk v2\r\n");
			uartPrintStr("(u) dump mp3 from disk to serial port (binary)\r\n");
			uartPrintStr("(?) for help\r\n");
			uartPrintStr("(e)xit\r\n");
			break;
		case 'e':
			uartPrintStr("Exiting...\r\n");
			run = FALSE;
			break;
		default:
			uartPrintStr("Unknown command\r\n");
			break;
		}
	}

	cbi(MCUCR, SRE);			// disable RAM interface

	return 0;
}

void mainLCDtest(void)
{
	u08 i,j;

	while(1)
	{
		lcdHome();
		for(j=0; j<9; j++)
		{
			timerPause(500);
			for(i=0; i<80; i++)
			{
				lcdDataWrite(0x30+((i+j)%10));
				outp(~i,PORTB);
			}
		}
	}
}

void mainSTA013test1(void)
{
	unsigned int i,j;
	unsigned char s;
	u32 bytesRead;

	i = 0;
	j = 0;

	lcdGotoXY(0,1); lcdPrintStr("Init STA013...      ");

	if(sta013Init())
	{
		lcdGotoXY(0,2); lcdPrintStr("No STA013           ");
		timerPause(2000);
	}
	else
	{
		lcdGotoXY(0,2); lcdPrintStr("STA013 OK          ");
		timerPause(2000);
	}
	sta013ResumeDecoder();

	//sta013HWReset();
	while(j != STA_IDENT)
	{
		j = sta013ReadReg(STA_REG_IDENT);
		lcdGotoXY(0,3); lcdPrintStr("STA013 ID: 0x"); lcdPrintfu08(j);
	}

	lcdGotoXY(0,2); lcdPrintStr("Bytes read:         ");

	cbi(DDRB, 7);	// set PB7 as input 

	bytesRead = 0;
	i = 0;

	while(1)
	{
		if(bit_is_set(PINB,PB7))
		{
			// data request high
			while(!uartReceiveByte(&s));
			spiSendByte(s);
			bytesRead++;
			lcdGotoXY(0,3);
			lcdPrintfu32(bytesRead);
			lcdPrintStr(" *");
			//lcdPrintfu32(TimeReg1);
			//lcdDataWrite(s);
			sbi(PORTB, PB6);
			//if(i)
			//{
			//	uartSendByte(1);
			//	i = 0;
			//}
		}
		else
		{
			// data request low
			lcdGotoXY(0,3);
			lcdPrintfu32(bytesRead);
			lcdPrintStr("  ");
			cbi(PORTB, PB6);
			//uartSendByte(2);
			//i = 1;
		}
	}

}

void mainInitDecoder(void)
{
	// initialize the mp3 decoder
	lcdGotoXY(0,1); lcdPrintStr("Init STA013...      ");
	uartPrintStr("Init STA013...\r\n");


	if(sta013Init())
	{
		lcdGotoXY(0,1); lcdPrintStr("No STA013           ");
		uartPrintStr("No STA013\r\n");
		timerPause(2000);
	}
	else
	{
		lcdGotoXY(0,1); lcdPrintStr("STA013 OK          ");
		uartPrintStr("STA013 OK\r\n");
		timerPause(2000);
	}
	sta013ResumeDecoder();
	uartPrintStr("Done!\r\n");
}

void mainLoadToBuffer(void)
{
	unsigned int i,j;
	unsigned char s;
	unsigned char *buffer;
	unsigned char *subbuffer;
	u32 LBAsector;
	u32 bytesRead;

	bytesRead = 0;

	i = 0;
	j = 0;

	// print intro message
	uartPrintStr("Load MP3 data into buffer via serial port\r\n");

	// setup our local buffer pointing to the big one
	buffer = (unsigned char*) MP3PLAY_BUFFER_ADDR;

	lcdGotoXY(0,1); lcdPrintStr("Bytes read:         ");
	bytesRead = 0;
	uartPrintStr("Ready for MP3 data...\r\n");

	// fill up the play buffer
	for(i=0; i < MP3PLAY_BUFFER_SIZE; i++)
	{
		// get data from serial port
		while(!uartReceiveByte(&s));
		// store to buffer
		buffer[i] = s;
		// do some stats
		bytesRead++;
		lcdGotoXY(0,2); lcdPrintfu32(bytesRead);
		//lcdGotoXY(0,3); lcdPrintfu32(j);
	}

	// store to disk just for fun
/*	uartPrintStr("Store to disk just for fun...\r\n");
	LBAsector = 0x00000001;
	uartPrintfu16((int) buffer);
	uartPrintStr("\r\n");
	for(j=0; j<(MP3PLAY_BUFFER_SIZE>>9); j++)
	{
		subbuffer = (buffer+(j*512));
		uartPrintStr("Storing sector");
		uartPrintfu16(j);
		uartPrintStr("\r\n");
		uartPrintfu16((int) subbuffer);
		uartPrintStr("\r\n");
		ataWriteSectorsLBA(0, LBAsector+j, 1, subbuffer );
	}

	//ataWriteSectorsLBA(0, LBAsector, 0x20, buffer );
*/
	uartPrintStr("\r\nDone Loading...\r\n");
	timerPause(4000);
	uartPrintStr("Flushing Receive Buffer\r\n");
	uartFlushReceiveBuffer();

}

void mainPlayFromBuffer(void)
{
	unsigned int i,j;

	i = 0;
	j = 0;
	
	// print intro message
	uartPrintStr("Play MP3 data from buffer\r\n");

	uartPrintStr("Initializing play manager\r\n");

	// initialize the play manager and buffers
	playmgrInit();
	// set play index to beginning of buffer
	PlayBuffer.dataindex = 0;

	// go to play
	lcdGotoXY(0,1); lcdPrintStr("Play:               ");

	uartPrintStr("Start Play...\r\n");
	playmgrStart();
	while(PlayBuffer.dataindex < PlayBuffer.size-0x80)
	{
		lcdGotoXY(0,2); lcdPrintfu32(PlayBuffer.dataindex);
		lcdGotoXY(0,3); lcdPrintfu32(j);
	}
	playmgrStop();
	uartPrintStr("Done!\r\n");
}

void mainLoadToDisk(void)
{
	unsigned int i,j;
	unsigned char s;
	unsigned char *buffer;
	u32 LBAsector;
	u32 bytesRead;

	i = 0;
	j = 0;

	// print intro message
	uartPrintStr("Load MP3 data into disk via serial port\r\n");

	// setup our local sector buffer
	buffer = (unsigned char*) SECTOR_BUFFER_ADDR;

	lcdGotoXY(0,1); lcdPrintStr("Bytes read:         ");
	bytesRead = 0;
	uartPrintStr("Ready for MP3 data...\r\n");

	// initialize LBA sector
	LBAsector = 0x00010000;

	// fill up 32 sectors
	for(j=0; j<0x040; j++)
	{
		// fill up a sector buffer
		for(i=0; i<0x200; i++)
		{
			// get data from serial port
			while(!uartReceiveByte(&s));
			// store to buffer
			buffer[i] = s;
			// do some stats
			bytesRead++;
			lcdGotoXY(0,2); lcdPrintfu32(bytesRead);
			//lcdGotoXY(0,3); lcdPrintfu32(j);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品久久免费看蜜臀剧情介绍| 欧美极品aⅴ影院| 久久久影视传媒| 亚洲国产综合91精品麻豆| 国产在线国偷精品免费看| 在线免费观看日本一区| 欧美韩国一区二区| 久久国产精品99久久人人澡| 欧美日韩国产精品成人| 一区二区成人在线视频| 成人福利视频网站| 久久久亚洲精品石原莉奈 | 国产综合成人久久大片91| 欧美性生活一区| 一区二区三区四区激情| 99久久久久久99| 国产欧美日韩在线视频| 精品一区二区在线播放| 欧美一区二区在线视频| 日韩精品1区2区3区| 欧美欧美欧美欧美首页| 一区二区三区四区不卡在线 | 激情综合色综合久久综合| 欧美日韩免费一区二区三区视频 | 欧美在线制服丝袜| 一区二区视频在线| 色香蕉成人二区免费| 亚洲人成小说网站色在线| av动漫一区二区| 亚洲欧洲在线观看av| 不卡视频一二三| 亚洲你懂的在线视频| 欧美伊人久久久久久久久影院| 136国产福利精品导航| 不卡的电影网站| 亚洲激情一二三区| 欧美日韩国产小视频在线观看| 日韩国产在线观看一区| 日韩色视频在线观看| 国产伦精一区二区三区| 久久久不卡网国产精品一区| 成人午夜短视频| 一区二区欧美视频| 欧美日韩高清在线| 久久精品久久99精品久久| 国产日韩欧美精品一区| jvid福利写真一区二区三区| 日日噜噜夜夜狠狠视频欧美人| 欧美日韩久久不卡| 狠狠网亚洲精品| 国产精品免费免费| 色狠狠一区二区| 性久久久久久久久久久久| 日韩一区国产二区欧美三区| 国产xxx精品视频大全| 亚洲美女精品一区| 欧美一级高清片| 欧美亚洲自拍偷拍| 日本成人在线网站| 国产欧美1区2区3区| 在线观看视频91| 久久国产夜色精品鲁鲁99| 国产精品女同互慰在线看| 欧美日韩一本到| 国产成人欧美日韩在线电影| 综合电影一区二区三区 | 国产综合色产在线精品| 亚洲人成在线观看一区二区| 欧美日韩激情一区二区| 成人免费视频国产在线观看| 亚洲一区在线观看网站| 久久综合九色综合欧美亚洲| 日本高清无吗v一区| 国产在线精品免费| 香蕉久久一区二区不卡无毒影院| 国产日韩精品视频一区| 欧美日韩成人激情| 色综合天天综合色综合av| 激情六月婷婷久久| 亚洲成人自拍一区| |精品福利一区二区三区| 日韩精品一区在线| 欧美日韩美女一区二区| 99天天综合性| 成人性视频免费网站| 精品在线播放免费| 亚洲成人综合网站| 亚洲精品国产高清久久伦理二区| 久久精品人人做| 欧美va天堂va视频va在线| 欧美色中文字幕| 99久久综合狠狠综合久久| 国产一区二区视频在线| 麻豆精品视频在线| 亚洲福中文字幕伊人影院| 免费人成在线不卡| 性欧美疯狂xxxxbbbb| 亚洲综合丝袜美腿| 一区二区三区产品免费精品久久75| 久久综合精品国产一区二区三区| 欧美高清dvd| 欧美剧情电影在线观看完整版免费励志电影 | 国产精品一二三四区| 亚洲午夜成aⅴ人片| 国产精品久久三| 久久麻豆一区二区| 亚洲精品一区二区三区影院 | 国产精品一区二区免费不卡| 久久精品国产一区二区三| 爽好久久久欧美精品| 亚洲成人激情综合网| 亚洲香肠在线观看| 亚洲午夜一二三区视频| 亚洲第一福利视频在线| 亚洲成人先锋电影| 日韩vs国产vs欧美| 美女精品自拍一二三四| 久久91精品久久久久久秒播| 男女男精品网站| 黄色日韩网站视频| 成人网男人的天堂| 91原创在线视频| 日本久久精品电影| 欧美精品1区2区| 日韩午夜小视频| 26uuu久久综合| 日本一区二区三区久久久久久久久不 | 久久精品国产澳门| 奇米777欧美一区二区| 精品一区二区三区欧美| 风间由美一区二区av101| 成人h精品动漫一区二区三区| 色综合中文字幕国产 | 国产精品美女www爽爽爽| 中日韩av电影| 亚洲伊人色欲综合网| 青青青伊人色综合久久| 国内精品国产三级国产a久久| 成人综合婷婷国产精品久久免费| 色婷婷激情综合| 日韩免费观看高清完整版| 日本一区二区三区高清不卡| 一区二区三区在线观看动漫| 日韩激情视频网站| 国产成人丝袜美腿| 色综合亚洲欧洲| 日韩精品一区在线观看| 亚洲欧洲国产专区| 日韩va欧美va亚洲va久久| 国产精品一级片在线观看| 在线观看不卡一区| 国产午夜亚洲精品理论片色戒 | 一区二区在线观看免费视频播放| 亚洲成人777| 国产精品一区二区在线观看网站| 一本色道久久综合亚洲91| 日韩一区二区三区视频| 国产精品久久免费看| 蜜臀国产一区二区三区在线播放| 国产成人精品在线看| 欧美肥妇bbw| **性色生活片久久毛片| 麻豆精品一区二区av白丝在线| av中文字幕一区| 久久综合丝袜日本网| 午夜伊人狠狠久久| 97久久超碰国产精品电影| 欧美电视剧免费全集观看| 一区二区成人在线视频| 成人午夜在线免费| 欧美成人性战久久| 五月天激情综合| 色哟哟精品一区| 欧美国产在线观看| 激情深爱一区二区| 日韩一级黄色片| 亚洲欧美经典视频| 国产91丝袜在线播放| 欧美成人一区二区三区| 日本成人在线视频网站| 欧美日韩精品三区| 亚洲男人的天堂在线观看| 成人午夜激情视频| 久久久久一区二区三区四区| 麻豆国产精品777777在线| 欧美日韩不卡一区| 一区二区久久久久| 欧美专区在线观看一区| 亚洲免费观看高清完整版在线观看熊 | 久久精子c满五个校花| 日本网站在线观看一区二区三区| 色偷偷久久一区二区三区| 国产日韩欧美综合在线| 国产成人午夜高潮毛片| 国产片一区二区三区| 国产不卡视频在线播放| 中文一区二区完整视频在线观看 | 色狠狠一区二区三区香蕉| 日韩毛片一二三区| 色悠悠久久综合|