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

📄 freescalei2csourse.txt

📁 以MC68HC908SR12为例的IIC总线源程序
💻 TXT
字号:
以MC68HC908SR12为例的IIC总线源程序
 
 

#include <hidef.h> /* for EnableInterrupts macro */
#include <MC68HC908SR12.h> /* include peripheral declarations */
#define I2CR 1 /*表示读模式*/
#define I2CW 0 /*表示写模式*/
#define WP PTB_PTB2 /*该IO口用于确定24C02是否处于写保护状态*/
byte temp,i;
byte date[8];
void delay(word i)
{
 while(i--!=0);
}
/*MMIIC模块的初始化*/
void I2CInit()
{
 /*设置 MMCR1寄存器*/
 MMCR1=0xa0;
 /*设置MMCR2寄存器*/
 MMCR2=0x00;
 /*设置 MMSR寄存器*/
 MMSR=0x00;
 /*预读MMDRR,清除MMRXBF位*/
 temp=MMDRR;
 /*设置从地址MMADR寄存器*/
 MMADR=0xA0;
 /*设置MMIIC通讯的波特率*/
 MMFDR=0x04;
}
/产生一个主模式开始条件*/
void I2CStart(byte addr) 
{
 /*发送模式*/
 MMCR2_MMRW=I2CW;
 /*从设备的地址*/
 MMDTR=addr;
 /*启动主模式*/
 MMCR2_MMAST=1;//开始主模式
}

/*发送一个字节*/
void I2CWriteByte(byte data)
{
 while(MMSR_MMTXIF==0);
 MMSR_MMTXIF=0;
 MMDTR=data;
}

/*接收一个字节*/
byte I2CReadByte(void)
{
 while(MMSR_MMRXIF==0);
 MMSR_MMRXIF=0;
 return MMDRR;
}
/*产生一个结束条件*/
void I2CStop(void)
{
 while(MMSR_MMTXIF==0);
 MMSR_MMTXIF=0;
 MMDTR=0xff;
 MMCR2_MMAST=0;
}
/*主程序*/
void main(void)
{
 /*系统和变量初始化*/
 CONFIG1=0x09;
 CONFIG2=0xfd;
 temp=0x00;
 /*去除24C02的写保护功能*/
 
 DDRB=0xff;
 WP=0;
 PTD=0x00;
 DDRD=0xff;
 for(i=0;i<8;i++)
 date[i]=i;
 
 /*发送数据*/
 I2CInit();
  MMSR_MMTXIF=0;
 I2CStart(0x00);
 for(i=0;i<8;i++)
  I2CWriteByte(date[i]);
 I2CStop();
 delay(1000);
 /*数据写入24C02之后,将数组清零,以便读取数据*/
 for(i=0;i<8;i++)
  date[i]=0;

 /*读取数据*/ 
 I2CInit();
 MMSR_MMTXIF=0;
 I2CStart(0x00);
 /*从地址发送完毕。*/
 while(MMSR_MMTXIF==0); 
 MMSR_MMTXIF=0;
 MMADR=0xa0;
/*改成读状态*/
 MMCR2_MMRW=1; 
 MMCR1_MMTXAK=0;//自动发送ACK
 MMCR1_REPSEN=1;//重复开始位置1 
 MMDTR=0xaa; 

 while(MMSR_MMTXIF==0); 
 MMSR_MMTXIF=0;
 MMDTR=0xaa;
 /*开始接收数据*/
 for(i=0;i<8;i++)
 {
  while(MMSR_MMRXIF==0);
  if(i!=6)
  {
   date[i]=MMDRR;
   MMSR_MMRXIF=0;
  }
  /*倒数第二个数据,读取数据并设置停止信号*/
  else
  {
   date[6]=MMDRR;
   MMSR_MMRXIF=0;
   MMCR1_MMTXAK=1;
   MMCR2_MMAST=0;
  }
 }
 while(1);
}

⌨️ 快捷键说明

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