久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
DSP281x 讀寫EEPROM 24C02例程
[打印本頁]
作者:
lxiiii
時間:
2017-12-25 20:07
標題:
DSP281x 讀寫EEPROM 24C02例程
0.png
(11.95 KB, 下載次數: 52)
下載附件
2017-12-25 22:35 上傳
單片機源程序如下:
/******************************************************************/
/*Copyright (C), 2008-2009, 力天電子,LiTian Tech.Co.Ltd. */
/* Module Name : GPIO */
/* File Name : main.c */
/* Author : 侯長波 */
/* Version : 2.0 */
/* Function : 讀寫EEPROM 24C02 */
/* Description : */
/******************************************************************/
/*****************頭文件********************/
#include "DSP281x_Device.h"
#include "System.h"
/****************端口宏定義*****************/
#define SCL_OUT GpioDataRegs.GPDDAT.bit.GPIOD0
#define SCL_DIR GpioMuxRegs.GPDDIR.bit.GPIOD0
#define SDA_DAT GpioDataRegs.GPDDAT.bit.GPIOD1
#define SDA_DIR GpioMuxRegs.GPDDIR.bit.GPIOD1
/****************常量宏定義*****************/
#define TRUE 1
#define FALSE 0
/***************全局變量定義****************/
unsigned char w_buffer[8]={23,18,18,20,32,25,28,29};
unsigned char r_buffer[8]={0};
/****************函數聲明*******************/
void Init_24C02(void);
void Set_SDA_In(void);
void Set_SDA_Out(void);
void Start_IIC(void);
void Stop_IIC(void);
void Master_ACK(void);
void Master_NO_ACK(void);
void Write_Byte(unsigned char content);
unsigned char Read_Byte(void);
unsigned char EEPROM_Check(void);
void EEPROM_Write_Byte(unsigned char Adr,unsigned char Data);
unsigned char EEPROM_Read_Byte(unsigned char Adr);
void EEPROM_Write_Page(unsigned char Adr,unsigned char length,unsigned char *Data);
void EEPROM_Read_Page(unsigned char Adr,unsigned length,unsigned char *buffer);
unsigned char EEPROM_Current_Addr_Read(void);
void EEPROM_Sequential_Read(unsigned length,unsigned char *buffer);
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:主函數 */
/*------------------------------------------*/
void main(void)
{
unsigned char i,temp=0,w_data=17,err=0,r_data;
unsigned char * pointer;
InitSysCtrl(); // 系統初始化子程序,在DSP28_sysctrl.c中
Init_24C02();
for(i=0;i<8;i++)
r_buffer[i]=0;
for(i=0;i<5;i++)
{
EEPROM_Write_Byte(temp++,w_data++);
}
temp=0;
w_data=17;
for(i=0;i<5;i++)
{
r_data=EEPROM_Read_Byte(temp++);
if(r_data!=w_data)
err=err+1;
w_data++;
}
EEPROM_Write_Page(0x28,8,w_buffer);
EEPROM_Read_Page(0x28,8,r_buffer);
while(1);
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值: void */
/*函數描述:初始化24C02 */
/*------------------------------------------*/
void Init_24C02(void)
{
EALLOW;
SCL_DIR=1;
SDA_DIR=1;
EDIS;
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:設置SDA引腳輸入 */
/*------------------------------------------*/
void Set_SDA_In(void)
{
EALLOW;
SDA_DIR=0;
EDIS;
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:設置SDA引腳輸出 */
/*------------------------------------------*/
void Set_SDA_Out(void)
{
EALLOW;
SDA_DIR=1;
EDIS;
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:完成IIC的起始條件操作 */
/*------------------------------------------*/
void Start_IIC(void)
{
unsigned char i;
SCL_OUT=1;
SDA_DAT=1;
for(i=0;i<30;i++);
SDA_DAT=0;
for(i=0;i<30;i++);
SCL_OUT=0;
for(i=0;i<30;i++);
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:完成IIC的終止條件操作 */
/*------------------------------------------*/
void Stop_IIC(void)
{
unsigned char i;
SDA_DAT=0;
for(i=0;i<30;i++);
SCL_OUT=1;
for(i=0;i<30;i++);
SDA_DAT=1;
for(i=0;i<30;i++);
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:完成IIC的主機應答操作 */
/*------------------------------------------*/
void Master_ACK(void)
{
unsigned char i;
SDA_DAT=0;
for(i=0;i<30;i++);
SCL_OUT=1;
for(i=0;i<30;i++);
SCL_OUT=0;
for(i=0;i<10;i++);
SDA_DAT=1;
for(i=0;i<30;i++);
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:void */
/*函數描述:完成IIC的主機無應答操作 */
/*------------------------------------------*/
void Master_NO_ACK(void)
{
unsigned char i;
SDA_DAT=1;
for(i=0;i<30;i++);
SCL_OUT=1;
for(i=0;i<30;i++);
SCL_OUT=0;
for(i=0;i<30;i++);
SDA_DAT=0;
for(i=0;i<30;i++);
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:從機是否有應答:1--有,0--無 */
/*函數描述:檢查從機的應答操作 */
/*------------------------------------------*/
unsigned char EEPROM_Check(void)
{
unsigned char i,Slave_ACK;
SDA_DAT=1;
for(i=0;i<30;i++);
SCL_OUT=1;
for(i=0;i<30;i++);
Set_SDA_In();
for(i=0;i<30;i++);
Slave_ACK = SDA_DAT; //讀入SDA數值
SCL_OUT=0;
for(i=0;i<30;i++);
Set_SDA_Out();
if(Slave_ACK==0)
return TRUE;
else
return FALSE;
}
/*------------------------------------------*/
/*形式參數:content--發送的數據 */
/*返回值:void */
/*函數描述:向IIC總線發送一個字節的數據 */
/*------------------------------------------*/
void Write_Byte(unsigned char content)
{
unsigned char i,j;
for(i = 8;i > 0;i--)
{
if((content&0x80)==0x80)
{
SDA_DAT=1;
for(j=0;j<30;j++);
SCL_OUT=1;
for(j=0;j<30;j++);
SCL_OUT=0;
for(j=0;j<30;j++);
}
else
{
SDA_DAT=0;
for(j=0;j<30;j++);
SCL_OUT=1;
for(j=0;j<30;j++);
SCL_OUT=0;
for(j=0;j<30;j++);
}
content <<= 1;
}
SDA_DAT=1;
for(i=0;i<30;i++);
}
/*------------------------------------------*/
/*形式參數:void */
/*返回值:讀出的數據 */
/*函數描述:從IIC總線讀一個字節的數據 */
/*------------------------------------------*/
unsigned char Read_Byte(void)
{
unsigned char i,j,temp=0;
for(i = 0;i < 8;i++)
{
Set_SDA_Out();
SDA_DAT=1;
SCL_OUT=1;
for(j=0;j<30;j++);
Set_SDA_In();
if(SDA_DAT==1)
temp |= (0x01 << (7-i));
SCL_OUT=0;
for(j=0;j<30;j++);
}
Set_SDA_Out();
return(temp);
}
/*------------------------------------------*/
/*形式參數:Adr--地址,Data--數據 */
/*返回值:void */
/*函數描述:向指定地址寫入一個字節的數據 */
/*------------------------------------------*/
void EEPROM_Write_Byte(unsigned char Adr,unsigned char Data)
{
unsigned char temp=0;
unsigned int i;
Start_IIC();//啟用數據總線
Write_Byte(0xA0);//發送寫命令
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return;
}
Write_Byte(Adr);//發送指針寄存器
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return;
}
Write_Byte(Data);//發送數據
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return;
}
Stop_IIC();
for(i=0;i<10000;i++);//等待寫入完成
}
/*------------------------------------------*/
/*形式參數:Adr--地址 */
/*返回值:從指定的地址讀處的數據 */
/*函數描述:從指定地址讀出一個字節的數據 */
/*------------------------------------------*/
unsigned char EEPROM_Read_Byte(unsigned char Adr)
{
unsigned char temp=0,r_data;
Start_IIC();//啟用數據總線
Write_Byte(0xA0);//發送寫命令
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return FALSE;
}
Write_Byte(Adr);//發送指針寄存器
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return FALSE;
}
Start_IIC();//啟用數據總線
Write_Byte(0xA1);//發送讀命令
temp=EEPROM_Check();//等ACK
if(temp==FALSE)
{
return FALSE;
}
r_data=Read_Byte();
Master_NO_ACK();
Stop_IIC();
return r_data;
}
/*------------------------------------------*/
/*形式參數:Adr--地址 length--長度 *Data--指向數據的指針*/
/*返回值:void */
/*函數描述:向指定地址寫入一個字節的數據 */
/*------------------------------------------*/
void EEPROM_Write_Page(unsigned char Adr,unsigned char length,unsigned char *Data)
{
unsigned char temp=0;
unsigned int i,j;
Start_IIC();//啟用數據總線
Write_Byte(0xA0);//發送寫命令
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return;
}
Write_Byte(Adr);//發送指針寄存器
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return;
}
for(i=0;i<length;i++)
{
Write_Byte(*Data);//發送數據
Data++;
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return;
}
}
Stop_IIC();
for(j=0;j<10000;j++);//等待寫入完成
}
/*------------------------------------------*/
/*形式參數:Adr--地址 length--長度 buffer--數據存儲區*/
/*返回值:void */
/*函數描述:從指定地址讀出length個字節的數據 */
/*------------------------------------------*/
void EEPROM_Read_Page(unsigned char Adr,unsigned length,unsigned char *buffer)
{
unsigned char temp=0,i;
Start_IIC();//啟用數據總線
Write_Byte(0xA0);//發送寫命令
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return ;
}
Write_Byte(Adr);//發送指針寄存器
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return ;
}
Start_IIC();//啟用數據總線
Write_Byte(0xA1);//發送讀命令
temp=EEPROM_Check();//等待ACK
if(temp==FALSE)
{
return ;
}
for(i=0;i<length-1;i++)
{
*buffer=Read_Byte();
buffer++;
Master_ACK();
}
*buffer=Read_Byte();
Master_NO_ACK();
Stop_IIC();
}
/*------------------------------------------*/
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
EE.rar
(1.09 MB, 下載次數: 30)
2017-12-25 20:07 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://m.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
男人午夜视频
|
av片在线观看
|
91成人精品一区在线播放
|
夜夜嗨av一区二区三区网页
|
免费特级毛片
|
日韩精品久久久久久
|
国产中文字幕在线
|
亚洲精品久久久久avwww潮水
|
久久日韩精品
|
国内精品国产成人国产三级
|
婷婷六月色
|
国产精品99久久久久久久久
|
欧美精品日韩
|
日韩毛片网
|
日韩一区二区三区四区
|
日韩精品在线观看视频
|
久久久久综合
|
成人午夜在线
|
欧美日韩色
|
欧美久久一区二区
|
毛片久久久
|
日韩黄色在线视频
|
成人毛片100免费观看
|
在线不卡视频
|
亚洲欧美日韩在线
|
国产激情网
|
成人综合婷婷国产精品久久
|
在线观看黄
|
免费av片
|
欧美精品一区二区三区四区
|
亚洲黄视频
|
精品免费视频
|
97色在线
|
亚洲欧美精品一区二区
|
欧美综合一区二区
|
av在线免费观看网站
|
久久久亚洲一区
|
www.久久久
|
狠狠干婷婷
|
亚洲欧美日韩在线
|
成人在线精品
|