|
#include<reg52.h>
typedef unsigned char num;
void UsartInit() //初始化串口
{
TMOD=0X20; //確定T1定時器計(jì)數(shù)器工作方式——工作方式1
SCON=0X50; //確定串口工作方式——工作方式1 波特率=(2^SMOD/32)*T1溢出率
PCON=0X80; //SMOD 倍頻選擇 SMOD=0 波特率正常,SMOD=1波特率加倍
TH1=0XF3; //根據(jù)已知波特率、晶振頻率、串口工作方式計(jì)算初值
TL1=0XF3;
EA=1; //開總中斷
ES=1; //開串口中斷
TR1=1; //開啟計(jì)數(shù)模式
}
void main()
{
UsartInit();//初始化串口
while(1);//等待中斷
}
void serialopen() interrupt 4 //中斷函數(shù),選擇中斷源 4
{
num receivedata; //receivedata 接受和發(fā)送的數(shù)據(jù)
receivedata=SBUF; //接受數(shù)據(jù)寫入SBUF
RI=0; //必須軟件清零RI。硬件置1,CPU響應(yīng)中斷,下一幀數(shù)據(jù)寫入SBUF。
SBUF=receivedata; //發(fā)送數(shù)據(jù)到SBUF
while(!TI); //!TI不是0既是1,說明數(shù)據(jù)還沒發(fā)送完。TI不是1,便是0,跳出while函數(shù),說明數(shù)據(jù)發(fā)送完畢。
TI=0; //必須軟件清零
}
|
評分
-
查看全部評分
|