2020-02-06 10:11发布
AT24C02读取.png (36.66 KB, 下载次数: 0)
下载附件
2013-6-15 13:07 上传
lyl3257 发表于 2013-5-9 22:28 用不了那么复杂,给你一个PIC24 的程序参考 #include #define USE_AND_OR // To enable AND_OR mask setti ...
fengyunyu 发表于 2014-11-22 16:35 StartI2C1,这个是pic的外设库函数么?
最多设置5个标签!
AT24C02读取.png (36.66 KB, 下载次数: 0)
下载附件
2013-6-15 13:07 上传
- //18F_I2C_HD
- #include <p18f14k50.h> //优先选用编译器路径头文件
- #include "18F_I2C_HD.h"
- #include "main.h"
- #include "Delay_us.h"
- void I2C_HD_Init(void)
- {
- //MSSP状态寄存器(I2C模式)
- SSPSTAT = 0x80; //压摆率控制位,使用100KHz标准速率,SMBus 选择位,不开启
- SSPADD = 0x2D; //(Fosc/100000)/4 - 1; //100KHz总线频率 12MHz/100KHz/4-1 = 0x1D;
- SSPCON1 = 0x28; //I2C 主模式,时钟 = FOSC/(4 * (SSPADD + 1)),同步串口使能位,开启
- SSPCON2 = 0x00; //Clear Control Bits
- DDRBbits.RB4 = 1; //开启SDA和SCL为输入
- DDRBbits.RB6 = 1;
- PIE1bits.SSPIE = 1;
-
- ControlByte = 0xAE; // AT24C02地址1010,A2-A0:111,写入 0.
- length = 1; //接受的字节长度 3 Byte
- }
- //----------------------------------------I2C写入数据--------------------------------------------
- void I2C_HD_Write(void)
- {
- IdleI2C(); // 确保总线空闲。
- StartI2C(); // 发出起始位。
- while ( SSPCON2bits.SEN ); // 等待起始位完成。
-
- WriteI2C( ControlByte ); // 写控制位。
- IdleI2C(); // 确保总线空闲。
-
- WriteI2C( 0x01 ); // 地址 0x01.
- IdleI2C(); // 确保总线空闲。
-
- WriteI2C( 0x7B ); // 数据 0x7B.
- IdleI2C(); // 确保总线空闲。
-
- StopI2C(); // 发送停止指令
- while ( SSPCON2bits.PEN ); // 等待停止指令完成
- while (EEAckPolling(ControlByte)); // 等待写入周期完成。
- }
- //----------------------------------------I2C读取--------------------------------------------
- void I2C_HD_Read(void)
- {
- unsigned char *data;
- data = &I2C_Data[0];
- IdleI2C(); // 确保总线空闲。
- StartI2C(); // 发出起始位。
- while ( SSPCON2bits.SEN ); // 等待起始位完成。
-
- WriteI2C( ControlByte ); // 写控制位。
- IdleI2C(); // 确保总线空闲。
-
- WriteI2C( 0x01 ); // 地址 0x01.
- IdleI2C(); // 确保总线空闲。
- RestartI2C(); // 重启总线。
- while ( SSPCON2bits.RSEN ); // 等待总线重启完成。
-
- WriteI2C( ControlByte | 0x01 ); // 读取。
- IdleI2C(); // 确保总线空闲。
- getsI2C( data, length ); // 读取数值。
-
- NotAckI2C(); // 发送无应答。
- while ( SSPCON2bits.ACKEN ); // 等待应答过程结束。
- StopI2C(); // 发送停止指令
- while ( SSPCON2bits.PEN ); // 等待停止指令完成
- }
复制代码StartI2C1,这个是pic的外设库函数么?
是的外设库函数
一周热门 更多>