用單片機串行口,實現本機串行接口的自通訊。連接起本機的TXD和RXD。將本機數據通過異步方式從本機的TXD引腳發送,再從本機的RXD引腳接收。單片機從P2口讀入的按鍵數值并向TXD引腳上發送,之后從RXD引腳接收該數據,并通過P1口顯示在 LED發光二極管上。
#include <reg52.h> void system_init(); void main() { system_init();//系統初始化 SBUF=P2;//首次讀入P2口的數據并發送到串行口 while(1); }
/*系統初始化函數*/ void system_init() { SCON = 0x50;//REN=1允許串行接受狀態,串口工作模式1 (全雙工方式) 、數據位8、停止位1、校驗位無。 PCON = 0x80;//SMOD=1,波特率加倍 TMOD = 0x20;//定時器T1設置為工作方式2(自動裝載初值的8位定時器)0010,T0任意(不使用T0)0000 TH1 = 0xf9;//設置波特率9600。T1=256-2*12*10^6/(384*2400)=249.489583=0xf9(四舍五入) TL1 = 0xf9; TR1 =1; ES =1; EA =1; } /*串行口中斷服務程序*/ void serial_interrupt() interrupt 4 { if(RI) //串行口如果接收到數據,則清除中斷標志,并將數據顯示到LED { RI=0; P1=SBUF; } if(TI) //串行口如果發送完一次數據,則清除中斷標志,并傳送下一組按鍵數據 { TI=0; SBUF=P2; } }
匯編語言版見附件
|