📄 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 + -