#include "msp430x24x.h"
char i;
char j;
char addr;
void delay (char t)
{
for(i=100;i>0;i–)
{
for(j=100;j>0;j–);
}
}
void init(void){
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF) { while(1); // If calibration constants erased
// do not load, trap CPU!!
} BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P3SEL = 0x30; // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600; (104)decimal = 0x068h
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
} void main (void)
{
WDTCTL = WDTPW + WDTHOLD; init();
_EINT();
addr=0x01;
while(1)
{
for(addr=1;addr<=6;addr++)
{
while((IFG2&UCA0TXIFG)==1);
UCA0TXBUF=addr;
delay(35);
} }
}
串口调试软件显示发出的数据是01 04的循环
yffy:
在主程序中加断点调试看看。
Lina Lian:
tao chen2,
我看你配置是对的,请把发送数据前的
tao chen2while((IFG2&UCA0TXIFG)==1);
更改为下列语句,
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?
试试看结果怎么样?
另外,你的delay函数有可能被优化掉,建议使用__delay_cycles();本征函数。
Shi JianHua:
查询发送数据应该没什么问题,你仿真看看变量是否在那里除了问题,按照道理递增发送是可以。程序就是对了也需要调试。
tao chen2:
回复 Lina Lian:
谢谢 ,现在数据发送正确了,但是用查询接收不到数据是为什么?
tao chen2:
回复 Shi JianHua:
示波器和串口调试程序显示发出的数据不同是为什么?
TI中文支持网



