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

📄 at24c512_pcf8563.c.bak

📁 基于LM6938的I2C驱动
💻 BAK
字号:
/***********************************************************************
文件说明:AT24C512、PCF8563读写程序
创建人:  严瑞
创建日期:2008-05-26
修改时间:
***********************************************************************/
#include"hw_types.h"
#include"hw_i2c.h"
#include"i2c.h"
#include"hw_memmap.h"
#include"sysctl.h"
#include"gpio.h"
#include"interrupt.h"
#include"AT24C512_PCF8563.h"

/*************************************************************
**I2C进行状态
***************************************************************/
#define     STATE_IDLE                0     //空闲状态
#define     STATE_WRITE_HIGH_ADDR     1     //写高字节地址
#define     STATE_WRITE_LOW_ADDR      2     //写低字节地址
#define     STATE_WRITE_SINGLE_ADDR   3     //写单字节地址(针对从地址为单字节的器件)
#define     STATE_WRITE_FIRST         4     //写入第一个字节
#define     STATE_WRITE_NEXT          5     //写入下一个字节
#define     STATE_WRITE_FINAL         6     //写入最后一个字节
#define     STATE_READ_FIRST          7     //读取第一个字节
#define     STATE_READ_NEXT           8     //读取下一个字节
#define     STATE_READ_FINAL          9     //读取最后一个字节
/********************************************************************
**全局变量的定义
**********************************************************************/
unsigned char g_I2C_sla;                      //器件从地址
unsigned long g_I2C_suba;                     //器件子地址
unsigned char g_I2C_suba_num;                 //器件子地址结构
unsigned long g_I2C_opt;                      //标示是读操作还是写操
unsigned char g_I2C_status;                   //I2C操作状态
unsigned char g_I2C_num;                      //每次操作写入或读出数据数目
unsigned char *g_I2C_buff;                    //该指针指向每次用户写入数据来源和读出数据缓冲首地址
unsigned char g_I2C_data;                    //仅用于I2C写入数据后读出校验缓
unsigned char g_I2C_check;                    //写操作完成后的检查操作,为I2C_SUCCESS表示比较结果相等
/********************************************************************
**函数原型:void Dly(unsigned long Delay)
**一个简单的延时函
**入口参数:Delay     计数器
**返回参数:无
**********************************************************************/
void   Dly(unsigned long  Delay)
{
	for(;Delay!=0;Delay--)
	{
		;
	}
}
/*********************************************************************
2000年~2099年星期算法
*********************************************************************/
unsigned char WeekCalculate(unsigned char y, unsigned char m, unsigned char d)
{
	unsigned char week, day;
	day = WeekTab[m - 1];//月表
	week = day >> 5;//月星期数
	day &= 0x1f;//月天数
	if ((m < 3) && (y & 0x03)){//平年
		if (m == 2) day--;//平年月天数
		week++;//平年月表+1
	}
	y = y + (y >> 2);//年+年/4
	week = (week +   y + d + 2) % 7;//(星期=年+年/4+月表+2日)%7
	return (week) ;//返回星期
}
/********************************************************************
**函数原型  void I2CInit()
**函数说明:I2C模块初始化函数,速率由I2C_SPEED决定(100Kbps或400Kbps)
**入口参数:无
**返回值:  无
**********************************************************************/
void   I2CInit()
{
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);     //使能GPIOB外

⌨️ 快捷键说明

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