⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 单边带调幅对讲机程序 msp430单片机控制 实现无线数据传输
💻 C
字号:
#include"Init.h"

void initSys(void)
{
  unsigned int x0;
  BCSCTL1&=~XT2OFF;                         //打开XT2振荡器
  do
  {
    IFG1&=~OFIFG;
    for(x0=0x20;x0>0;x0--);
  }while((IFG1&OFIFG)!=0);
  BCSCTL2=SELM_2+SELS;                      //选择MCLK,SMCLK为XT2;SELS为选择SMCLK,8M
}

void ADC12_init(void)
{
P6SEL |= 0x03;                                // P6.0-ADC option select 
ADC12CTL0 |= SHT0_2 +ADC12ON+MSC;                 // Set sampling time, turn on ADC12
ADC12CTL1 |= SHP+CONSEQ_1;                    // Use sampling timer
ADC12CTL1 |= CSTARTADD_0;                     //转换起始地址,CSTARTADD_0>>ADC12MCTL0,
//ADC12IE = 0x01;                             // Enable interrupt
ADC12MCTL0 = INCH_0+SREF_0;
ADC12MCTL1 = INCH_1+SREF_0+EOS;
ADC12CTL0 |= ENC+ADC12SC;                     // Start convn, software controlled
}

void Uart_init(void)
{
  USART_SEL|= 0xC0;                  // P3.6,7 = USART1 TXD/RXD |= 0xC0;  // P3.4,5 = USART0 TXD/RXD
  UCA1CTL1 |= UCSSEL0;              // CLK = ACLK
 // UCA1BR0 = 0x36;                  // 32kHz/9600 = 3.41
  UCA1BR1 = 0x00;      
  UCA1BR0 = 0x6D;
  UCA1MCTL = 0x10;
  //UCA1MCTL |=UCBRS2 + UCBRS0;     // Modulation UCBRSx = 3
  UCA1CTL0 &= ~(UCMODE0 +UCMODE1); 
  UCA1CTL1 &= ~UCSWRST;           // **Initialize USCI state machine**
  UC1IE |= UCA1RXIE;              // Enable USCI_A1 RX interrupt
}


void Timerb_init(void)//定时器B初始化
{
  TBCTL=TBSSEL0+TBCLR;
  TBCCTL0=CCIE;
  TBCCR0=16384;
  TBCTL|=MC0;
}

//串行口写一字节
void usart_putchar( char c)
{   
    if(c == '\n')
        usart_putchar('\r')  ;
    else if(c == '\0') ;
  else   
  {
    while (!(UC1IFG & UCA1TXIFG));        // USCI_A0 TX buffer ready?
    UCA1TXBUF = c;	
  }
}

//发送字符串的函数
void String_printf( char *p)
{
    do
    {
       usart_putchar(*p);       
    }
    while (*(p++) != '\0');   
    usart_putchar('\n');
}
/*

//大家注意,MSP340F2上电后UCA0的中断标志寄存器IFG2 中UCA0TXIFG发送中断标志位就置1.
//在初始化时,只要总中断允许了,同时发送中断也允许了.初始化完后,发送中断服务程序就
//被马上执行.
//当UCA0TXBUF空闲时,中断标志寄存器IFG2 中UCA0TXIFG发送中断标志位就置1.
//发送中断服务程序
#pragma vector =USCIAB1TX_VECTOR
__interrupt void USCI1TX_ISR(void)
{ 
  if(nTX_Len != 0)                           //数据是否发完
  { 
    Sendover_Flag=0;
    UCA1TXBUF = UART_TX_BUF[nSend_TX];                 
    nSend_TX += 1;
    _NOP();_NOP();
    if(nSend_TX>=nTX_Len)
    {
     nSend_TX =0;
     nTX_Len=0;
     Sendover_Flag=1;
     UC1IE &= ~UCA1TXIE;
    }                                           
   }
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -