A. 單片機硬雙串口有什麼意義
意義很大,比如多CPU單片機系統,還需要與上位機通訊,雙串口就可以發揮作用了。
B. 雙機串口通信(單片機)
試驗的話就將兩個單片機刷同樣的程序,程序裡面都包含了發送和接收部分,我用的是msp430單片機。連線是要注意串口線的連接方式
5---5
2---3
3---2
只有這樣連才能行。下面是源程序:
#include <msp430x44x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP14PF; // Configure load caps
UTCTL0 = SSEL1; // UCLK = SMCLK
UBR00 = 0x6D; // 1MHz 9600
UBR10 = 0x00; // 1MHz 9600
UMCTL0 = 0x00; // no molation
UCTL0 = CHAR; // 8-bit character *SWRST*
ME1 |= UTXE0 + URXE0; // Enable USART0 TXD/RXD
IE1 |= URXIE0; // Enable USART0 RX interrupt
P2SEL |= 0x30; // P2.4,5 = USART0 TXD/RXD
P2DIR |= 0x10; // P2.4 output direction
_EINT(); // Enable interrupts
for (;;)
{
_BIS_SR(CPUOFF); // Enter LPM0
_NOP(); // Required only for C-spy
}
}
interrupt[UART0RX_VECTOR] void usart0_rx (void)
{
while ((IFG1 & UTXIFG0) == 0); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
C. 尋找2個獨立串口的單片機!
STM32的話可以試試STM32F103C8T6,或者STM32F103T6U6,這兩種是STM32裡面個頭最小的,有兩個串口。當然單片機是貼片封裝的,焊接的時候費事了。
DIP封裝的單片機里,除了40腳的會有兩個串口外,其餘20引腳或者28引腳的基本沒有。一般的單片機有一個串口就很不錯了。
D. 求助:STC系列雙串口單片機 同時使用兩個串
STC系列雙串口單片機 可以同時使用兩個串口,
STC系列四串口單片機 同時使用四個串口。
E. 單片機雙機串口通信程序設計
初始化程序:
BTLEQU2FH;波特率放在內部RAM的2FH單元
MOVTMOD,#21H;T0方式1,16位計數器,T1方式2,串口用
SETBTR0;啟動T0
MOVBTL,#0F3H;波特率設定為1200
MOVSCON,#0C0H;串口方式3,9位數據,禁止接收
接收及驗證程序:
NUMEQU2BH;同步符個數值存放在內部RAM的2BH單元
TEMPEQU2CH
ROM-CH:DB55H,55H,55H,55H,55H,55H,55H,55H,55H,55H
DB55H,55H,55H,55H,55H,55H,55H,55H,55H,55H;20位元組同步符
MIMDB'WSC':3位元組密碼「WSC」
SETBP3.5;置電台收狀態
SETBREN;允許串口接收
A1:MOVNUM,#0;記錄連續到同步符55H的個數
A2:JBRI,A2;串口有數據轉A3
A3:CLRRI;清接收中斷標志
MOVA,SBUF;讀串口數據
CJNEA,#55H,A1;不是同步符轉A1
INCNUM;收到的同步符個數加1
MOVA,NUM;取收到的同步符個數
CJNEA,#5,A2;未收夠連續5個55H轉A2
A4:MOVNUM,#0;密碼驗證,記錄收到密碼位元組數
A5:MOVDPTR,#MIM;密碼字元首址
MOVA,NUM
MOVCA,@A+DPTR;查表取密碼
MOVTEMP,A;保存密碼
JBRI,A6;串口收完一個位元組轉A6
…
A6:CLRRI;清接收中斷標志
MOVA,SBUF;讀串口數據
CJNEA,TEMP,A4;與密碼不符轉A4
INCNUM;收到的密碼個數加1
MOVA,NUM;取已收到的密碼位元組數
CJNEA,#3,A5;密碼未收完轉A5
發送程序:
CLRP3.5;置電台發狀態
MOVB,#23
MOVDPTR,#ROM-CH
B1:CLRA
MOVCA,@A+DPTR;查表發送同步符和密碼共24位元組
INCDPTR
LCALLSEND-CH;調發送單位元組子程序
DJNZB,B1
…
CLRA
MOVDPTR,#7000H;外部RAM數據首址,發送外部RAM中的數據到電台
B2:CJNER4,#0,B3
CJNER3,#0,B3;R4R3=發送位元組數
B3:MOVXA,@DPTR;取數據
INCDPTR
LCALLSEND-CH
CJNER3,#0,B4
CJNER4,#0,B5
B4:DECR3
LJMPB2
DECR3
DECR4
LJMPB2
…
SEND-CH:SETBTB8
MOVSBUF,A
DB0,0,0,0,0,0,0,0
JNBTI,$;延時4μs
CLRTI
RET
結語
F. 單片機雙串口通信
看看該晶元的PFD資料吧。
先定義相關寄存器,位,再設置,就可以用了,和第一個串口一樣的用法。
例:
sfr AUXR1 = 0xa2;
sfr S2CON = 0x9a;
sfr S2BUF = 0x9b;
sbit S2_P4 = 0xa6;
...
中斷號:8
void uart2() interrupt 8
{
...
}
G. ATMEL的51系列單片機有雙串口的么
ATMEL沒有雙串口的51單片機,AVR倒是有些雙串口的,比如Atmega162。如果可能,你考慮一下Winbond的W77E058單片機,這就是雙串口的。
H. 雙單片機間串口雙向通信(十萬火急)
一個簡單的模擬實例,改一下就可以了
I. 有一個雙串口單片機,我要把串口1的數據發送到串口2中去,串口1波特率9600,串口2波特率1200。要怎麼做
你可以在單片機內部用數組把信息從串口1串到串口2,
另外你還要考慮在單片機內部傳遞的時間,
由於串口1速度快,口2速度慢,
1:從串口2向串口1傳遞可以按照9600的波特率。
2:從串口1向串口2傳遞速度只能按照串口2的波特率1200進行。
如果對實時性要求不高還是很容易搞定的。
J. 有沒有高手呀!!!求高手!!! 雙串口單片機(STC90C54RD+),串口通信程序編寫,具體要求如下:
#include<reg52.h>
unsigned char flag,a;
void main()
{
TMOD=0x20;//設置定時器1為工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
/* if(RI==1)
{
RI=0;
P1=SBUF;
}*/
if(flag==1)
{
ES=0;
flag=0;
SBUF='1';//28;
while(!TI);
TI=0;
SBUF='2';//28;
while(!TI);
TI=0;
SBUF='3';//28;
while(!TI);
TI=0;
ES=1;
}
}
}
void ser() interrupt 4
{
RI=0;
// P1=SBUF;
a=SBUF;
flag=1;
}
這是串口通訊的程序,由於C語言的良好的訊移性能,你再查詢GPS模塊的就編程,一整合可以了