单片机通用模拟串口C程序
//-------------------------------------------------------------------------------------------------------
// 函数名称: init_uart
// 功能说明: 初始化异步串口,与硬件无关,通用函数
//--------------------------------------------------------------------------------------------------------
void init_uart( void )
{
flag_tx_ready = FALSE;
flag_rx_ready = FALSE;
flag_rx_waiting_for_stop_bit = FALSE;
flag_rx_off = FALSE;
rx_num_of_bits = 10;
tx_num_of_bits = 10;
set_tx_pin_low();
timer_set();
set_timer_interrupt(); // 使能计时器中断
}
//-------------------------------------------------------------------------------------------------------
// 函数名称: get_char
// 输入参数: 无
// 输出参数: ch,接收数据
// 功能说明: 接收一个字节,与硬件无关,通用函数
//--------------------------------------------------------------------------------------------------------
char get_char( void )
{
char ch;
do
{
while ( qout==qin )
{
idle();
}
ch = inbuf[qout] 0xFF;
if ( ++qout>=IN_BUF_SIZE )
{
qout = 0;
}
}
while ( ch==0x0A || ch==0xC2 );
return( ch );
}
//-----------------------------------------------------------------------------------------
// 函数名称: put_char
// 功能说明: 接收一个字节,与硬件无关,通用函数
//-----------------------------------------------------------------------------------------
void put_char( char ch )
{
while ( flag_tx_ready );
user_tx_buffer = ch;
// 唤醒串口
timer_tx_ctr = 3;
bits_left_in_tx = tx_num_of_bits;
internal_tx_buffer = (user_tx_buffer1) | 0x200;
flag_tx_ready = TRUE;
}
//-------------------------------------------------------------------------------------------------------
// 函数名称: flush_input_buffer
// 功能说明:初始化缓冲区,与硬件无关,通用函数
//--------------------------------------------------------------------------------------------------------
void flush_input_buffer( void )
{
qin = 0;
qout = 0;
}
//-----------------------------------------------------------------------------------------
// 函数名称: kbhit
// 功能说明: 判断接收指针与发送指针是否相等,与硬件无关,通用函数
//-----------------------------------------------------------------------------------------
char kbhit( void )
{
return( qin!=qout );
}
//-----------------------------------------------------------------------------------------
// 函数名称: turn_rx_on
// 功能说明: 开始接收,与硬件无关,通用函数
//-----------------------------------------------------------------------------------------
void turn_rx_on( void )
{
flag_rx_off = FALSE;
}
//-----------------------------------------------------------------------------------------
// 函数名称: turn_rx_off
// 功能说明: 停止接收,与硬件无关,通用函数
//-----------------------------------------------------------------------------------------
void turn_rx_off( void )
{
flag_rx_off = TRUE;
}
;************************************************************
评论