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

📄 lpc915_i2c.c

📁 基于飞利浦915控制FM发射模块和显示驱动原代码.
💻 C
字号:

#include "reg915.h"
#include "LPC915_I2C.H"

sbit		SI	= I2CON^3;

#define GENERATE_STOP        0x54     //置位 STO, 复位 STA 、 SI
#define RELEASE_BUS_ACK      0x44     //复位 STO,STA,SI 并置位  AA (ack) 
#define RELEASE_BUS_NOACK    0x40     //复位 STO,STA,SI 并置位 AA (noack) 
#define RELEASE_BUS_STA      0x64     //起动总线/重新起动总线, 置位 STA 

#define sla 0x6C	//器件地址

//申请总线
void GetBus()
{ I2SCLH = 15;				//柚肧SCL高电平的PCLK周期数
  I2SCLL = 15;              //柚肧CL低电平的PCLK周期数,6MHz时为100Kbit/S
  //申请成为主机,起动总线。使用内部SCL发生器,I2EN和AA置位。
  I2CON = RELEASE_BUS_STA; 	
  while( SI==0 );        	//等待起始位的发送 
}

//发送数据函数
void SendByte(unsigned char c)
{ I2DAT = c;
  I2CON = RELEASE_BUS_ACK;    	//清除SI位等等
  while( SI==0 );        		//等待数据的发送
}

//向寄存器地址发送字节数据函数               

bit ISendByte(unsigned char suba, unsigned char dat)
{ GetBus();                 	//启动总线
  SendByte(sla);            	//发送器件地址,并接收应答位
 if( I2STAT!=0x18 )				//无从机应答则退出操作
  { I2CON = GENERATE_STOP;
    return(0);
  }
  SendByte(suba);              //寄存器器件地址,并接收应答位
if( I2STAT!=0x28 )			
  { I2CON = GENERATE_STOP;
    return(0);
  }
  SendByte(dat);				//发送数据
if( I2STAT!=0x28 )			
  { I2CON = GENERATE_STOP;
    return(0);
  }
  I2CON = GENERATE_STOP;        //结束总线
  return(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -