2050|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msp430串口通信 [复制链接]

#include  
#define TXBUF_SIZE 32                      /*一帧最多能发送的数据字节数*/
unsigned char TX_BUFF[TXBUF_SIZE];         /*发送缓冲区*/
unsigned char TX_NUM=0;                      /*发送字节总数变量*/
unsigned char TX_CNT=0;                      /*发送字节计数变量*/
unsigned char i;
static unsigned char string[]={0x01,0x02,0x03,0x04,0x05,0x06};
void UART_init()
{
P3SEL|=BIT4+BIT5;
ME1 |= UTXE0 + URXE0;                     //开启收发模式
UCTL0 |= CHAR;                            //8位数据传输
UTCTL0 |= SSEL0;                          // UCLK= SMCLK
UBR00 =0x03;                              
UBR10 = 0x00;                           
UMCTL0 =0x4A;                             
UCTL0 &= ~SWRST;
}
char UART0_PutChar(unsigned char *Chr,unsigned int Length)
{
int i;
if(IE1&UTXIE0)
   return(0);
if(Length>TXBUF_SIZE)
   return(0);
for(i=0;i {
  TX_BUFF=Chr;
}
TX_CNT=0;
TX_NUM=Length;
IFG1|=UTXIFG0;
IE1|=UTXIE0;
return(1);  
}

void main()
{
WDTCTL = WDTPW + WDTHOLD;  
UART_init();
_EINT();
while(1)
{
   for(i=0;i<6;i++)
   {
   UART0_PutChar(string,7);
   }
}
}

#pragma vector=UART0TX_VECTOR
__interrupt void UART0_TX(void)
{
TXBUF0=TX_BUFF[TX_CNT];
TX_CNT++;


if(TX_CNT>=TX_NUM)
{
  IE1&=~UTXIE0;
}
}
这是用FIFO进行数据输出的一个程序我认为应该的输出是01 02 03 04 05 06 01 02 03 04 05 06 ......而实际上的输出确是06 06 05 05 05 05 04 04 03 03 03 02 02 01 01 06 06 05 05 04 04 04 03 03 03 02 02 01 01......感觉输出方向反了,而且一个数输出多次。我找了好久都没找到原因,还请大家帮忙看看,谢谢了
 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表