|
C51编写的AD7416驱动程序-绝对可用
网上很多关于AD7416驱动程序的停止信号有问题,希望大家在使用的时候多多注意。单片机之路收集整理的这个程序已经经过了修改,在实际的开发过程中已经过调试并正确运行,敬请放心使用! //AD7416 sbit AD7416_SCL = P2^6; sbit AD7416_SDA = P2^7; unsigned char AD7416_SystemError; unsigned int Temperature; //温度 unsigned char ZorF; //正还是负
void AD7416_delay() //延时函数 { unsigned char i=20; while(i--) { _nop_(); } } /*-------------------------------------------------------------------------------- 调用方式:void AD7416_I2CStart(void) 函数说明:私有函数,I2C专用 ---------------------------------------------------------------------------------*/ void AD7416_I2CStart(void) { EA=0; AD7416_SDA=1; AD7416_SCL=1; AD7416_delay();//INI AD7416_SDA=0; AD7416_delay();//START AD7416_SCL=0; AD7416_delay(); } /*-------------------------------------------------------------------------------- 调用方式:void AD7416_I2CStop(void) 函数说明:私有函数,I2C专用 ---------------------------------------------------------------------------------*/ void AD7416_I2CStop(void) { /* AD7416_SCL=0; AD7416_SDA=0; AD7416_delay();//INI AD7416_SCL=1; AD7416_delay();//STOP EA=1; */ AD7416_SDA=0; AD7416_SCL=1; AD7416_delay(); AD7416_SDA=1; AD7416_delay(); EA=1; } /*-------------------------------------------------------------------------------- 调用方式:I2CAck(void) 私有函数,I2C专用,等待从器件接收方的应答ACK BY AD7416 ---------------------------------------------------------------------------------*/ void AD7416_WaitAck(void) { unsigned char errtime=255;//因故障接收方无ACK,超时值为255。 AD7416_SDA=1; AD7416_delay(); AD7416_SCL=1; AD7416_delay(); AD7416_SystemError=0x10; while(AD7416_SDA) { errtime--; if(!errtime) { AD7416_I2CStop(); AD7416_SystemError=0x11; return; } } AD7416_SCL=0; AD7416_delay(); }
本文转自网络,经“单片机之路”(www.mcuway.com)摘选整理,版权归原作者所有
[1] [2] [3] 下一页 |