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

📄 ad转换.c.txt

📁 MSP430F133 AD转换,采用AD转换中断方式读取AD结果,基于IAR环境C语言
💻 TXT
字号:
#include <msp430x13x.h>
void init_system(void);
void init_series(void);
void init_adc(void);
unsigned char rxd_buff,ok;
unsigned int ADvalue;
unsigned int bb; 
void main(void)
{
    unsigned char relay_buffp1,aa;
     
    WDTCTL = WDTPW + WDTHOLD; 
    init_system();
    init_series();
    init_adc();
    ADC12CTL0|=ADC12SC;
    _EINT();    //允许中断
    //_DINT();  //禁止中断
 
 

  
  
  for(;;);
  
  for(;;)
  {   
    TXBUF0=0x11;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x22;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x33;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x44;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x55;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x66;
    while ((UTCTL0&0x01) == 0);        
    TXBUF0=0x77;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x88;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0x99;
    while ((UTCTL0&0x01) == 0);
    TXBUF0=0xaa;
    while ((UTCTL0&0x01) == 0);
    for(bb=0;bb<30000;bb++);    
   } 
   
   
   
    TXBUF0=0x11;
    while ((UTCTL0&0x01) == 0);         
     
        
    P1DIR = 0xff;
    P2DIR = 0xff;
        
    P1OUT = 0x00;
    P2OUT = 0x00;  
          
    for(;;)
    {
      P1OUT = 0x00;
      P2OUT = 0x00;  
      for(bb=0;bb<60000;bb++);        
      P1OUT = 0xff;
      P2OUT = 0xff;          
      for(bb=0;bb<60000;bb++);        
      P1OUT = 0x00;
      P2OUT = 0x00;  
      for(bb=0;bb<60000;bb++);        
      relay_buffp1=1;
      for(aa=0;aa<8;aa++)
      {
         P1OUT = relay_buffp1;
         relay_buffp1=relay_buffp1<<1;   
         for(bb=0;bb<60000;bb++); 
      }
      P1OUT = 0x00;
      P2OUT = 1;
      for(bb=0;bb<60000;bb++);      
         
      P2OUT = 2;
      for(bb=0;bb<60000;bb++);      

      P2OUT = 8;
      for(bb=0;bb<60000;bb++);    

      P2OUT = 4;
      for(bb=0;bb<60000;bb++);            
    }
}

void init_series(void)
{
    UCTL0 = CHAR;             // 设串口控制寄存器,设为8位字符格式
    UTCTL0 = SSEL0;           // 设串口控制寄存器所使用的时钟,选择UCLK = ACLK
    UBR00 = 0x03;             // 波特率设置32k/2400 - 13.65
    UBR10 = 0x00;            
    UMCTL0 = 0x4a;            // 波特率调整器设置
    ME1 |= UTXE0 + URXE0;     // 模块允许寄存器设置,使能USART0 TXD/RXD
    IE1 |= URXIE0;            // 中断允许寄存器设置,接收中断允许
    P3SEL |= 0x30;            // 将P3.4,5使用外围模块 = USART0 TXD/RXD
    P3DIR |= 0x10;            // 将P3.4设为输出(发),P3.5默认为输入(收)= 0
    IE1|=URXIE0;
}

void init_adc(void)
{
  ADC12CTL0&=~ENC;
  ADC12CTL0=ADC12ON;
  ADC12CTL0|=REFON;
  ADC12CTL0|=REF2_5V;
  
  ADC12CTL1=CONSEQ_0+SHP;
  
  ADC12MCTL0=SREF_1;
  ADC12IE=BIT0;
  ADC12CTL0|=ENC;
  
}

void init_system(void)
{
    BCSCTL1 &= ~(XT2OFF + XTS);           // ACLK = 32.768K
    BCSCTL2 |= SELM1;                     // MCLK = XT2
    BCSCTL2 |= SELS;                      // SMCLK = XT2
}




#pragma vector = ADC_VECTOR
__interrupt void adc(void)
{
  switch(ADC12IV)
  {
     case 0x02: break;
     case 0x04: break;
     case 0x06:
          ADvalue=ADC12MEM0;
          ADC12CTL0|=ADC12SC;
          break;
     default: break;
  }

}



#pragma vector = UART0RX_VECTOR
__interrupt void usart0_rx (void)
{
    TXBUF0=RXBUF0;
    while ((UTCTL0&0x01) == 0);
}

⌨️ 快捷键说明

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