📄 bt1029.c
字号:
//-----------------------函数声明,变量定义--------------------------------------------------------
#include <AT89X55.H>
#include <intrins.h>
#include"bt1029.h"
void latch()
{
DATA=1; /*判断发送位*/
SCL=0; /*置时钟线为高,通知被控器开始接收数据位*/
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
// _Nop(); /*保证时钟高电平周期大于4μs*/
//_Nop();
SCL=1;
//_Nop(); /*保证时钟高电平周期大于4μs*/
//_Nop();
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
SCL=0;
_Nop();
DATA=1; /*判断发送位*/
SCL=0; /*置时钟线为高,通知被控器开始接收数据位*/
//_Nop(); /*保证时钟高电平周期大于4μs*/
//_Nop();
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
SCL=1;
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
DATA=1;
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
SCL=0;
}
/*******************************************************************
字节数据传送函数
函数原型: void SendByte(uchar c);
功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
此状态位进行操作.(不应答或非应答都使ack=0 假)
发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
void SendNBit(uchar n,uchar c)
{
uchar BitCnt=0;
for(BitCnt=0;BitCnt<n;BitCnt++) /*要传送的数据长度为8位*/
{
if((c>>BitCnt)&0x01)DATA=1; /*判断发送位*/
else DATA=0;
SCL=0; /*置时钟线为高,通知被控器开始接收数据位*/
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
SCL=1;
_Nop(); /*保证时钟高电平周期大于4μs*/
_Nop();
SCL=0;
}
}
/************************************/
/**BT1029音量调节
/************************************/
void SendBT1029(uchar n,uchar vol)
{ uchar vol1,vol2;
vol1=vol/4;
vol2=vol%4;
SendNBit(2,n);
SendNBit(5,vol1);
SendNBit(2,vol2);
latch();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -