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

📄 srt8300.c

📁 C51操作5767收音机芯片(内置杭州的几个台)
💻 C
字号:
#include "SRT8300.h"

//enum {R89, R91_8, R93, R95, R99_6, R103_2, R104_5, R105_4, R107} Radio_fre;
code unsigned char WriteReg_RadioFRE[] = {0x2a,0x55,0x5c, 
										0x2b,0xab,0x4c, 
										0x2c,0x3d,0x4c, 
										0x2d,0x31,0x3c, 
										0x2f,0x63,0x2c, 
										0x31,0x1a,0x1c, 
										0x31,0xb9,0x1c,  
										0x32,0x27,0x1c, 
										0x32,0xea,0x0c};



unsigned char WriteReg[32]={SRT8300_REGDATA_1,SRT8300_REGDATA_2,SRT8300_REGDATA_3,SRT8300_REGDATA_4,
							SRT8300_REGDATA_5,SRT8300_REGDATA_6,SRT8300_REGDATA_7,SRT8300_REGDATA_8,
							SRT8300_REGDATA_9,SRT8300_REGDATA_10,SRT8300_REGDATA_11,SRT8300_REGDATA_12,
							SRT8300_REGDATA_13,SRT8300_REGDATA_14,SRT8300_REGDATA_15,SRT8300_REGDATA_16,
							SRT8300_REGDATA_17,SRT8300_REGDATA_18,SRT8300_REGDATA_19,SRT8300_REGDATA_20,
							SRT8300_REGDATA_21,SRT8300_REGDATA_22,SRT8300_REGDATA_23,SRT8300_REGDATA_24,
							SRT8300_REGDATA_25,SRT8300_REGDATA_26,SRT8300_REGDATA_27,SRT8300_REGDATA_28,
							};
unsigned char ReadReg[10];


///////////////////////////////////////////////////////////////////
/// <summary>
/// 3wire模式写入数据
/// </summary>
void SendData3Wire()
{	
	unsigned char i,j;
	unsigned char _mask;
	unsigned char _d;
	/// 设置为3wire通信模式
	BMOD = 1;
	/// 时钟置低
	if( SCLK )
		SCLK = 0;
	/// 设置读写模式为低
	if( SEN )
		SEN = 0;

	/// 使总线有效
	BEN = 1;
	/// 产生上升沿,设置为写模式
	/// 2006/11/14日修改为5767兼容模式
	SEN = 1;
	SEN = 0;
	SEN = 1;

	// 循环发送寄存器数据
	for(i=0;i<4;i++)//32;i++)
	{
		_mask = 0x80;	// 0x1 << 1;
		// 循环发送每位数据
		for(j=0;  j<8;  j++)
		{
			// 发送数据
			_d = ((_mask & WriteReg[i]) == _mask);
			if( SDIO != _d)
				SDIO = _d ;
			// 产生时钟上升沿
			SCLK = 1;
			// 复位时钟
			SCLK = 0;

			_mask >>= 1;
		}
	}
	SEN = 1;
	// 使总线无效
	BEN =  0;
	SDIO = 1;
}


///////////////////////////////////////////////////////////////////
/// <summary>
/// 3Wire 模式读出数据
/// </summary>
void ReadData3Wire()
{
	unsigned char i,j;
	unsigned char _rec;
	/// 设置为3wire通信模式
	BMOD = 1;
	/// 时钟置低
	if( SCLK )	
		SCLK = 0;
	/// 设置为写数据模式
	if( !SEN ) 
		SEN = 1;
	/// 输出数据线置高,以实现线与逻辑
	if( !SDIO )
		SDIO = 1;

	/// 使总线有效
	BEN = 1;
	/// 产生下降沿设置为读模式
	SEN= 0;
	SEN = 1;
	SEN = 0;

	// 循环发送寄存器数据
	for(i=0; i<4; i++)
	{
		_rec = 0;
		// 循环接收每位数据
		for(j=0;j<8;j++)
		{
			_rec <<= 1;
			// 产生时钟上升沿
			SCLK = 1;
			// 读入状态字
			_rec |= SDIO? 1:0;
			// 复位时钟
			SCLK = 0;

		}
		ReadReg[i] = _rec;
	}

	SEN = 1;
	// 使总线无效
	BEN = 0;
	SDIO = 1;
}

⌨️ 快捷键说明

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