完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 grainlive 于 2014-11-23 00:08 编辑
刚刚开始接触串口通信这一块……下面是根据例程写的代码#include unsigned char pre[4]; int i,j; /********************主函数********************/ void main(void) { /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换 P3SEL |= 0x30; // 选择P3.4和P3.5做UART通信端口 ME1 |= UTXE0 + URXE0; // 使能USART0的发送和接受 UCTL0 |= CHAR; // 选择8位字符 UTCTL0 |= SSEL0; // UCLK = ACLK UBR00 = 0x03; // 波特率9600 UBR10 = 0x00; // UMCTL0 = 0x4A; // Modulation UCTL0 &= ~SWRST; // 初始化UART状态机 for(i=0;i<4;i++) //这个地方写的好像不对 { while((IFG1 & URXIFG0)==0); pre=URXIFG0; } for(j=0;j<4;j++) { while (!(IFG1 & UTXIFG0)); //等待以前的数据发送完毕 TXBUF0=pre[3-j]; } while(1); } 结果不对,比如我发送11 22 33 44,或者1A 2B 3C 4D,收到的都是40 40 40 40 |
|
相关推荐
1个回答
|
|
for(i=0;i<4;i++) //这个地方写的好像不对
{ while((IFG1 & URXIFG0)==0); pre=URXIFG0; } 确实不对,改成这样: for(i=0;i<4;i++) //这个地方写的好像不对 { while((IFG1 & URXIFG0)==0); pre[i]=RXBUF0; } |
|
|
|
只有小组成员才能发言,加入小组>>
3044个成员聚集在这个小组
加入小组2950 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3644 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2354 浏览 1 评论
4822 浏览 1 评论
2582 浏览 1 评论
1347浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3644浏览 2评论
2950浏览 1评论
1538浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-11 15:45 , Processed in 1.825450 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号