TI中文支持网
TI专业的中文技术问题搜集分享网站

使用捕获比较功能实现异步串行通信

有人使用捕获比较功能实现异步串行通信的吗?我现在串口不够用,想捕获比较功能实现一个串口,但怎么都发不出来数据。使用的单片机是MSP430F5438A。

 

void SimulationSerInit(void)

{

P8DIR |= BIT5;//p8.5设置为输出-TXD

P8SEL |= BIT5;//设置为外围模块

P8DIR &= ~BIT6;//8.6设置为输入RXD

P8SEL |= BIT6;//设置为外围模块

TA0CTL = TASSEL_1 + MC_2;//; + TACLR + TAIE; 

TA0CCTL0 |= OUT;//CCR0的OUT设置为1(0x0004)

 

}

 

//发送一个字节

void txd(unsigned char byte)

{

T_DATA=byte;

TA0CCR0=TA0R; //将TAR时间存入CCR0中,确定第一位的长度

TA0CCR0=TA0CCR0+TBIT1;//将一位的时间加入到CCR0中

T_DATA=T_DATA<<1;//将字节向左移一位,构成最低位起始位

T_DATA=T_DATA|0x0200;//最高位(10位)位停止位

TR_COUNT=10;//发送计数器

TA0CCTL0= OUTMOD0+CCIE;//重新设置CCTL0,CCIS=00

while(CCIE&TA0CCTL0);//

}

 

//CCR0  p8.5

#pragma vector=TIMER0_A0_VECTOR

__interrupt void send_ISR(void)

{

TA0CCR0=TA0CCR0+TBIT1;//重装一位的时间

 

//开始发送

if(TR_COUNT==0)

TA0CCTL0&= ~CCIE;

else

{

TA0CCTL0|= OUTMOD2;

if(T_DATA&0x0001)

TA0CCTL0&= ~OUTMOD2;

                                    //TA0CCTL0|= OUT;

//else

 //TA0CCTL0&= ~OUTMOD2;

 //TA0CCTL0&= ~OUT;

T_DATA=T_DATA>>1;

–TR_COUNT;

}

}

我每隔100ms发送一次,但是在示波器上看不到数据?不知道哪里没有做好?

 

Young Hu:

给您发一个文档。

anger0925:

回复 Young Hu:

谢谢,我先看看

赞(0)
未经允许不得转载:TI中文支持网 » 使用捕获比较功能实现异步串行通信
分享到: 更多 (0)