📄 uart.c
字号:
#if (RS232_DEBUG == TRUE)
/*========================================================
子程序名称:
子程序功能:
子程序描述:
========================================================*/
void rs232_debug(void)
{
unsigned char tx_char;
/*
unsigned char tx_text_char[26];
tx_text_char[0] = time_hour;
tx_text_char[1] = time_min;
tx_text_char[2] = time_sec;
_asm
{
mov a,%batt_voltage+1
mov %tx_char,a
}
tx_text_char[3] = tx_char;
_asm
{
mov a,%batt_voltage
mov %tx_char,a
}
tx_text_char[4] = tx_char;
_asm
{
mov a,%motor_current+1
mov %tx_char,a
}
tx_text_char[5] = tx_char;
_asm
{
mov a,%motor_current
mov %tx_char,a
}
tx_text_char[6] = tx_char;
*/
rs232_tx_char(0xd);
rs232_tx_char('T'); //发送时间
rs232_tx_char('I');
rs232_tx_char('M');
rs232_tx_char('E');
rs232_tx_char(':');
rs232_tx_char(ASCII_TAB[(time_hour >> 4)]);
rs232_tx_char(ASCII_TAB[(time_hour & 0xf)]);
rs232_tx_char('-');
rs232_tx_char(ASCII_TAB[(time_min >> 4)]);
rs232_tx_char(ASCII_TAB[(time_min & 0xf)]);
rs232_tx_char('-');
rs232_tx_char(ASCII_TAB[(time_sec >> 4)]);
rs232_tx_char(ASCII_TAB[(time_sec & 0xf)]);
rs232_tx_char(0xd);
rs232_tx_char('V'); //发送电压
rs232_tx_char('O');
rs232_tx_char('L');
rs232_tx_char(':');
_asm
{
mov a,%batt_voltage+1
mov %tx_char,a
}
rs232_tx_char(ASCII_TAB[(tx_char >> 4)]);
rs232_tx_char(ASCII_TAB[(tx_char & 0xf)]);
_asm
{
mov a,%batt_voltage
mov %tx_char,a
}
rs232_tx_char(ASCII_TAB[(tx_char >> 4)]);
rs232_tx_char(ASCII_TAB[(tx_char & 0xf)]);
rs232_tx_char(0xd);
rs232_tx_char('C'); //发送电流
rs232_tx_char('U');
rs232_tx_char('R');
rs232_tx_char(':');
_asm
{
mov a,%motor_current+1
mov %tx_char,a
}
rs232_tx_char(ASCII_TAB[(tx_char >> 4)]);
rs232_tx_char(ASCII_TAB[(tx_char & 0xf)]);
_asm
{
mov a,%motor_current
mov %tx_char,a
}
rs232_tx_char(ASCII_TAB[(tx_char >> 4)]);
rs232_tx_char(ASCII_TAB[(tx_char & 0xf)]);
rs232_tx_char(0xd);
rs232_tx_char('T'); //发送温度
rs232_tx_char('M');
rs232_tx_char('P');
rs232_tx_char(':');
_asm
{
mov a,%batt_temperature+1
mov %tx_char,a
}
rs232_tx_char(ASCII_TAB[(tx_char >> 4)]);
rs232_tx_char(ASCII_TAB[(tx_char & 0xf)]);
_asm
{
mov a,%batt_temperature
mov %tx_char,a
}
rs232_tx_char(ASCII_TAB[(tx_char >> 4)]);
rs232_tx_char(ASCII_TAB[(tx_char & 0xf)]);
rs232_tx_char(0xd);
}
/*========================================================
子程序名称:
子程序功能:
子程序描述:
========================================================*/
void rs232_tx_char(unsigned char txd_char)
{
DISI();
uart_tx_52us_0(); //start bit
if ((txd_char & 0x1) == 0) //D0
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x2) == 0) //D1
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x4) == 0) //D2
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x8) == 0) //D3
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x10) == 0) //D4
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x20) == 0) //D5
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x40) == 0) //D6
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
if ((txd_char & 0x80) == 0) //D7
{
uart_tx_52us_0();
}
else
{
uart_tx_52us_1();
}
uart_tx_52us_1(); //stop bit
ENI();
}
/*========================================================
子程序名称:
子程序功能:
子程序描述:
========================================================*/
void uart_tx_52us_0(void)
{
unsigned char temp;
_asm
{
bc 3,7
bc 3,6
bc 9,2 //rs232_txd_p
mov a,@18
mov %temp,a
uart_tx_52us_0_loop:
djz %temp
jmp uart_tx_52us_0_loop
}
}
/*========================================================
子程序名称:
子程序功能:
子程序描述:
========================================================*/
void uart_tx_52us_1(void)
{
unsigned char temp;
_asm
{
bc 3,7
bc 3,6
bs 9,2 //rs232_txd_p
mov a,@18
mov %temp,a
uart_tx_52us_1_loop:
djz %temp
jmp uart_tx_52us_1_loop
}
}
//========================================================
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -