51微控制器串列埠通訊寫字元,51微控制器串列埠通訊寫一個字元

2021-04-20 08:39:21 字數 1917 閱讀 7090

1樓:匿名使用者

你主程式這麼寫,傳送一個字元後,微控制器並不停止。應該加一行無限迴圈語句,

while(1);才能停,如下

2樓:草原上之狼

#include

#include

unsigned char ch;

bit read_flag= 0 ;

void init_serialcom( void ) //串列埠通訊初始設定

//向串列埠傳送一個字元

void send_char_com( unsigned char ch)

//串列埠接收中斷函式

void serial () interrupt 4 using 3}main()}}

3樓:匿名使用者

程式沒有停止,執行一次後會自動從頭開始

在程式末尾加while(1);即可

4樓:匿名使用者

主函式在 zf(『2』);後要加一條語句:

while(1);

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

5樓:匿名使用者

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

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

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

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

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

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

6樓:匿名使用者

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

7樓:微控制器的戰鬥機

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

請問51微控制器與51微控制器之間的串列埠通訊程式怎麼寫?

8樓:匿名使用者

1、查詢方式:

#include

main()

sbuf=dat;//傳送

while(!ti);

ti=0;}}

2、中斷方式:

#include

unsigned char dat;

bit flag;

void uart_isr() interrupt 4if(ti)ti=0;

}main()}}

9樓:走在時間的前頭

就是一個雙機通訊而已嘛,簡單的串列埠通訊,我這裡有一些資料,需要可以來找我。

10樓:做而論道

參考

11樓:匿名使用者

太簡單,找個例程,看看!太多了!一搜一堆

12樓:匿名使用者

給個郵箱,發給你一個**和**,你參考一下

51微控制器,通過串列埠助手向微控制器傳送字串,微控制器將字串逆序傳送回計算機,用C語言程式設計

電腦通過串列埠助手向微控制器傳送字串,微控制器定義一個可以儲存7個字元的陣列,依次儲存接收的字串,當接收到7個字串後,就可以從陣列的最後一個字元向前傳送每一個字元給電腦就可以了。剩下的就是串列埠初始化,串列埠接收和傳送程式了,就比較好寫了。其實,電腦傳送任意的7個字元的字串都可以,微控制器收到後就可...

C51微控制器能與串列埠裝置通訊嗎,C51微控制器能與3個串列埠裝置通訊嗎

當然可以啦 來,三個自串列埠通訊裝置要連在同一條總 線上,如usart spi i2c匯流排上,51微控制器傳送的每一串訊號都帶有地址資訊,當發出的地址資訊與這三個串列埠通訊裝置的某一個地址相同時,微控制器就可以這個通訊裝置通訊了,其他的就處於休眠狀態。能呀!bai串列埠通訊中,有一種模式是多du機...

51微控制器,串列埠通訊一般接受資料,用串列埠中斷,傳送資料用查詢就行了

bit busy 0 unsigned char i void com isr void interrupt 4if ti 我在定時zhi器中dao斷裡面把ti置1,但是不行。main void com isr void interrupt 4 主函授中要加一句sbuf ldata 你串列埠初始化程...