增加不断电下载功能

This commit is contained in:
2024-07-15 00:48:18 +08:00
parent 859888d7a2
commit 09dbe975ac
4 changed files with 71 additions and 5 deletions

View File

@@ -17,6 +17,35 @@
int HH=0, MM=0, SS=0;
int send_tmp = 0;
__sfr __at (0xE7) ISP_CONTR;
#define RESET_PASSWORD_LENGTH 6
char __xdata reset_password[RESET_PASSWORD_LENGTH] = "RESET";
char __xdata receice_password[RESET_PASSWORD_LENGTH] = {0};
/*******************************************************************************
* 函 数 名 : auto_reset
* 函数功能 : 接受到重启命令RESET!后软复位MCU
* 输 入 : 无
* 输 出 : 0:检测到重启命令1:未检测到重启命令
*******************************************************************************/
u8 auto_reset(u8 rec_data)
{
for(u8 i=0;i<RESET_PASSWORD_LENGTH-1;i++)
{
receice_password[i] = receice_password[i+1];
}
receice_password[RESET_PASSWORD_LENGTH-1] = rec_data;
for(u8 i=0;i<RESET_PASSWORD_LENGTH-1;i++)
{
if(receice_password[i]!= reset_password[i])
{
return 1;
}
}
ISP_CONTR = 0x60; //软件复位并切换到系统ISP监控程序区开始执行程序
return 0;
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
@@ -57,7 +86,11 @@ void main(void)
if(send_tmp == 1) {
send_tmp = 0;
printf("%02d:%02d:%02d temp = %.1f\r\n", HH, MM, SS, temp_value/10.0);
// for(u8 i=0;i<RESET_PASSWORD_LENGTH;i++) {
// printf("i=%0d, %C[%x] = %C[%x] is %0d\r\n", i, reset_password[i], reset_password[i], receice_password[i], receice_password[i],receice_password[i]!= reset_password[i]);
// }
}
}
}
@@ -72,6 +105,7 @@ void uart(void) __interrupt (4) //串口通信中断函数
SBUF=rec_data; //将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志?
auto_reset(rec_data);
}
if(TI)
{