技术支持Microchip产品专区Microchip开发工具 请问PIC18F165J10里面的FLASH怎样存取数据?

1  /  1  页   1 跳转 查看:312

请问PIC18F165J10里面的FLASH怎样存取数据?

请问PIC18F165J10里面的FLASH怎样存取数据?

我以前没用过FLASH,现在想把有些数据储存放在PIC18F65J10里的FLASH上,有哪位用过,请教!请教!
 

回复:请问PIC18F165J10里面的FLASH怎样存取数据?

#include "pic18.h"
#include "pic18fxx22.h"
void delay(unsigned int i);
void com_init();
void Write_Cycle();
void Flash_Erase(unsigned long address);
void Flash_Write(unsigned long address,unsigned char *Data);
unsigned char data[64]=
{0x0E,0xEF,0x30,0xF0,0x0F,0x0E,0x00,0x01,0xFD,0x6F,0x51,0xD8,0x00,0x01,0x04,0x0E,0xFE,0x6F,0x29,0x0E,0xFF,0x6F,0x7D,0xD8,0x5A
,0xD8,0xC8,0x0E,0x00,0x01,0xFE,0x6F,0xFF,0x6B,0x77,0xD8,0x00,0x01,0xFD,0x07,0xFD,0x29,0xD8,0xB4,0x0C,0xEF,0x30,0xF0,0x48,0x0E
,0x7C,0xD8,0x49,0x0E,0x7A,0xD8,0x21,0x0E,0x78,0xD8,0x0D,0x0E,0x76,0xD8};
void main()
{   
unsigned int i,j;
unsigned long addr=0x006000;
com_init();
delay(100);
Flash_Write(addr,&data[0]);
}
void com_init()  //串口初始化
{
  TRISC=TRISC|0X47;              //RC0,RC1,RC2,RC7置1,设置为输入
  TRISC=TRISC&0X47;            //RC3,RC4,RC5,RC6置0,设置为输出
SYNC=0;
BRGH=1;
SPBRG1=16;
SPEN=1;
//GIE=1;
PEIE=1;
// PIR1=0x00;                    //清中断标志
TX1IE=1;
TX9=0;
TXEN=1;

RC1IE=1;
RX9=0;
CREN=1;
}
//void Send_Char(unsigned char data)
//{
//while(!TX1IF);
//TXREG1=data;
//delay(100); 
//}
 
void delay(unsigned int i)
{
while(i--);
}
void Flash_Write(unsigned long address,unsigned char *P)//
{
  unsigned char length;

  Flash_Erase(address);

  for(length=0;length<64;length++)  //写64字节到RAM
  {
    //TABLAT=Data[length];
    TABLAT=*P;
    P++;
    asm("TBLWT*+");
  }

  TBLPTRU=(address>>8)>>8; //要擦除\写入的首地址
  TBLPTRH=address>>8;
  TBLPTRL=address;

  FREE=0;  //只执行写操作
  Write_Cycle();
}
void Flash_Erase(unsigned long address)
{
TBLPTRU=(address>>8)>>8;
TBLPTRH=address>>8;
TBLPTRL=address;
FREE=1;  //1 在下一次WR写周期时,执行擦除操作;0 只执行写操作
Write_Cycle();
}
void  Write_Cycle()
{
EEPGD=1;
CFGS=0;
WREN=1;
CARRY=0;
if(GIE) CARRY=1;
//IPEN=0;  //禁止中断优先级
GIE=0;  //关全局中断

EECON2=0X55;
EECON2=0XAA;

WR=1; //1启动读/写周期;0写周期完成
NOP();
NOP();
while(WR) ;//等待写周期完成
WREN=0;//0禁止向程序存储器或EEPROM写操作

if(CARRY) GIE=1;//IPEN=1,开中断
}
 

回复:请问PIC18F165J10里面的FLASH怎样存取数据?

谢谢!
 
1  /  1  页   1 跳转

版权所有 贝能国际  Burnon国际  Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2009 Comsenz Inc.
Processed in 0 second(s) , 5 queries. 闽ICP备05003850号
返顶部