51微控制器串列埠通訊出現問題,5V微控制器與3 3V微控制器串列埠通訊問題

時間 2021-09-10 12:12:59

1樓:做而論道

void main();};

}如果是ascii碼,加上引號即可:

if(sbuf == '0') p0 = smg[0]; //通過數碼管顯示接收到的資訊

if(sbuf == '1') p0 = smg[2]; //通過數碼管顯示接收到的資訊

if(sbuf == '2') p0 = smg[12]; //通過數碼管顯示接收到的資訊

if(sbuf == '3') p0 = smg[14]; //通過數碼管顯示接收到的資訊

2樓:清澤憶夢

再除錯一下,收到串列埠助手資料之後再讓它返回到電腦串列埠,看看是否是原始資料。目的是查一下是串列埠出了問題還是數碼管程式設計有問題

3樓:成子盾

lz採用t1的定時器方式是2為自動重灌初值,很明顯th1和tl1這兩個值不一致,波特率有問題

5v微控制器與3.3v微控制器串列埠通訊問題

4樓:yesyes科

5v微控制器與3.3v微控制器串列埠不能通訊,是設定錯誤造成的,解決方法如下:

1、首先51微控制器的可用記憶體只有00h~7fh,堆疊指標設定在60h,則堆疊的大小就是60h~7fh。這算是有規定大小的。

2、堆疊主要是為子程式呼叫和中斷操作而設立的,因此對應有兩項功能:保護斷點和保護現場。

3、微控制器的程式歸根結底是個死迴圈,反覆在執行main函式(主程式)。

4、可以只寫一個函式main,那麼這個函式隨著功能的增多而變得異常大,而且非常不具備可讀,這個時候就需要子函式(子程式)了。

5、主函式在呼叫完子函式後會返回到主函式中,這樣就可以呼叫其它函式並且繼續這個死迴圈。

5樓:匿名使用者

遇到這種介面問題,首先必須確認兩個板子上的txd/rxd/gnd  若用到cts/rts當然也要

確認,確認它們的輸出電壓.(若是標準rs-232訊號,那就確認兩塊板子的rxd/txd對接

就是1板子的txd接2板子的rxd.....),有時候板子上輸出的是ttl電壓(5v/0v),串列埠標準電壓

是正負12v

一般拿出來賣的功能應該是有的,具體就是你怎麼用?

sp232是標準rs-232d介面,要加正負12v電壓。sp3232的電壓是3v-5.5v 也就是0v-3.3或5.5v

兩個當然不能直接接在一起。你看看是不是這個問題!

51微控制器串列埠通訊問題

6樓:匿名使用者

c51微控制器的程式:

1、初始化程式:

tmod=0x20; th1=0xfd; tl1=0xfd;sm0=0; sm1=1; ren=1; tr1=1; ea=1; es=1;

2、傳送程式:

void comdata_send()//串列埠傳送資料3、接收資料:

void comdata_receive() interrupt 4}

7樓:魔靨一陣風

#include

#define uchar unsigned char

#define uint unsigned int

uchar idata trdata=;

sbit k1=p3^2; //對應開發板k1按鍵

//串列埠初始化

void uart_init(void)

void delay1ms(uint i)}}

//串列埠傳送一個位元組

void uart_sendchar(unsigned char dat)

//串列埠傳送一個字串

void uart_sendstring()

//主函式

void main(void)}}

//串列埠接收中斷函式

void int_uartrcv(void) interrupt 4}

8樓:曾年胥昌黎

樓主,傳送與接收不要放在同一個中斷服務程式中,rx_data[i]=sbuf;

sbuf=rx_data[i];

這兩句不應放在同一個中斷服務程式中啊,都放在main()}rx_data[i]=sbuf,放在中斷服務程式中;

9樓:奈妍杭綺琴

這個很難說,可能是其它程式問題,你仔細檢查一下,你整段程式,總能發現其中問題的!一步一步的找,和執行看看,一下哪步出問題了

51微控制器串列埠通訊中斷的問題

10樓:

肯定不會執行while(ti==0);下面的程式的,因為你的中斷開著,程式跳到中斷服務程式裡面了,然後中斷處理結束了之後,ti自動清零了,所以一直在while(ti==0);無限迴圈。

程式裡面,既然開通了中斷功能,那你就一直使用中斷功能,為什麼你還要使用查詢功能呢?甚至有時把中斷給禁止了,這裡面容易出現問題哈。

你不要使用查詢功能,就一直使用中斷,具體程式檢視下面:

#include

#define uint unsigned int#define uchar unsigned charvoid delay(int z);

char a,flag;

void main()

void ser_interrupt()interrupt 4else if(ti==1)ti=0;}

11樓:匿名使用者

串列埠接收與傳送都是用的相同中斷源。所以在中斷函式中要判斷是接收還是傳送中斷,同時,要軟體清中斷。所以中斷函式修改

void ser_interrupt()interrupt 4}if(ti)

}主函式中可改為

if(flag==1)

12樓:匿名使用者

開啟pc串列埠軟體就有資料接收,是和第一次發的資料一樣嗎,具體是什麼樣的資料。

你把 while ( ri == 0) ;放到中斷第一句,再把main中的es=0放進中斷最後看看。

13樓:倫哲齊騫

對於51而言,每幀產生一次中斷。接收4個位元組是分4次中斷接收完成的。51的uart模組從序列移位暫存器接收完成後是直接放入接收緩衝的,而且接收緩衝只有一個單元。

5V微控制器與3 3V微控制器串列埠通訊問題

yesyes科 5v微控制器與3.3v微控制器串列埠不能通訊,是設定錯誤造成的,解決方法如下 1 首先51微控制器的可用記憶體只有00h 7fh,堆疊指標設定在60h,則堆疊的大小就是60h 7fh。這算是有規定大小的。2 堆疊主要是為子程式呼叫和中斷操作而設立的,因此對應有兩項功能 保護斷點和保護...

微控制器串列埠通訊問題,51微控制器串列埠通訊問題

修者世界 p3 0xff的作用其實很簡單,就是為了更好的完成 讀 修改 寫 這個過程,其實對於p3口是沒有必要的,對於p0口這樣做是應該的。 革玉花戚雪 微控制器串列埠通訊的問題,其實你只有乙個問題,就是 p0 0xf0 s2buf 0xfc p0 s2buf 為什麼這裡p0是0x00 你覺得p0應...

51微控制器串列埠通訊波特率問題,51微控制器串列埠波特率問題

anyway中國 usb轉串列埠上的晶振12mhz,對波特率的準確度有一定影響。但是,微控制器通訊的波特率設定,還是得採用與微控制器相連的11.0582mhz晶振進行計算。11.0592mhz設定的的大部分波特率理論誤差為零,但是,串列埠轉usb會有為了減小誤位元速率,可按照12mhz晶振波特率設定...