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