📄 pt2257.c
字号:
#include "AT89X51.h"
#include "PT2257.h"
#include "System.h"
#include <intrins.h>
/*****************以下是对IIC总线的操作子程序***/
/*****************启动总线**********************/
void IICStart(void)
{
PT_SCL=0;
PT_SDA=1;
PT_SCL=1;
_nop_();
_nop_();
_nop_();
PT_SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
PT_SCL=0;
}
/*****************停止IIC总线****************/
void IICStop(void)
{
PT_SCL=0;
PT_SDA=0;
PT_SCL=1;
_nop_();
_nop_();
_nop_();
PT_SDA=1;
_nop_();
_nop_();
_nop_();
PT_SCL=0;
}
/**************检查应答位*******************/
bit IICRecAck(void)
{
PT_SCL=0;
PT_SDA=1;
PT_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
CY=PT_SDA; //因为返回值总是放在CY中的
PT_SCL=0;
return(CY);
}
/***************对IIC总线产生应答*******************/
void IICACK(void)
{
PT_SDA=0;
PT_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
PT_SCL=0;
_nop_();
PT_SDA=1;
}
/*******************向IIC总线写数据*********************/
void IICSendByte(char sendbyte)
{
unsigned char data j;
for(j=0;j<8;j++)
{
PT_SCL=0;
sendbyte<<=1;
PT_SDA=CY;
PT_SCL=1; //无论C51怎样实现这个操作,始终会使CY=sendbyte^7;
}
PT_SCL=0;
}
void PT2257Write(char Data1, char Data2)
{
IICStart();
IICSendByte(0x88);
if(!IICRecAck())
{
IICSendByte(Data1);
IICACK();
IICSendByte(Data2);
IICACK();
}
IICStop();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -