|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
RS485中繼器的通訊問題(有原程序) |
| 作者:wyc771112 欄目:通信技術 |
敬請高手指點,使用雙串口,程序如下: #include <msp430x14x.h> void Init(void); //聲明UART初始化函數(shù) CHAR Data[20],Buffer0[20],Buffer1[20]; unsigned CHAR i=0,j,count; /************************************************ 函 數(shù) 名: main() 功 能:主函數(shù) 說 明: 調(diào) 用: 全局變量: 入口參數(shù):無 出口參數(shù):無 返 回 值:無 ************************************************/ void main(void) { WDTCTL = WDTPW + WDTHOLD; //關閉看門狗 Init(); //UART初始化 _EINT(); //中斷允許 while(1); //主循環(huán) } /************************************************ 函 數(shù) 名: init() 功 能:初始化系統(tǒng) 說 明: 調(diào) 用: 全局變量: 入口參數(shù):無 出口參數(shù):無 返 回 值:無 ************************************************/ void Init(void) { UCTL1=UCTL0&=~SWRST; //SWRST復位,USART允許 UCTL1=UCTL0=0x10; //8位數(shù)據(jù)位,1位停止位,無校驗 //URCTL1=URCTL0|=URXWIE; //只有地址字符使URXIFG置位 UBR01=UBR00=0x03; UBR11=UBR10=0x00; //使用32KHZ晶振時,波特率為9600bps UMCTL1=UMCTL0=0x4A; //位調(diào)整 UTCTL1=UTCTL0=0x10; //選定ACLK為時鐘源 ME1=ME2|=0x30; //UART0、UART1發(fā)送及接收模塊允許 P3SEL=0xF0; //P3.4、P3.5、P3.6、P3.7被UART發(fā)送模塊占用 P3DIR=0x50; //P3.4、P3.6輸出,P3.5、P3.7輸入 P4DIR=0X0f; //P4.0、P4.1 輸出 P4OUT&=~0x0f; //P4.0、P4.1 置0 IE2|=URXIE1; IE1|=URXIE0; //接收中斷允許 } /************************************************ 函 數(shù) 名: UART0RX() 功 能:UART0中斷 說 明: 調(diào) 用: 全局變量: 入口參數(shù):無 出口參數(shù):無 返 回 值:無 ************************************************/ interrupt[UART0RX_VECTOR] void UART0RX(void) { if(RXBUF0==1) //UART0等待接收 { Data[i]=RXBUF0; //接收數(shù)據(jù),并存在Data數(shù)組中 if(Data[i++]==0) { for(j=0;j<i;j++) Buffer0[j]=Data[j]; //復制接收數(shù)據(jù) } //P4OUT|=BIT1; while((UTCTL1&0x01)==0); for(i=0;i<j;i++) { TXBUF1=Buffer0[j]; while((UTCTL1&0x01)==0); } //P4OUT&=~BIT1; } } /************************************************ 函 數(shù) 名: UART1RX() 功 能:UART1中斷 說 明: 調(diào) 用: 全局變量: 入口參數(shù):無 出口參數(shù):無 返 回 值:無 ************************************************/ interrupt[UART1RX_VECTOR] void UART1RX(void) { if(RXBUF1==1) //UART1等待接收 { Data[i]=RXBUF1; & |
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |