• 大小: 3KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: C/C++
  • 标签: EEPROM  c语言  

资源简介

针对EEPROM编写的C语言控制程序,实现了写入和读取,EEPROM其实现在已经不多了,传上来以防有人需要

资源截图

代码片段和文件信息

#include “io430.h“
#include “in430.h“
// 用符号定义25lc020A 各命令
#define  c_READ  3           //读命令 
#define  c_WRITE 2           //写命令
#define  c_WRDI  4           //写禁止
#define  c_WREN  6           //写允许
#define  c_RDSR  5           //读状态寄存器
#define  c_WRSR  1           //写状态寄存器

// 用符号定义状态寄存器中的状态位
#define  BP1    BIT3
#define  BP0    BIT2
#define  WEL    BIT1
#define  WIP    BIT0    
 
// 用符号定义使用的端口和管脚,可据具体的连线进行修改
#define  PeSEL  P3SEL
#define  PeDIR  P3DIR
#define  PeOUT  P3OUT
#define  PeIN   P3IN
#define  eeCS   BIT0
#define  eeSI   BIT1
#define  eeSO   BIT2
#define  eeSCK  BIT3

// 用符号定义待写和待读EEPROM的起始单元地址、单元数,可据具体的情况修改
#define    EEaddressW   0x00            // 待写起始单元为00h 
#define    EEnumberW    24         // 待写单元数为24个字节
#define    EEaddressR   0x00 // 待读起始单元为00h,即刚才写入信息的空间
#define    EEnumberR    24              // 待读单元数为24个字节

// 函数名称:send_SI_byte
// 函数功能:通过SI向EEPROM传送一个字节的数据
// 函数参数:向EEPROM发送的指令、地址或者数据(均为一字节)
// 函数返回值:无
void send_SI_byte(unsigned int a);

// 函数名称:read_SO_byte
// 函数功能:通过SO从EEPROM读取一个字节的数据
// 函数参数:无
// 函数返回值:读取到的数据(一字节)
unsigned int read_SO_byte();

// 函数名称:chk_WIP
// 函数功能:查询EEPROM转台寄存器的WIP位值,直到不忙时返回
// 函数参数:无
// 函数返回值:无
void chk_WIP();

// 函数名称:send_SCK
// 函数功能:向EEPROM的SCK引脚输出一个正脉冲信号
// 函数参数:无
// 函数返回值:无
void send_SCK();

// 函数名称:p_WREN
// 函数功能:设置EEPROM写允许命令
// 函数参数:无
// 函数返回值:无
void p_WREN();

// 函数名称:p_WRDI
// 函数功能:设置EEPROM写禁止命令
// 函数参数:无
// 函数返回值:无
void p_WRDI();

// 函数名称:EE_byte_read
// 函数功能:从EEPROM中读出指定地址单元的一个字节内容
// 函数参数:指定EEPROM单元的地址
// 函数返回值:指定EEPROM单元的内容
unsigned int EE_byte_read(unsigned int address);

// 函数名称:EE_byte_write
// 函数功能:向EEPROM指定单元写入一个字节内容
// 函数参数:指定EEPROM单元的地址address、指定写入单元的内容data
// 函数返回值:无
void EE_byte_write(unsigned int addressunsigned int data);

// 函数名称:rd_status
// 函数功能:读EEPROM状态寄存器
// 函数参数:无
// 函数返回值:EEPROM状态寄存器的值
unsigned int rd_status();

// 函数名称:wr_status
// 函数功能:写EEPROM状态寄存器
// 函数参数:待写入EEPROM的状态值
// 函数返回值:无
void wr_status(unsigned int data);

const unsigned char data[]={……} // 利用const关键字在ROM中预置要写入的内容(char类型),写入格式为‘h‘‘e‘‘l‘‘l‘‘o‘等等
unsigned char buffer; // 声明RAM缓冲区,存放读取到的EEPROM内容
unsigned char *p=&buffer; // 声明指针指向buffer,便于后续操作

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  ……                                  // 用户自编EEPROM读/写主程序部分
  ……
  ……
  LPM0;
}

void send_SI_byte(unsigned int a)
{
  unsigned int ib;
  for(i=0;i<8;++i)
  {
    b=a<    switch(b&0x0080){
    case 0x0080: PeOUT=PeOUT|eeSI; break; // a中第(8-i)位为1,置SI=1.
    case 0: PeOUT=PeOUT&(~eeSI); break;   // a中第(8-i)位为0,置SI=0.
    default:;
    }
    send_SCK();                           // 通过SCK输出一个clock
  }
}

unsigned int read_SO_byte()
{
  unsigned int ia=0;
  for(i=0;i<8;++i)
  {
    a=a<<1;                              // 将a左移一位
    if((PeIN&eeSO)==0)       a=a&254;   // 置a末位为0
    else a=a|1;                         // 置a末位为1
    se

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       5987  2011-12-15 15:37  EEPROM操作指令_C语言版.c

     文件       1500  2013-12-28 22:32  说明.txt

----------- ---------  ---------- -----  ----

                 7487                    2


评论

共有 条评论