📄 uart.c
字号:
#ifdef PH_932
#include <reg915.h>
#include "comm.h"
#include "message.h"
#include "uart.h"
char sbuf_value = 0;
char rs232_command[6] = {0,0,0,0,0,0};
char rs232_state = UART_IDLE;
char rs232_cnt = 0;
uchar last_sbuf_value = 0;
bit rs232_flag = 0;
void uart_isr() interrupt 4 using 2
{
if(RI)
{
sbuf_value = SBUF;
RI = 0;
if(rs232_state == UART_IDLE)
{
if(sbuf_value == STX) /*start*/
{
rs232_state = UART_RECEIVE;
}
rs232_cnt = 0;
last_sbuf_value = 0xFF;
}
else if(rs232_state == UART_RECEIVE)
{
if(rs232_cnt >= 6)
{
rs232_state = UART_IDLE;
}
else
{
if(last_sbuf_value == DLE)
{
if(sbuf_value == DLE)
{
rs232_command[rs232_cnt ++] = sbuf_value;
last_sbuf_value = 0xFF;
}
else if(sbuf_value == ETX)
{
rs232_state = UART_RECEIVE_OK;
last_sbuf_value = 0xFF;
rs232_cnt = 0;
}
else
{
rs232_state = UART_IDLE;
}
}
else
{
if(sbuf_value != DLE)
rs232_command[rs232_cnt++] = sbuf_value;
last_sbuf_value = sbuf_value;
}
}
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -