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

📄 main.c

📁 UART I2C驱动
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                                上海丰宝电子科技有限公司
**
**                                       研发部 
**
**                               http://www.linposh.com.cn
**
**--------------文件信息--------------------------------------------------------------------------------
** 文   件   名: main.c
** 描        述: 定时器演示程序
** 版  本: 1.0
** 日 期: 2006年4月12日
**
**------------------------------------------------------------------------------------------------------
** 修改人:Magicoe
** 版  本:V1.0
** 日 期:2007/7/30
** 描 述:从ADS1.2移植到KEIL UV3 v3.50
**
********************************************************************************************************/
#include "config.h"

#define   AT24C02 0xA0              /* 定义器件地址 */
extern  void  __irq  IRQ_I2C(void);
extern  unsigned char  ISendStr(unsigned char sla, unsigned char suba, unsigned char *s, unsigned char no);
extern  unsigned char  IRcvStr(unsigned char sla, unsigned char suba, unsigned char *s, unsigned char no);
extern  void  UART0_Ini(void);
extern  void  ISendBuf(void);

unsigned char data_buf[8];
unsigned char  rcv_new;

/****************************************************************************
* 名称:I2C_Init()
* 功能:主模式I2C初始化,包括初始化其中断为向量IRQ中断。
* 入口参数:fi2c		初始化I2C总线速率,最大值为400K
* 出口参数:无
****************************************************************************/
void  I2C_Init(unsigned int fi2c)
{  if(fi2c>400000) fi2c = 400000;

   PINSEL0 = (PINSEL0&0xFFFFFF0F) | 0x50; 	// 设置I2C控制口有效

   I2C0SCLH = (Fpclk/fi2c + 1) / 2;			// 设置I2C时钟为fi2c
   I2C0SCLL = (Fpclk/fi2c) / 2;
   I2C0CONCLR = 0x2C;
   I2C0CONSET = 0x40;						// 使能主I2C
   
   /* 设置I2C中断允许 */
   VICIntSelect = 0x00000000;				// 设置所有通道为IRQ中断
   VICVectCntl0 = 0x29;						// I2C通道分配到IRQ slot 0,即优先级最高
   VICVectAddr0 = (int)IRQ_I2C;	    		// 设置I2C中断向量地址	
   VICIntEnable = 0x0200;           		// 使能I2C中断 
}


/*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :
** 
**********************************************************************************************************/
int main (void)
{
   
   I2C_Init(100000);                      	// I2C初始化
   UART0_Ini();
   
   //从eeprom的0x00地址处读出8字节数据
   IRcvStr(AT24C02, 0x00, data_buf, 8);
   
   //send eeprom data(from 0x0--0x07:8 bytes) to uart0
   ISendBuf();
   
   //receive 8 bytes data form uart0
   rcv_new = 0;
   while(1){
   if (rcv_new){
	   rcv_new = 0;
	   //write received 8 bytes data into eeprom
	   ISendStr(AT24C02, 0x00, data_buf, 8);
	   
	   //read out 8 bytes data form eeprom
	   IRcvStr(AT24C02, 0x00, data_buf, 8);
	   
	   //send these data to uart0
	   ISendBuf();
   	}
   }

   return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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