📄 bc7281.c
字号:
//BC7281 驱动8位LED和16个按键程序
#include <C8051F120.h>
#include <BC7281.h>
#include <Delay.h>
extern bit KeyChg;
//函数定义
void Send_Byte(BYTE send_byte) //发送一个字节至BC7281
{
BYTE idata bit_counter;
BC_CLK=0;
BC_CLK=1;
do{
BC_CLK=0;
Delay_us(10);
BC_CLK=1;
}while(BC_DAT);
BC_CLK=0;
Delay_us(10);
BC_CLK=1;
while(!BC_DAT);
for(bit_counter=0;bit_counter<8;bit_counter++)
{
if((send_byte & 0x80) ==0)
{BC_DAT=0;}
else
{BC_DAT=1;}
send_byte=send_byte*2;
BC_CLK=0;
Delay_us(10);
BC_CLK=1;
Delay_us(10);
}
//Delay_us(10);
BC_DAT=1;
}
BYTE Receive_Byte(void)//从BC7281接收一个字节
{
BYTE idata bit_counter,in_byte;
BC_CLK=0;
Delay_us(10);
BC_CLK=1;
while(BC_DAT);
BC_CLK=0;
Delay_us(10);
BC_CLK=1;
for(bit_counter=0;bit_counter<8;bit_counter++)
{
Delay_us(10);
in_byte=in_byte*2;
if(BC_DAT)
{
in_byte=in_byte | 0x01;
}
BC_CLK=0;
Delay_us(10);
BC_CLK=1;
}
return(in_byte);
}
/*void Write7281(BYTE position,BYTE d_value) //显示数码,position-显示的位置 d_value-要显示的数据
{
BYTE wd;
EA=0;
position-=0x01;
wd=(position<<4 | (d_value & 0x0F));
Send_Byte(0x15);//写入寄存器地址
Send_Byte(wd);//写入数据
EA=1;
}*/
void Set7281(BYTE reg_add,BYTE write_data)//设置,reg_add-寄存器地址,write_data-参数
{
EA=0;
Send_Byte(reg_add);//写入寄存器地址
Send_Byte(write_data);//写入数据
EA=1;
}
BYTE GetKey(void) //从BC7281读一个字节,reg_add-寄存器地址
{
EA=0;
Send_Byte(0x13 | 0x80);//发送读指令
EA=1;
return (Receive_Byte());
}
void INT0_ISR(void) interrupt 0 using 1 //BC7281中断
{
KeyChg=1; //键值改变标志位
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -