增加不断电下载功能
This commit is contained in:
34
src/main.c
34
src/main.c
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user