void UART1_Isr() interrupt 4 { uint8 res; static uint8 dwon_count; if(UART1_GET_TX_FLAG) { UART1_CLEAR_TX_FLAG; busy[1] = 0; } if(UART1_GET_RX_FLAG) { UART1_CLEAR_RX_FLAG; res = SBUF; //ウフミヤカッマツヤリ if(res == 0x7F) { if(dwon_count++ > 20) IAP_CONTR = 0x60; } else { dwon_count = 0; } } }
时间: 2023-12-06 17:43:48 浏览: 172
这段代码是一个UART1的中断服务函数,当UART1发送或接收到数据时,会触发中断,执行该函数。
函数中有一个变量dwon_count,用于记录连续接收到0x7F字符的次数,当连续接收到20次以上时,会执行IAP_CONTR = 0x60,即进入ISP模式,用于升级程序。这是一种防止程序升级失败的机制。
另外,当UART1发送完成时,busy[1]会被置为0,表示UART1可以继续发送数据。
阅读全文