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

📄 7281.c

📁 7281读写程序//读出BC728X内部寄存器的值 调用参数为寄存器地址
💻 C
字号:
//向BC728X发送一个字节
void send_byte(unsigned char send_byte)
{
	unsigned char bit_bounter;
	clk=0;
	clk=1;          //产生一个CLK脉冲
	do              //发送CLK脉冲直到DAT为低电平
	{
		clk=0;
		clk=1;
	}while (dat);
	clk=0;        //15us内再次输出一个CLK脉冲
	clk=1;
	while(!dat);  //等待BC728X进入接收状态
	for(bit_bounter=0;bit_bounter<8;bit_bounter++)
	{
		if((send_byte&0x80)==0)
		{
			dat=0;   //如果待发数据为0 置DAT为0
		}
		else
		{
			dat=1;  //反之置为1
		}
		send_byte=send_byte*2;  //send_byte左移一位
		clk=0;        //输出一个clk 脉冲
		clk=1;
		delay(1);
	}
	dat=1;            //恢复dat为高电平
	delay(2);         //指令间设置一微小延时
}
//写入BC728X 第一个参数为目标寄存器地址 第二个参数为要写入的数据
void write728x(unsigned char read_add,unsigned char write_data)
{
	send_byte(read_add);   //发送寄存器地址
	send_byte(write_data); //发送数据字节
}
// 从BC728X接收一个字节
unsigned char receive_byte(void)
{
	unsigned char bit_counter,in_byte;
	clk=0;                 //只发送一个单一CLK脉冲
	clk=1;
	while(dat);            //等待BC728X响应DAT低电平
	clk=0;                 //收到响应 再发一个脉冲等待接收数据
	clk=1;
	for(bit_counter=0;bit_counter<8;bit_counter++)
	{
		delay(1);
		in_byte=in_byte*2; //in_byte左移一位
		if(dat)
		{
			in_byte=in_byte|0x01;     //数据bit0=1
		}
		clk=0;     //输出一个CLK 脉冲
		clk=1;
	}
	delay(2);
	return in_byte;
}
//读出BC728X内部寄存器的值 调用参数为寄存器地址
unsigned char read728x(unsigned char reg_add)
{
	send_byte(reg_add|0x80);   //发送读指令(bit7=1)
	return (receive_byte());   //接收数据字节
}

⌨️ 快捷键说明

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