51微控制器串列埠接收多字元並存入陣列的程式

2021-04-20 08:37:11 字數 1482 閱讀 1926

1樓:匿名使用者

你這串列埠bai接收子程式,只要接du收到第乙個位元組的zhi資料就dao一直在中斷子程式中,然後專等待接收其它數屬據了,

while(!ri); 這就是在等待接收其它資料了,接收完了以後又在中斷子程式連續傳送了。這麼寫程式是有很大弊病的,一旦進入中斷程式,到最後傳送結束,都一直在中斷子程式中,那這個期間微控制器是不能再做其它工作的,也就是不能再執行主程式了。

while(!ri);這就是查詢方式等待接收資料,那又何必寫成中斷程式呢,不如直接寫成查詢程式了,同樣下面的, while(!ti);這也明明是在查詢方式傳送,就不必要寫在中斷程式中了。

既然採用中斷的方式,就是當接收到乙個資料後才響應一次中斷,儲存這個資料,然後就立即從中斷返回,這樣,繼續執行主程式,這樣,接收資料和傳送資料才不影響主程式。

同理,在中斷程式傳送乙個位元組的資料就立即從中斷返回執行主程式,也不影響主程式的執行。

另外,更重要的一點就是while(!ri);,等待接收資料,如果不能收到資料就永遠等待下去,假如通訊線有故障,或者傳送方有問題,不能傳送資料了,那麼將永遠等待下去,這就相當於宕機了,多可怕,寫程式就怕這個事情發生的。

2樓:匿名使用者

每接收到乙個資料就判斷資料的合法性,功能,再存到陣列裡,沒收乙個還要判斷是不是一幀資料什麼的、、、、、

3樓:微控制器的戰鬥機

有qq嗎?發過來,我為你解答

c51微控制器從串列埠接收資料多個位元組的資料的c語言程式,謝謝

4樓:甫濡姬冰心

#include

unsigned

char

code

table

=;unsigned

char

code

table1=;

sbit

rs=p1^2;

sbit

lcden=p1^0;

unsigned

char

flag,m;

void

delay(int

xms)

void

write_com(unsigned

char

com)

void

write_date(unsigned

char

date)

void

init()

write_com(0x80+0x40);

for(num=0;num<5;num++)}void

write_dianya(unsignedchar

add,unsigned

char

date)

void

main()}

}void

ser()

interrupt4

5樓:匿名使用者

只是乙個接收功能嗎?

arm微控制器串列埠通訊接收不到,arm 微控制器串列埠通訊 接收不到

微控制器和arm這兩樣的板子都是你自己的,就從這兩個塊子查起嗎,這樣問別人也不好說是什麼原因,也沒看到你的板子。要搞清幾個問題 1,微控制器與串列埠除錯助手能通訊成功,是雙向的,即微控制器是與電腦通訊吧,電腦能收 發,還是單向的,微控制器只收嗎。2 同樣,串列埠除錯助手與arm也能通訊成功,也是雙向...

求助,微控制器串列埠全雙工,MCS51微控制器什麼是全雙工,半雙工,單工序列通訊

微控制器串列埠實現全雙工,用rs232介面,適合於一對一的,如微控制器與電腦。或用rs422,適合於多機通訊,即通常的主從機結構。微控制器作為從機,串列埠全雙工工作還有點意義,作為主機,暫時我還沒有看到明顯的效果!為此思考中 mcs 51微控制器什麼是全雙工,半雙工,單工序列通訊?單工只有一根資料線...

微控制器串列埠通訊,除錯時發出訊號正常,但是接收不到訊號,有懂程

我也是初學,看不懂傳送函式的這句 while ti 0 ti 0 是不是有點問題?微控制器串列埠通訊,串列埠助手除錯收發都正常,接到一塊就不正常 請問您是怎麼解決的?謝謝 每片微控制器單獨與串列埠助手通訊成功。說明你的2個微控制器串列埠通訊都很正常,但2個微控制器合在一起就通訊不成功,傳送 接受不到...