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

📄 main.c

📁 实现lpc2132对I2C的控制
💻 C
字号:
#include "lpc213x.h"
#include"I2CINT.h"
//#include"config.h"

#define AT24c16  0xA0    //AT24c08器件从地址
#define LIGHT    0xff<<10
#define F_pclk   11059200

//************************************************************
//延时子程序
/*void delay(U32 dly)
{
  U32 i;
  for(;dly>0;dly--)
     for(i=0;i<50000;i++);
 }
 */
//***********************************************************
//I2C初始化,入口参数:Fi2c总线频率,最大400KHz
void I2cInt(U32 Fi2c)
{
  if(Fi2c>400000)
     Fi2c=400000;
     
  PINSEL0=(PINSEL0&0xFFFFFF0F)|0x50; //设置I2C控制口有效
  
  I2C0SCLH=(F_pclk/Fi2c+1)/2;    // 设定I2C时钟
  I2C0SCLL=(F_pclk/Fi2c)/2;
  I2C0CONCLR=0x2c;
  I2C0CONSET=0x40;   //使能主I2C
  
  /*设置I2C中断允许*/
  VICIntSelect=0x00000000;  //设置所有通道为IRQ中断
  VICVectCntl0=(0x20|0x09);  //I2C通道分配到IRQ slot0,最高优先级
  VICVectAddr0=(U32)IRQ_I2C;  //设置I2C中断向量
  VICIntEnable=(1<<9);  //使能I2C中断
 }


//**************************************************************
int main(void)
{
  U8 i;
  U8 data_buf[32];
  
  PINSEL0=0; //设置引脚P0.0-P0.15连接GPIO
//  IODIR0=LIGHT;
//  PINSEL1=0x00000000;
  
//  IRQEnable();
  I2cInt(100000);
  
  for(i=0;i<10;i++)
     data_buf[i]=i;
     
  I2C_WriteNByte(AT24c16,1,0x00,data_buf,10);
  delay(50);
//   IODIR0=0xf0<<10;
 
  for(i=0;i<10;i++)
     data_buf[i]=0;
     
  I2C_ReadNByte(AT24c16,1,0x00,data_buf,10);
  
  
  for(i=0;i<10;i++)
  {
    if(data_buf[i]==i)
     { 
           IOSET0=LIGHT;
           delay(50);
           IOCLR0=LIGHT;
           delay(50);
        
       }
   }
while(1)  
{  
   IO0CLR=LIGHT;
   delay(20);
   IO0SET=LIGHT;
   delay(20);
 }
   
   while(1);
   
   return(0);
 }

⌨️ 快捷键说明

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