單片機(jī)通用模擬串口C程序
//-------------------------------------------------------------------------------------------------------
// 函數(shù)名稱: init_uart
// 功能說(shuō)明: 初始化異步串口,與硬件無(wú)關(guān),通用函數(shù)
//--------------------------------------------------------------------------------------------------------
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(); // 使能計(jì)時(shí)器中斷
}
//-------------------------------------------------------------------------------------------------------
// 函數(shù)名稱: get_char
// 輸入?yún)?shù): 無(wú)
// 輸出參數(shù): ch,接收數(shù)據(jù)
// 功能說(shuō)明: 接收一個(gè)字節(jié),與硬件無(wú)關(guān),通用函數(shù)
//--------------------------------------------------------------------------------------------------------
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 );
}
//-----------------------------------------------------------------------------------------
// 函數(shù)名稱: put_char
// 功能說(shuō)明: 接收一個(gè)字節(jié),與硬件無(wú)關(guān),通用函數(shù)
//-----------------------------------------------------------------------------------------
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;
}
//-------------------------------------------------------------------------------------------------------
// 函數(shù)名稱: flush_input_buffer
// 功能說(shuō)明:初始化緩沖區(qū),與硬件無(wú)關(guān),通用函數(shù)
//--------------------------------------------------------------------------------------------------------
void flush_input_buffer( void )
{
qin = 0;
qout = 0;
}
//-----------------------------------------------------------------------------------------
// 函數(shù)名稱: kbhit
// 功能說(shuō)明: 判斷接收指針與發(fā)送指針是否相等,與硬件無(wú)關(guān),通用函數(shù)
//-----------------------------------------------------------------------------------------
char kbhit( void )
{
return( qin!=qout );
}
//-----------------------------------------------------------------------------------------
// 函數(shù)名稱: turn_rx_on
// 功能說(shuō)明: 開(kāi)始接收,與硬件無(wú)關(guān),通用函數(shù)
//-----------------------------------------------------------------------------------------
void turn_rx_on( void )
{
flag_rx_off = FALSE;
}
//-----------------------------------------------------------------------------------------
// 函數(shù)名稱: turn_rx_off
// 功能說(shuō)明: 停止接收,與硬件無(wú)關(guān),通用函數(shù)
//-----------------------------------------------------------------------------------------
void turn_rx_off( void )
{
flag_rx_off = TRUE;
}
;************************************************************
評(píng)論