|
STC 單片機(jī)串口收發(fā)試驗(yàn)程序
單片機(jī)源程序如下:
- /*********************************************************************************************
- 程序名: UART串口查尋方式程序?qū)嵗?br />
- 編寫(xiě)人: 杜洋
- 硬件支持: STC12C2052AD 外部12MHZ晶振
- 接口說(shuō)明: 連接串口ISP下載線
- 修改日志:
- NO.1-
- /*********************************************************************************************
- 說(shuō)明:
- 用Windows系統(tǒng)中的“超級(jí)終端”軟件,將串口端設(shè)置 [ 4800,8,無(wú),1,無(wú) ]
- 或采用STC-ISP軟件中的串口助手功能,將串口端設(shè)置 [ 4800,8,無(wú),1,無(wú) ]
- 向串口發(fā)送數(shù)據(jù),單片機(jī)將數(shù)據(jù)發(fā)還給PC端并顯示。
- /*********************************************************************************************/
- #include <REG51.h> //51頭文件
- /*********************************************************************************************
- 函數(shù)名:UART串口初始化函數(shù)
- 調(diào) 用:UART_init();
- 參 數(shù):無(wú)
- 返回值:無(wú)
- 結(jié) 果:?jiǎn)?dòng)UART串口接收中斷,允許串口接收,啟動(dòng)T/C1產(chǎn)生波特率(占用)
- 備 注:振蕩晶體為12MHz,PC串口端設(shè)置 [ 4800,8,無(wú),1,無(wú) ]
- /**********************************************************************************************/
- void UART_init (void){
- //EA = 1; //允許總中斷(如不使用中斷,可用//屏蔽)
- //ES = 1; //允許UART串口的中斷
- TMOD = 0x20; //定時(shí)器T/C1工作方式2
- SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時(shí)禁止串口接收)
- TH1 = 0xF3; //定時(shí)器初值高8位設(shè)置
- TL1 = 0xF3; //定時(shí)器初值低8位設(shè)置
- PCON = 0x80; //波特率倍頻(屏蔽本句波特率為2400)
- TR1 = 1; //定時(shí)器啟動(dòng)
- }
- /**********************************************************************************************/
- /*********************************************************************************************
- 函數(shù)名:主函數(shù)
- 調(diào) 用:無(wú)
- 參 數(shù):無(wú)
- 返回值:無(wú)
- 結(jié) 果:程序開(kāi)始處,無(wú)限循環(huán)
- 備 注:
- /**********************************************************************************************/
- void main (void){
- unsigned char UART_data; //定義串口接收數(shù)據(jù)變量
- UART_init();
- while(1){
- if (RI == 1){ //接收中斷標(biāo)志位為1時(shí)
- UART_data = SBUF; //接收數(shù)據(jù) SBUF 為單片機(jī)的接收發(fā)送緩沖寄存器
- RI = 0; //令接收中斷標(biāo)志位為0(軟件清零)
- SBUF = UART_data; //將接收的數(shù)據(jù)發(fā)送回去(刪除//即生效)
- while(TI == 0); //檢查發(fā)送中斷標(biāo)志位
- TI = 0; //令發(fā)送中斷標(biāo)志位為0(軟件清零)
- }
- }
- }
- /**********************************************************************************************/
復(fù)制代碼
|
評(píng)分
-
查看全部評(píng)分
|