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

📄 main.c

📁 这是我写的一个51内核对APR6008语音储存播放ic的底层驱动程式!spi通讯方式.在89s52上面调试通过!
💻 C
字号:
#pragma CODE
#include <reg52.h>
#include "APR6008_DRIVER.H"
#include <intrins.h> 

/*
sbit SCLK = P0^0;
sbit CS	  = P0^1;
sbit DI	  = P0^2;
sbit DO	  = P0^3;
sbit INT  = P0^4;
sbit SAC  = P0^5;
 
extern void send (unsigned long command);
extern void delay(unsigned char k);
*/
unsigned char data starts;
unsigned char nkey;
unsigned int data add0;
unsigned int data add1;


void send (unsigned char command,unsigned int address){
	unsigned char i;
		CS 		= 0;
		SCLK 	= 0;
		CY		= 0;
	
		for (i = 1;i < 6;i++){
			command = command<<1;
			DI = CY;
			SCLK = 1;
			_nop_();
			SCLK = 0;
			_nop_();
			putbuf(CY);
		}			
		if (address != 0X00){
			CY = 0;
			for (i = 1;i < 16;i++){
			address = address<<1;
			DI = CY;
			SCLK = 1;
			_nop_();
			SCLK = 0;
			_nop_();
			putbuf(CY);

			}
		}
		CS 	= 1;
	

}
void delay (unsigned char k){
	unsigned char temp;
	while (k){
		for (temp = 0;temp <0xff;temp++){
		}			
		k--;
	}
}
void InitSerial (void) {

	PCON |=0x80;
	SCON = 0x50;
	TMOD |= 0x20;
	//TL1 |= 0xFA;  				// 19200	  C35
	//TH1 |= 0xFA;
	TL1 |= 0xF4;  					// 9600	  爱立信
	TH1 |= 0xF4;

	TR1 = 1;
	REN = 1;
	ES = 1;

}
void putbuf (char c) {
	TI = 0; 
	SBUF = c;
	while(!TI);
	TI = 0;
}
void putstring(unsigned char  *puts){
	for(;*puts!=0;puts++)   //遇到停止符0结束
	putbuf(*puts);
}
void main (void){
bit record_key=0;
bit nkey = 0;
	InitSerial ();
	P0 = 0xff;
	P1 = 0xff;
	P2 = 0xff;
	P3 = 0xff;
	send (pwpup,0x0002);					 //选择取样频率,A1,A0 = 01 4.0KHz
while (1){
	add0= 0x0002;

	starts = getkey(1000);
	if (starts != 0x00){

		switch (starts){
			case '1':							 //录制
				while (SAC);
					send (set_reg,add0);
					delay (0xff);
					send (nop,0x00);
					starts  = 0x00;
				putstring ("record");
					record_key = 1;
				break;
			case '2':							 //播放
				while (SAC);
					send (setplay,add0);
					delay (0xff);
					send (nop,0x00);
					starts  = 0x00;
				putstring ("play");
					record_key = 0;
				break;
			case '3':							 //跳过
				while (SAC);
					add1 = add0++;
					send (setplay,add1);
					delay (0xff);
					send (nop,0x00);
				putstring ("skip");
					starts  = 0x00;
				break;
			case '4':							 //停止
				while (SAC);
					send (stop,add0);
					delay (0xff);
					send (nop,0x00);
					starts  = 0x00;
				putstring ("stop");
					record_key = 0;
				break;
			}
		}
			if (SAC == 0)led1 = 1;
			else led1 = 0;
			if ((SAC == 0)&&(record_key == 1)&&(nkey == 1)){
				led0 = 0;
				add1 = add0++;
				send (set_reg,add1);
				delay (0xff);
				send (nop,0x00);
				putstring ("record++");
				nkey = 0;
				}
			if (SAC == 1){nkey = 1;led0 = 1;}
			
	}
}

⌨️ 快捷键说明

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