微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于C8051F的AD UART0 KEY FLASH TIME3程序

基于C8051F的AD UART0 KEY FLASH TIME3程序

时间:12-01 来源:互联网 点击:

0x02; // 上电复位VDD监视器复位标志

FLSCL=0X80; // 使能FLASH单稳态定时器,FLASH读时间SYSCLK<=25MHz

FLKEY = 0xA5; // 写入关键字

FLKEY = 0xF1; // 写入关键字

PSCTL |= 0x03; //允许擦,允许写

CPT_x[0] = 0;

PSCTL &= ~0x03; //禁止写,禁止擦

//EA = 1;

}

void Flash_Program_CTP() //flash写入充电时间时间和功率

{

uchar j;

EA =0;

//Flash_Erase_CTP();

VDM0CN = 0x80; //使能VDD监视器

RSTSRC = 0x02; //上电复位/VDD监视器复位标志

FLSCL=0X80; //使能FLASH单稳态定时器,FLASH读时间SYSCLK<=25MHz

PSCTL |= 0x01; //write enable

for(j =0;j<20;j++)

{

FLKEY = 0xa5;

FLKEY = 0xf1;

CPT_x[j] = Between[j];

//delayms(30);

}

PSCTL &= ~0x01; //禁止写

EA = 1;

}

//***********************************

void Flash_Erase_FTP() //flash擦除放电时间和功率

{

EA =0;

VDM0CN = 0x80; // 使能VDD监视器

RSTSRC = 0x02; // 上电复位VDD监视器复位标志

FLSCL=0X80; // 使能FLASH单稳态定时器,FLASH读时间SYSCLK<=25MHz

FLKEY = 0xA5; // 写入关键字

FLKEY = 0xF1; // 写入关键字

PSCTL |= 0x03; //允许擦,允许写

FPT_x[0] = 0;

PSCTL &= ~0x03; //禁止写,禁止擦

//EA = 1;

}

void Flash_Program_FTP() //flash写入放电时间和功率

{

uchar j;

//Flash_Erase_FTP();

EA = 0;

VDM0CN = 0x80; //使能VDD监视器

RSTSRC = 0x02; //上电复位/VDD监视器复位标志

FLSCL=0X80; //使能FLASH单稳态定时器,FLASH读时间SYSCLK<=25MHz

PSCTL|=0x01; //write enable

for(j =0;j<20;j++)

{

FLKEY = 0xa5;

FLKEY = 0xf1;

FPT_x[j] = Between[j];

}

PSCTL &= ~0x01; //禁止写

EA = 1;

}

/*void Flash_Read()

{

static uchar j;

for(j=0;j<3;j++)

{

timer[j]=Ftime_c[j];

}

}*/

//**********************************************

//按键处理程序

//**********************************************

void key_scan()

{

static uchar i,k;

uchar Mkey=P4;

if(BGset<2)

{

if((Mkey&0xFE)!= 0XFE) //有键按下先开启背光

{

delayms(200);

if((Mkey&0xFE)!= 0XFE)

{

BGset++;

if(BGset>1)

{

BGset = 2;

}

}

}

}

if(BGset ==2 )

{

if(!(Mkey&0x80)) //SW1按下吗?ALM

{

delayms(200); //消抖

if(!(Mkey&0x80)) //再判断

{

BGset =2; //开背光

if(k<1) {Page = 0;} //页面0:显示故障状态}

k++;

if(k>1) {k =0;Page = 1; } //再按后退出

set = 0;

}

}

if(!set)

{

if(!(Mkey&0x40)) //SW2按下吗?下翻

{

delayms(200);

if(!(Mkey&0x40))

{

if(Page !=0)

{

Page++;

BGset =2;

if(Page>6) //如果超过5界面回到1画面

{

Page = 1;

}

}

}

}

if(!(Mkey&0x20)) //SW3按下吗?上翻

{

delayms(200);

if(!(Mkey&0x20))

{

if(Page !=0)

{

Page--;

BGset =2;

if(Page<1) //小于1画面后不显示0画面,显示6画面

{

Page = 6;

}

}

}

}

}

if(Page ==6) //修改时间界面

{

if(!(Mkey&0x04)) //SW6按下吗?设定SET只在6画面设置时间

{

delayms(200);

if(!(Mkey&0x04))

{

BGset =2;

set = 1; //如果按下SET键表示开始设置时间,置设置标志位;

}

}

if(set)

{

if(!(Mkey&0x10)) //SW4按下吗?左移<- 只在6画面修改时间

{

delayms(200);

if(!(Mkey&0x10))

{

BGset =2;

direction--;

if(direction < 1)

{

direction = 6;

}

}

}

if(!(Mkey&0x08)) //SW5按下吗?右移->只在6画面修改时间

{

delayms(200);

if(!(Mkey&0x08))

{

BGset =2;

direction++;

if(direction > 6)

{

direction = 1;

}

}

}

switch(direction)

{

case 1:

{

if(!(P4&0x40)) //SW2按下吗?下翻

{

delayms(200);

if(!(P4&0x40))

{

BGset =2;

keybuffer[0]++;

if(keybuffer[0]>99) //年设置,不超过100年

{

keybuffer[0] = 11;

}

}

}

if(!(P4&0x20)) //SW3按下吗?上翻

{

delayms(200);

if(!(P4&0x20))

{

BGset =2;

keybuffer[0]--;

if(keybuffer[0]<11) //小于1画面后不显示0画面,显示6画面

{

keybuf

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top