pic24读写25LC256

代码:

C256.H

/* 
 * File:   C256.h
 * Author: Administrator
 *
 * Created on May 31, 2024, 2:18 PM
 */

#ifndef __C256_H__
#define	__C256_H__

void delay(unsigned int x);
void InitNVM(void);
unsigned int iReadNVM(int address);
void iWriteNVM(int address,int data);






#endif	/* C256_H */

NVM.C

#include<xc.h>
#include "C256.H"
#define CSEE    _RD12
#define TCSEE   _TRISD12

#define SPI_MASTER  0X0122
#define SPI_ENABLE  0X8000

#define SEE_WRSR    1
#define SEE_WRITE   2
#define SEE_READ    3
#define SEE_WDI    4
#define SEE_STAT   5
#define SEE_WEN    6

void delay(unsigned int x)
{
    unsigned int i,j;
    for(i=0;i<x;i++)
        for(j=0;j<200;j++);
}
void InitNVM(void)
{
    TCSEE=0;
    CSEE=1;
    SPI2CON1=SPI_MASTER;
    SPI2STAT=SPI_ENABLE;
}

int writeSPI2(int data)
{
    SPI2BUF=data;
    while(!SPI2STATbits.SPIRBF);
    return  SPI2BUF;
}

int ReadSR(void)
{
    int i;
    CSEE=0;
    writeSPI2(SEE_STAT);
    i=writeSPI2(0);
    CSEE=1;
    return i;
}

unsigned int iReadNVM(int address)
{
    unsigned int lsb,msb;
    while(ReadSR()&0X03);
    CSEE=0;
    writeSPI2(SEE_READ);
    writeSPI2(address>>8);
    writeSPI2(address&0xfe);
    msb=writeSPI2(0);
    lsb=writeSPI2(0);
    CSEE=1;
    return(lsb);
}

void WriteEnable(void)
{
    CSEE=0;
    writeSPI2(SEE_WEN);
    CSEE=1;
}

void iWriteNVM(int address,int data)
{
    //int lsb,msb;
    while(ReadSR()&0X03);
    WriteEnable();
    CSEE=0;
    writeSPI2(SEE_WRITE);
    writeSPI2(address>>8);
    writeSPI2(address&0xfe);
    writeSPI2(data>>8);
    writeSPI2(data&0xff);
    CSEE=1;
}

主程序:

/* 
 * File:   newmain.c
 * Author: Administrator
 *
 * Created on May 29, 2024, 3:29 PM
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <string.h>
#include "C256.H"

#pragma config POSCMOD= XT
#pragma config OSCIOFNC= OFF
#pragma config FCKSM= CSDCMD
#pragma config FNOSC= FRCDIV
#pragma config IESO= ON
#pragma config WDTPS= PS32768
#pragma config FWPSA= PR128
#pragma config WINDIS= OFF
#pragma config FWDTEN= ON
#pragma config ICS= PGx2
#pragma config GWRP= OFF
#pragma config GCP= OFF
#pragma config JTAGEN= OFF
/*
 * 
 */

void main(void)
{
    
    //TRISDbits.TRISD12=0;
    //int data;
    TRISB=0;
    InitNVM();
    
   // flag=0;
    iWriteNVM(0X1234,0x55aa);
    delay(200);
    iWriteNVM(0X0034,0xaa55);
    delay(200);
    iWriteNVM(0X0004,0x5a5a);
    delay(200);
    PORTB=iReadNVM(0X1234);
    
    while(1)
    {
        
    }
}

仿真效果图:

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值