?? at24c512_pcf8563.c.bak
字號(hào):
/***********************************************************************
文件說明:AT24C512、PCF8563讀寫程序
創(chuàng)建人: 嚴(yán)瑞
創(chuàng)建日期:2008-05-26
修改時(shí)間:
***********************************************************************/
#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進(jìn)行狀態(tài)
***************************************************************/
#define STATE_IDLE 0 //空閑狀態(tài)
#define STATE_WRITE_HIGH_ADDR 1 //寫高字節(jié)地址
#define STATE_WRITE_LOW_ADDR 2 //寫低字節(jié)地址
#define STATE_WRITE_SINGLE_ADDR 3 //寫單字節(jié)地址(針對(duì)從地址為單字節(jié)的器件)
#define STATE_WRITE_FIRST 4 //寫入第一個(gè)字節(jié)
#define STATE_WRITE_NEXT 5 //寫入下一個(gè)字節(jié)
#define STATE_WRITE_FINAL 6 //寫入最后一個(gè)字節(jié)
#define STATE_READ_FIRST 7 //讀取第一個(gè)字節(jié)
#define STATE_READ_NEXT 8 //讀取下一個(gè)字節(jié)
#define STATE_READ_FINAL 9 //讀取最后一個(gè)字節(jié)
/********************************************************************
**全局變量的定義
**********************************************************************/
unsigned char g_I2C_sla; //器件從地址
unsigned long g_I2C_suba; //器件子地址
unsigned char g_I2C_suba_num; //器件子地址結(jié)構(gòu)
unsigned long g_I2C_opt; //標(biāo)示是讀操作還是寫操
unsigned char g_I2C_status; //I2C操作狀態(tài)
unsigned char g_I2C_num; //每次操作寫入或讀出數(shù)據(jù)數(shù)目
unsigned char *g_I2C_buff; //該指針指向每次用戶寫入數(shù)據(jù)來源和讀出數(shù)據(jù)緩沖首地址
unsigned char g_I2C_data; //僅用于I2C寫入數(shù)據(jù)后讀出校驗(yàn)緩
unsigned char g_I2C_check; //寫操作完成后的檢查操作,為I2C_SUCCESS表示比較結(jié)果相等
/********************************************************************
**函數(shù)原型:void Dly(unsigned long Delay)
**一個(gè)簡(jiǎn)單的延時(shí)函
**入口參數(shù):Delay 計(jì)數(shù)器
**返回參數(shù):無
**********************************************************************/
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;//月星期數(shù)
day &= 0x1f;//月天數(shù)
if ((m < 3) && (y & 0x03)){//平年
if (m == 2) day--;//平年月天數(shù)
week++;//平年月表+1
}
y = y + (y >> 2);//年+年/4
week = (week + y + d + 2) % 7;//(星期=年+年/4+月表+2日)%7
return (week) ;//返回星期
}
/********************************************************************
**函數(shù)原型 void I2CInit()
**函數(shù)說明:I2C模塊初始化函數(shù),速率由I2C_SPEED決定(100Kbps或400Kbps)
**入口參數(shù):無
**返回值: 無
**********************************************************************/
void I2CInit()
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); //使能GPIOB外
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -