|
在使用串口調(diào)試軟件時(shí),發(fā)送數(shù)據(jù)后會(huì)不斷重復(fù)數(shù)據(jù)的最后一個(gè)字符,如下圖。波特率一致,為4800bps,程序如下,我檢查了很多次也不知道什么原因,故發(fā)帖專(zhuān)心請(qǐng)教。
程序:
#include<reg51.h>
void comsetting(); //串口設(shè)置程序
void main()
{
comsetting();
while(1)
{
}
}
void comsetting()
{
SCON=0x50; //串口工作方式1
TMOD=0x20; //定時(shí)器工作方式2
PCON=0x80; //波特率加倍
TH1=0xf4; //定時(shí)器設(shè)置初值,波特率為4800(已加倍)
TL1=0xf4;
ES=1; //允許串行中斷
EA=1; //打開(kāi)總中斷
TR1=1; //打開(kāi)定時(shí)器1
}
void comint() interrupt 4 //中斷服務(wù)程序
{
unsigned char rdata; //定義變量為接收的數(shù)據(jù)receive data
rdata=SBUF; //把接收緩沖器接收的數(shù)據(jù)賦給變量
RI=0; //接收中斷標(biāo)志,接收結(jié)束,硬件自動(dòng)置1,用軟件復(fù)位
SBUF=rdata; //把變量的數(shù)據(jù)賦給發(fā)送緩沖器
while(!TI) //等待數(shù)據(jù)發(fā)送完成
TI=0; //發(fā)送結(jié)束,軟件復(fù)位
}
調(diào)試圖片:
1.png (102.18 KB, 下載次數(shù): 80)
下載附件
2017-4-15 11:42 上傳
|
|