⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.c

📁 对C8051F310 FLASH的在线读写
💻 C
字号:
#include<c8051f310.h>

void PORT_Init(void)
{
  P0MDOUT=0X10;//TXD推挽输出,RXD漏开输入
  XBR0=0X01;//UART连到端口引脚
  //XBR1=0X40;//弱上拉,交叉开关开
  XBR1=0XC0;//弱上拉禁止,效果同上,功耗可能不同
}

void UART_Init(void)
{
  SCON0=0X00;//模式1,8位UART
  TMOD=0X20;//定时器1工作在方式2
  //CKCON=0X00;//定时器时钟为系统时钟1/12
  TH1=0X96;
  TL1=0X96;//9600
  TR1=1;//开定时器1
  //ES0=0;//禁止串口中断
}


void delay(unsigned int n)
{
  unsigned int i;
  for(i=0;i<n;i++);
  for(i=0;i<n;i++);  
  for(i=0;i<n;i++);
  for(i=0;i<n;i++);
}

main()
{ 
  
  unsigned char xdata *pwrite;//定义写字节指针
  unsigned char code *temp;//定义写中间指针
   unsigned char code *pread;//定义读字节指针
  bit EA_SAVE=EA;
  unsigned int i=0;
  unsigned char  a[5];//定义串口发送数组
  unsigned char code test_string[]="WHTY ";//定义要写入的代码
  
/*unsigned char byte=c;
  unsigned char code test_string;
  test_string=byte;*/
  
   PORT_Init();
   UART_Init();
   OSCICN=0X83;
  VDM0CN=0X80;
  RSTSRC|=0X02;
  PCA0MD&=~0X40;
  EA=0;
  pwrite=(unsigned char xdata*)0x1400;//初始化写字节指针
  pread=(unsigned char code*)0x13ff;//初始化读字节指针
  PSCTL=0x03;
  FLKEY=0XA5;
  FLKEY=0XF1;
  *pwrite=0;//擦除页
  PSCTL=0X00;
  //EA=EA_SAVE;
  temp=(unsigned char code *)test_string;//初始化写中间指针
  //EA=0;
 // pwrite=0x1400;
  //pread=0x13fd;
  PSCTL=0X01;
  while(*temp!='\0')
  {
    FLKEY=0XA5;
    FLKEY=0XF1;
    *pwrite=*temp;
     a[i]=*pread;
      i++;
    temp++;
    pwrite++;
    pread++;
    
   }
    FLKEY=0XA5;
    FLKEY=0XF1;
    *pwrite='\0';
    PSCTL=0X00;
    EA=EA_SAVE;
    while(1)
    { 
      for(i=0;i<5;i++)
      {
       //a[i]=test_string[i];
       TI0=0;
      SBUF0=a[i];
       while(TI0==1);
      //TI0=0;
      delay(60000);
      //delay(6000); 
      //delay(6000);
   
      //TI0=0;//写SBUF前必须紧跟TI0=0
      }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -