📄 7281.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 + -