• slider image 514
  • slider image 516
  • slider image 517
  • slider image 518
  • slider image 519
:::


Browsing this Thread:   1 Anonymous Users






Re: 求助pic30f eeprom读写
#2
版主
版主


查看用戶資訊
抱歉沒有辦法幫你一一除錯,底下的連結有 dsPIC30F4011 EEPROM 存取的範例程式,可以參考一下。

http://www.microchip.com.tw/modules/w ... glefile.php?cid=4&lid=229

發表於: 2009/3/19 13:58
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


求助pic30f eeprom读写
#1
新會員
新會員


查看用戶資訊
首先写ee、然后读eeprom,将读出的结果进行判断,用两只led表示读出的数据不同
#include<p30f4011.h>
#include<math.h>
int failmemory[40];

int a,b;//EE读写地址
int *eew_data,*eer_data;//EE读,写指针

int medium;//中转寄存器

int led;


void InitializeSys()//程序初始化
{
INTCON1 = 0x0000; //关中断
INTCON2 = 0x0000;
IEC0 = 0x0000; //IECx中断禁止
IEC1 = 0x0000;
IEC2 = 0x0000;

TRISEbits.TRISE0=0;
TRISEbits.TRISE1=0;
TRISEbits.TRISE2=0;
TRISEbits.TRISE3=0;
TRISEbits.TRISE4=0;
TRISEbits.TRISE5=0;
TRISEbits.TRISE8=0;
TRISBbits.TRISB3=0;
TRISBbits.TRISB4=0;
TRISBbits.TRISB5=0;//模拟输入出端口

}

//*****************擦除FLASH EEPROM的一个字子程序***************************
void ex_write()
{
NVMCON=0x4044;//WR,REN,WRERR,xxxxx,PROGOP<7:0>
// 0, 1, 0,00000, 44
//写(编程或擦除)控制位'1写',
//写(擦除或编程)使能位
//闪存错误标志位
//未用,用户代码应该在这些单元中写入0
//编程操作命令字节位
//擦除操作:
//0x41 = 从程序闪存中的一个板擦除1 行(32 个指令字)
//0x44 = 从数据闪存擦除1 个数据字
//0x45 = 从数据闪存擦除1 行(16 个数据字)
//编程操作:
//0x01 = 将1 行(32 指令字)编程入闪存程序存储器
//0x04 = 将1 个数据字编入数据EEPROM
//0x05 = 将1 行(16 个数据字)编程入数据EEPROM
//0x08 = 将1 个数据字编程入器件配置寄存器

IFS0bits.NVMIF=0;//中断标志状态寄存器0,非易失性存储器写完成中断标志状态位,未发生中断请求
IEC0bits.NVMIE=0;//中断允许控制寄存器0,非易失性存储器写完成中断允许位,不允许中断请求
NVMKEY=0x55;//防止EEPROM的误写/误擦除,
NVMKEY=0xaa;
NVMCONbits.WR=1;//控制开始eeprom写,只能由硬件清‘0’
__asm__( "NOP");//插入两个指令周期的等待时间,单片机将读取指定单元内容,并且放入EEDATA中
__asm__( "NOP");
while (IFS0bits.NVMIF==0){;}//在写操作完成时,IFS0 寄存器中的中断标志位NVMIF 将置1。它必须用软件清零。
IFS0bits.NVMIF=0;
}
//*****************写EEPROM子程序*************************这里是不是应该写入一个数,在读eeprom拿来判断这个数,是led亮,不是led不亮
void ee_write()
{
__asm__( "MOV 0x0850,W1 " );//指针指向的地址,a的地址
__asm__( "TBLWTL W1,[W0]");

NVMCON=0x4004;
IFS0bits.NVMIF=0;
IEC0bits.NVMIE=0;
NVMKEY=0x55;
NVMKEY=0xaa;
NVMCONbits.WR=1;
__asm__( "NOP");
__asm__( "NOP");
while (IFS0bits.NVMIF==0){;}
IFS0bits.NVMIF=0;
}

//*****************读EEPROM子程序**************************
void ee_read()
{
__asm__( "MOV #tblpage(0x7ffc02),W0" );
__asm__( "MOV W0,TBLPAG" );
__asm__( "MOV #tbloffset(0x7ffc02),W0");
__asm__( "TBLRDL [W0], W4 " );
__asm__( "MOV W4,0x0852");
led=*eer_data;
}
//*********************延时******************************
void delay_1ms(int delay)// 1ms delay
{
unsigned int delay1, delay2;
for(delay2=0;delay2<=delay;delay2++)
{for(delay1=0;delay1<=10000;delay1++) ;}
}
//**************主程序**************************
int main(void)
{
InitializeSys(); //系统初始化
eew_data=&a; //指针指向
eer_data=&b;



*eew_data=1;
__asm__( "MOV #tblpage(0x7ffc02),W0" );
__asm__( "MOV W0,NVMADRU" );
__asm__( "MOV #tbloffset(0x7ffc02),W0");
__asm__( "MOV W0,NVMADR" );
ex_write();

__asm__( "MOV #tblpage(0x7ffc02),W0" );
__asm__( "MOV W0,TBLPAG" );
__asm__( "MOV #tbloffset(0x7ffc02),W0" );
ee_write();

delay_1ms(100);

ee_read();

if(led==1)
{
LATEbits.LATE0=1;
LATEbits.LATE1=0;//亮
}
else if(led==2)
{
LATEbits.LATE0=0;
LATEbits.LATE1=1;//亮
}
}
大家帮我看看 为什么实现不了

發表於: 2009/3/13 11:16
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------