📄 main.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 + -