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

📄 pt2257.c

📁 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 + -