51 串口中斷發(fā)送程序
一般采用查詢發(fā)送(循環(huán)發(fā)送)方式:
unsignedcharSend[10];//發(fā)送量
unsignedchari;//循環(huán)量
for(i=0;i<10;i++)
{
SBUF=Send[i];//發(fā)送
while(TI==0);//等待發(fā)送完成
TI=0;//清標志
}
采用中斷發(fā)送方式:
unsignedcharSend[10];//發(fā)送量
unsignedcharnum;//發(fā)送數(shù)據(jù)量
unsignedchar*p;//發(fā)送用指針
//發(fā)送時:
num=10;//定義發(fā)送數(shù)據(jù)量
p=&Send;//取首地址
SBUF=*p;//發(fā)送第一個數(shù)據(jù),啟動發(fā)送中斷
//中斷代碼:
voidComInt()interrupt4
{
if(RI)RI=0;//接收中斷略;
if(TI)//發(fā)送中斷處理
{
TI=0;//清標志
num--;//計數(shù)減1
p++;//指針加1
if(num>0)SBUF=*p;//數(shù)據(jù)繼續(xù)發(fā)送至全部發(fā)完
}
}
中斷發(fā)送優(yōu)點:省去循環(huán)等待時間,以上面例子為例,9600bps時查詢發(fā)送約占用單片機10ms多,而中斷發(fā)送只占單片機幾十微秒(單片機速度越快,占用時間越少)。
中斷發(fā)送缺點:代碼稍復雜,發(fā)送過程不易控制。
評論