📄 main.c
字号:
#include<assert.h>
#include<string.h>
#define SIZE 100
sbit LED = P2^6; //"LED调试引脚,用于测试!"
void Test_LED(void)
{
uchar LED_Num =0;
for( LED_Num =0; LED_Num < 6;LED_Num++)
{
LED = 1;
delayms(50);
LED = 0;
delayms(50);
}
LED = 1;
}
/******************************************************************************
** 函数 名 : WriteBytesToFlash
** 描 述: 写C8051F020/1的128字节区域;
** 入口参数: Buff :写数据存放的地址;
Lenth:要写数据的长度;最大128;
** 出口参数: 返回 1;
*******************************************************************************/
unsigned char WriteBytesToFlash(const unsigned char *Buff, unsigned char Lenth)
{
unsigned char xdata *PWrite = (void *)0;
unsigned char Local_Lenth = 0;
assert((Buff != NULL) && (Lenth < 128));
FLSCL = 0x81;//"允许FLASH写操作"
PWrite =0;
PSCTL = 0x07;//"允许FLASH擦除操作和访问128字节区域"
*PWrite =0; //"启动擦除操作"
PSCTL = 0x05; //"禁止擦除操作"
Local_Lenth = Lenth;
while( Local_Lenth-- >0 )
{
*PWrite++ = *Buff++;
}
PSCTL = 0;
FLSCL = 0x80;
return 1;
}
/******************************************************************************
** 函数 名 : ReadBytesFromFlash
** 描 述: 读C8051F020/1的128字节区域;
** 入口参数: Buff :读数据存放的地址;
Lenth:要读数据的长度;最大128;
** 出口参数: 返回 1
*******************************************************************************/
unsigned char ReadBytesFromFlash(volatile unsigned char *Buff, unsigned char Lenth)
{
unsigned char code *PRead = (void *)0;
unsigned char Local_Lenth =0;
assert((Buff != NULL) && (Lenth < 128));
PSCTL = 0x04; //"允许访问128字节区域"
Local_Lenth = Lenth;
PRead = 0;
while( Local_Lenth-- >0 )
{
*Buff++ = *PRead++;
}
return 1;
}
/******************************************************************************
** 函数 名 : 主函数
** 描 述:
** 入口参数: 无
** 出口参数: 无
*******************************************************************************/
void main(void)
{
uchar i = 0;
xdata uchar buff[SIZE]={0};
xdata uchar Rbuff[SIZE];
EA=0;
WDTCN = 0xde; //"禁止看门狗"
WDTCN = 0xad;
Init_Mcu() ;
Test_LED();
for( i = 0; i < SIZE; i++)
{
buff[i]=i;
}
WriteBytesToFlash(buff,SIZE);
ReadBytesFromFlash(Rbuff,SIZE);
if(strcmp(Rbuff,buff) == 0 ) //"比较写入和读出的数据;若相等则执行 Test_LED()"
{
Test_LED();
Test_LED();
}
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -