//手动设置频率,mode=1,+0.1MHz; mode=0:-0.1MHz ,不用考虑TEA5767用于搜台的相关位:SM,SUD
void search(bit mode)
{
radio_read();
if(mode)
{
frequency+=100;
if(frequency>max_freq)
frequency=min_freq;
}
else
{
frequency-=100;
if(frequency<min_freq)
frequency=max_freq;
}
get_pll();
radio_write_data[0]=pll/256;
radio_write_data[1]=pll%256;
radio_write_data[2]=0x20;
radio_write_data[3]=0x11;
radio_write_data[4]=0x00;
radio_write();
}
//自动搜台,mode=1,频率增加搜台; mode=0:频率减小搜台,不过这个好像不能循环搜台
void auto_search(bit mode)
{
radio_read();
get_pll();
if(mode)
radio_write_data[2]=0xa0;
else
radio_write_data[2]=0x20;
radio_write_data[0]=pll/256+0x40;
radio_write_data[1]=pll%256;
radio_write_data[3]=0x11;
radio_write_data[4]=0x00;
radio_write();
radio_read();
while(!(radio_read_data[0]&0x80)) //搜台成功标志
{
radio_read();
disp_freq(9,1);
}
}
还有:
#include "stc89c51.h"
#include "iic.h"
sbit scl0=P3^5;
sbit sda0 = P3^4;
sbit scl1= P3^3;
sbit sda1 = P3^2;
//这里只写了两个I2C设备,如果需要可以再加上 sbit scl2=xx; sbit sda2=xx; 实际上多个设备的scl脚可以共用
unsigned char iic_delay_time = 8;
void scl(device,value);
void sda(device,value);
bit sdasense(char device);
// delay
void iic_delay(unsigned char m)
{
unsigned char n;
for(n=0;n<m;n++);
}
//
void scl(device,value)
{
if (device==0) //设备1
scl1=value;
if (device==1) //设备2
scl2=value;
}
void sda(device,value)
{
if (device==0) //设备1
sda1=value;
if (device==1) //设备2
sda2=value;
}
bit sdasense(char device)
{
switch(device)
{
case 1: return sda1;
break;
case 2: return sda2;
break;
}
}
//启动I2C总线的函数,当scl为高电平时使sda产生一个负跳变
void iic_start(device)
{
sda(device,1);
scl(device,1);
iic_delay(iic_delay_time);
sda(device,0);
iic_delay(iic_delay_time);
scl(device,0);
iic_delay(iic_delay_time/2);
}
//终止I2C总线,当scl为高电平时使sda产生一个正跳变
void iic_stop(device)
{
scl(device,0);
sda(device,0);
scl(device,1);
iic_delay(iic_delay_time);
sda(device,1);
iic_delay(iic_delay_time);
}
//发送应答信号
void iic_ack(device) {
sda(device,0);
scl(device,1);
scl(device,0);
sda(device,1);
}
