使用的单片机是MSP430f4152,红外发射端接在P6.6(UCA0TXD),调制口接在P3.0(TA1.2)
#include <msp430x41x2.h> void int_uart() {P6SEL |= BIT5+BIT6;// P6.5,6 = USCI_A0 RXD/TXDUCA0CTL0=UCPEN+UCPAR;//开校验位,偶校验UCA0CTL1 |= UCSSEL_1;// CLK = ACLKUCA0BR0 = 27;// 32k/1200UCA0BR1 = 0x00;//UCA0MCTL = 0x12;// ModulationUCA0CTL1 &= ~UCSWRST;// **Initialize USCI state machine**IE2 |= UCA0RXIE;// Enable USCI_A0 RX interrupt } void main(void) {WDTCTL = WDTPW+WDTHOLD;// Stop WDTFLL_CTL0 |= XCAP11PF;// Configure load capsint_uart();P3DIR |= 0x01;// P3.0 outputP3SEL |= 0x01;// P3.0 TA1 optionCCR0 = 26;// PWM PeriodCCTL1 = OUTMOD_7;// CCR1 reset/setCCR1 = 13;// CCR1 PWM duty cycleTACTL = TASSEL_2 + MC_1;// SMCLK, up modeCCTL0|= CCIE;_EINT();//----------------------------------------------------->开总中断for(;;){LPM3;//--------------------------------------------------->进LPM3模式_NOP();} } #pragma vector=USCIAB0TX_VECTOR __interrupt void USCI0TX_ISR(void) {while(!(IFG2&UCA0TXIFG));UCA0TXBUF =0xff; }
查看示波器的一端,输出时正旋波,数据发送的好像不对,接收端也收不到数据
Triton Zhang:
软件看上去也没有错。程序通过UART接收到RXD的数据然后从TXD发出来。
示波器测量的哪个位置?
电路中在红外发射管的通路上需要接一个限流电阻,也就是在VCC到红外管接地的通路上。否者在导通状态时,两个三极管只有0.1V的压降,VCC直接加在红外关上,红外管的导通电压应该只有0.3V左右的压降。
你在VCC接PNP三级管的射极管脚上串一个电阻,然后用示波器量电阻下端的电压.