标签: 无标签 i2c 程序(调试通过) 本程序是在周立功网上的程序的基础上修改的,原例里的ACK 时序有点问题 /*************************************************************************** 此程序是I2C 操作平台(主方式的软件平台)的底层的C 子程序,如发送数据 及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,它很方便的与用 户程序连接并扩展
注意:函数是采用软件延时的方法产生 SCL 脉冲,对高晶振频率要作一定的修改 (本例是3us 机器周期,如果系统对时间要求不是很重要的话,最好在每个单元读写结束时加个延时, 测试有子地址器件函数,未测试无地址的器件,适合器件地址和子地址小于256 的器件, 大于 256 的单元的器件可以自己改写)
**************************************************************************/ #include /*头文件的包含*/ #include #define uchar unsigned char /*宏定义*/ #define uint unsigned int /*端口位定义*/ sbit BELL_OUT=P3^5; sbit SCL="P1"^3;/*模拟 I2C 数据传送位*/ sbit SDA="P1"^4;/*模拟 I2C 时钟控制位*/ bit ack; /*应答标志位*/ /********************************************************************* 起动总线函数 函数原型: void Start_I2c(); 功能:启动 I2C 总线,即发送I2C 起始条件 ********************