|
|
下面的代碼是自己寫的串口通信收發(fā)程序。從PC發(fā)給單片機16進制的數(shù)據(jù),單片機收到后原樣返回給PC機,程序能夠運行,但單片機返回的數(shù)據(jù)有時候字符不正確(發(fā)送十次大約有一二次返回給PC的數(shù)據(jù)不正確,比如PC機發(fā)出的是7E,經(jīng)過單片機返回的數(shù)據(jù)PC收到后不是7E),請教高手,看看是什么原因。
rs232:;串口中斷處理程序
push dpl; 壓棧保存斷點
push dph;壓棧保存斷點
jnb ri,rett;判斷是不是串口接收中斷,不是接收中斷就返回
mov a,sbuf;接收上位機發(fā)來的一個字節(jié)
clr ri;清接收中斷
clr ti;清發(fā)送中斷、
acall cc;調(diào)用延時程序,做為字符間隔
mov sbuf,a;將剛才上位機發(fā)來的一個字節(jié)通過串口再發(fā)送到上位機
acall cc;調(diào)用延時程序,做為字符間隔
clr ti;清發(fā)送中斷
clr ri;清接收中斷
ajmp rett;轉(zhuǎn)到中斷返回子程序
|
|