tf卡无法格式化
#include
#include
#include
#include
#include "uart.h"
#include "I2C.h"
sbit s1=P3^4; //1T sbit s2=P3^5; //2T sbit s3=P3^6; //3T sbit s4=P3^7; //4T sbit led1=P1^0; sbit led2=P1^1;
sbit led3=P1^2;
//#define freq1 104600
//#define freq2 107900
//#define freq3 94400
//#define freq4 88880
unsigned char radio_write_data[5]={0x31,0xc5,0x40,0x11,0x40}; //要写入TEA5767的数据
unsigned char radio_read_data[5]; //TEA5767读出的状态
unsigned long frequency;
unsigned int pll;
void delay_ms(unsigned int i) //us延时函数
{
unsigned int j,k;
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void radio_write(void)
{
unsigned char i;
iic_start();
iic_write8bit(0xc0); //TEA5767写地址
if(!iic_testack())
{
for(i=0;i<5;i++)
{
iic_write8bit(radio_write_data[i]);
iic_ack();
}
}
iic_stop();
}
//由频率计算PLL
void get_pll(void)
{
unsigned char hlsi;
unsigned int twpll=0;
hlsi=radio_write_data[2]&0x10;
if (hlsi)
pll=(unsigned int)((float)((frequency+225)*4)/(float)32.768); //频率
单位:k
else
pll=(unsigned int)((float)((frequency-225)*4)/(float)32.768); //频率
单位:k
}
//由PLL计算频率
void get_frequency(void)
{
unsigned char hlsi;
unsigned int npll=0;
npll=pll;
hlsi=radio_write_data[2]&0x10;
if (hlsi)
frequency=(unsigned long)((float)(npll)*(float)8.192-225); //频率单位:KHz
else
frequency=(unsigned long)((float)(npll)*(float)8.192+225); //频率单位:KHz
}
//读TEA5767状态,并转换成频率
void radio_read(void)
{
unsigned char i;
unsigned char temp_l,temp_h;
pll=0;
iic_start();
iic_write8bit(0xc1); //TEA5767读地址
if(!iic_testack())
{
for(i=0;i<5;i++)
{
radio_read_data[i]=iic_read8bit();
iic_ack();
}
}
iic_stop();
temp_l=radio_read_data[1];
temp_h=radio_read_data[0];
temp_h&=0x3f;
pll=temp_h*256+temp_l;
get_frequency();
}
//手动设置频率 不用考虑TEA5767用于搜台的相关位:SM,SUD void search()
{
get_pll();
radio_write_data[0]=pll/256;
radio_write_data[1]=pll%256;
radio_write_data[2]=0x41;
radio_write_data[3]=0x11;
radio_write_data[4]=0x40;
radio_write();
}
void main()
{
P3=0xff;
UART_Init();
comm("gfradio \r\n\0");
comm("running \r\n\0");
radio_write();
while(1)
{
if(s1==0)
{
delay_ms(1);
if(s1==0)
{
while(s1==0);
frequency=79000;
search();
send_fre(frequency);
led1=0;
led2=1;
led3=1;
}
}
if(s2==0)
{
delay_ms(1);
if(s2==0)
{
while(s2==0);
frequency=100500;
search();
send_fre(frequency);
led1=1;
led2=0;
led3=1;
}
}
if(s3==0)
{
delay_ms(1);
if(s3==0)
{
while(s3==0);
frequency=94400;
search();
send_fre(frequency);
led1=1;
led2=1;
led3=0;
}
}
if(s4==0)
{
delay_ms(1);
if(s4==0)
{
while(s4==0);
frequency=88880;
search();
send_fre(frequency);
led1=0;
led2=0;
led3=0;
}
}
}
}