51單片機串口的使用有兩種方法,一個是查詢法,還有就是中斷法,查詢法相對簡單就是不斷查詢是否有數(shù)據(jù),而中斷就是利用串口中斷interrupt 4,這里給出中斷法,大家參考!
#include
unsigned char a,flag;
void main()
{
TMOD=0X20;//設置定時器1為方式2
TH1=0XFD;// 裝入初值(由軟件計算一下)
TL1=0XFD;
TR1=1;//啟動定時器1
SM0=0;//設置為方式1
SM1=1;
REN=1;//允許接受
EA=1;//打開總中斷開關
ES=1;//打開串口中斷開關
while(1)
{
if(flag==1)
{
flag=0;//將標志位置0
SBUF=a;
while (TI==0);
TI=0;
ES=1;//發(fā)送數(shù)據(jù)時關閉串口中斷
}
}
}
void serial()interrupt 4 //串口中斷用于接收數(shù)據(jù)
{
RI=0; //軟件使RI置0
P1=SBUF;//數(shù)據(jù)送入緩沖區(qū)(SBUF)哪個口需要哪個口在這里取數(shù)據(jù)
a=SBUF;//將緩沖區(qū)的數(shù)據(jù)保存到a中以便以后使用
flag=1;//標志位
ES=0;//發(fā)送數(shù)據(jù)時關閉串口中斷
}