完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
这是我的程序请大神帮我看一下是不是思路错了???TBCCR1,,TBCCR2添加watch经过串口有数据传过来但是不能控制舵机动而且用示波器测试p4.1没有波形。。。。是不是思路错了大佬们?? #include "msp430x14x.h" #include "Slaveoperation.h" void UART0_Init(); void TimerB_Init(); void Port_Init(); void Init_Clock(void); void Send0_Byte(unsigned char data); void Send0_Str(unsigned char *s); unsigned char SerialpoSend[6]={0xAA, 0x11,0x22,0x33,0x44,0xBB}; unsigned char SerialportRev[17],SerialportRevCount,SerialportRevFlag; unsigned char data,jj,adc_flag,countsend; int main( void ) { WDTCTL = WDTPW + WDTHOLD; SerialportRevCount=0; UART0_Init(); Port_Init(); TimerB_Init(); Clock_Init(); Close_LED(); while(1); } //*********************************************************************** // MSP430IO口初始化 //*********************************************************************** void Port_Init() { LED8SEL = 0x00; //设置IO口为普通I/O模式,此句可省 LED8DIR = 0xFF; //设置IO口方向为输出 LED8PORT = 0xFF; //P2口初始设置为FF DATASEL = 0x00; //设置IO口为普通I/O模式,此句可省 DATADIR = 0xFF; //设置IO口方向为输出 DATAPORT = 0xFF; //P4口初始设置为FF CTRSEL = 0x00; //设置IO口为普通I/O模式,此句可省 CTRDIR |= BIT3 + BIT4; //设置IO口方向为输出,控制口在P63,P64 CTRPORT = 0xFF; //P6口初始设置为FF } //************************************************************************* // MSP430串口0初始化 //************************************************************************* void UART0_Init() { unsigned char j; WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 BCSCTL1&=~XT2OFF; do{ IFG1&=~OFIFG; //消除振荡器失效标志 for(j=0XFF;j>0;j--); } while((IFG1&OFIFG)); BCSCTL2|=SELM_2; P3DIR|=BIT4; P3DIR&=~BIT5; P3SEL|=BIT4+BIT5; ME1 |= UTXE0 + URXE0; // 使能USART0收发 U0CTL |= CHAR; // 8-bit 数据,一位停止位 U0TCTL |= SSEL0; // 选择时钟,UCLK = ACLK,32768 U0BR0 = 0x03; // 32k/9600 U0BR1 = 0x00; //波特率9600 U0MCTL = 0x4a; // Modulation U0CTL &= ~SWRST; // 初始化UART0状态机,一般要设置好串口之后才复位 IE1 |= URXIE0; _EINT(); } //************************************************************************* // 处理来自串口0的接收中断 //************************************************************************* #pragma vector=UART0RX_VECTOR __interrupt void UART0_RX_ISR(void) { SerialportRev[SerialportRevCount]=U0RXBUF;//SerialportRev[11],SerialportRevCount,SerialportRevFlag; SerialportRevCount++; if(SerialportRevCount==17) {SerialportRevCount=0; for(jj=0;jj<12;jj++) { if(( SerialportRev[jj]==0xAA)&&( SerialportRev[jj+5]==0xBB)) { TBCCR1=SerialportRev[jj+1]*16+SerialportRev[jj+2]; TBCCR2=SerialportRev[jj+3]*16+SerialportRev[jj+4]; } } data=U0RXBUF; //接收到的数据存起来 Send0_Byte(data); //将接收到的数据再发送出去 } } //************************************************************************* // 串口0发送一个数据函数 //************************************************************************* void Send0_Byte(unsigned char data) { while(!(IFG1&UTXIFG0)); //发送寄存器空的时候发送数据 U0TXBUF=data; } //************************************************************************* // 串口0发送字符串函数 //************************************************************************* void Send0_Str(unsigned char *s) { while(*s != ' |