下面部分從TXT拷出,拷到網(wǎng)頁,代碼部分缺省了很多空格,比較凌亂,請諒解!
//目標系統(tǒng): 基于AVR單片機
//應(yīng)用軟件: ICC AVR
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
實驗內(nèi)容:
USART自發(fā)自收,使用PB口的LED指示接收到的數(shù)據(jù),觀察是否與發(fā)送的數(shù)據(jù)一致。
----------------------------------------------------------------------
硬件連接:
將MCU.RXD與MCU.TXD使用短路帽短接,將PB口的LED指示燈使能開關(guān)切換到"ON"狀態(tài)。
----------------------------------------------------------------------
注意事項:
(1)若有加載庫程序,請將光盤根目錄下的“庫程序”下的“ICC_H”文件夾拷到D盤
(2)請詳細閱讀:光盤根目錄下的“產(chǎn)品資料開發(fā)板實驗板SMK系列SMK1632說明資料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#include
#include "D:ICC_HCmmICC.H"
#define DISP_PORT PORTB
#define DISP_DDR DDRB
/*--------------------------------------------------------------------
程序名稱:UART初始化程序
程序功能:初始化UART為:8位,9.6K,接收中斷
注意事項:基于7.3728M晶振
提示說明:晶振不要買到假的,要不然,調(diào)不出來還以為電腦有鬼!
輸 入:
返 回:
--------------------------------------------------------------------*/
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00; //U2X = 0,不加倍數(shù)率
UCSRC = 0x86; //8位
UBRRL = 47; //set baud rate lo,波特率為9.6K
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x98; //接收中斷允許,接收緩沖自動清空,接收允許
}
/*--------------------------------------------------------------------
程序名稱:UART接收中斷服務(wù)程序
程序功能:
注意事項:
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{
DISP_PORT = UDR;//顯示接收到的數(shù)據(jù)
//用串口調(diào)試助手發(fā)送數(shù)據(jù),則單片機端顯示數(shù)據(jù)對應(yīng)的ASCII值,如:接收到"1",顯示0X31
//delay50ms(1);
}
/*--------------------------------------------------------------------
程序名稱:
程序功能:
注意事項:
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
void mcu_init(void)
{
CLI();
uart0_init();
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00; //timer interrupt sources
SEI(); //re-enable interrupts
}
/*--------------------------------------------------------------------
程序名稱:
程序功能:
注意事項:沒什么好說的。。。
提示說明:
輸 入:
返 回:
--------------------------------------------------------------------*/
void main()
{
uint8 counter=0;
mcu_init();
DISP_DDR=0xFF;
while(1)
{
UDR=counter++; //發(fā)送數(shù)據(jù),數(shù)據(jù)為變量counter
while(!(UCSRA&0x40)); //等待發(fā)送結(jié)束
UCSRA|=0x40; //清除發(fā)送結(jié)束標志位
delay50ms(4);
}
}
評論