本科生毕业设计(论文) P2DIR|=0X04;// SCL=0 }
//发送 1模块 void send_one(void) // {
P2DIR&=0XFD;//SDA=1, 上拉电阻使得P2.1为H,FD=1111,1101 IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011 IIC_Delay();
P2DIR|=0X04;// SCL=0 }
//发送单字符数据
void send _char(unsigned char data_out) // {
unsigned char i,tmp=0x80; for(i=0;i<8;i++) {
if((data_out & tmp)>0) send_one(); else send_zero(); tmp/=2; } }
//读单字符数据
unsigned char read_char(void) {
unsigned char i,tmp=0x80; unsigned char data1=0; for (i=0;i<8;i++) {
P2DIR&=0XFD;//SDA=1, 11111101 IIC_Delay();//
P2DIR&=0XFB;//SCL=1 FB=1111,1011
46
本科生毕业设计(论文) IIC_Delay();
if((P2IN&0x02)>0x00) {
data1|=tmp; }
P2DIR|=0X04;// SCL=0 IIC_Delay(); tmp/=2; }
return data1; }
// 检查应答信号模块 void iic_ACK(void) {
ack_flag=0x00;
P2DIR&=0XFD;//SDA=1, FD=1111,1101 IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011 IIC_Delay();
while((P2IN&BIT1)==BIT1); P2DIR|=0X04;// SCL=0 IIC_Delay(); }
void iic_NACK(void) { P2DIR&=0XFD;//SDA=1, IIC_Delay();
P2DIR&=0XFB;//SCL=1 FB=1111,1011 IIC_Delay();
P2DIR|=0X04;// SCL=0 IIC_Delay();
P2DIR|=0X02;// SDA=0 IIC_Delay();// } }
47
相关推荐: