單片機通用模擬串口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,接收數據
// 功能說明: 接收一個字節(jié),與硬件無關,通用函數
//--------------------------------------------------------------------------------------------------------
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
// 功能說明: 接收一個字節(jié),與硬件無關,通用函數
//-----------------------------------------------------------------------------------------
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
// 功能說明:初始化緩沖區(qū),與硬件無關,通用函數
//--------------------------------------------------------------------------------------------------------
void flush_input_buffer( void )
{
qin = 0;
qout = 0;
}
//-----------------------------------------------------------------------------------------
// 函數名稱: kbhit
// 功能說明: 判斷接收指針與發(fā)送指針是否相等,與硬件無關,通用函數
//-----------------------------------------------------------------------------------------
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;
}
;************************************************************
評論