ad.c

来自「系统以MSP430F2274单片机为核心」· C语言 代码 · 共 122 行

C
122
字号
#include "msp430x22x4.h"

#define ADCS_HIGH  P2OUT |=BIT3
#define ADCS_LOW  P2OUT &=~BIT3
#define ADCLK_HIGH  P2OUT |=BIT1
#define ADCLK_LOW  P2OUT &=~BIT1
#define DATAIN_IN P1IN &=BIT0


__no_init char data[20] @0x0400;
unsigned char advalue=0;

void sys_init();
void io_init();
//void ad_conver();
unsigned char ad_conver(void);

void delay_us(unsigned int k);

int main( void )
{
   sys_init(); 
   io_init();
   advalue=ad_conver(); 
 
}


void sys_init()
{
  WDTCTL  =WDTPW+WDTHOLD;
  BCSCTL1 =CALBC1_1MHZ;                     //设定DCO为1MHZ
  DCOCTL  =CALDCO_1MHZ;
  
  unsigned int n;
 /* do                                        //等待晶振稳定
  {
  IFG1 &=~OFIFG;
    for(n=5000;n>0;n--);
  }  while(OFIFG&IFG1);  */
  
  for(n=5000;n>0;n--);
  
}



void io_init()
{
  P2DIR |=BIT1+BIT3;                            //
  P2OUT |=BIT1+BIT3;

}


unsigned char ad_conver(void)
{
  unsigned char j,val;
  ADCS_HIGH;
  ADCS_LOW;
  ADCS_HIGH;
  ADCLK_LOW;
  //dely4us();
  delay_us(2);
  ADCS_LOW;
 // dely4us();
  delay_us(2);
  for(j=0;j<8;j++)
    
    
    
    
    
  {
    ADCLK_HIGH;
    ADCLK_LOW;
  }
  
  ADCS_HIGH;
  //dely4us();dely4us();dely4us();dely4us();
  delay_us(8);
  ADCS_LOW;
  //dely4us();
  delay_us(2);
  
  for(j=0;j<8;j++)
  {
   ADCLK_HIGH;
   val<<=1;
   
   if(P1IN & 0x01)
   {
      val |=0x01;
   }
   
   ADCLK_LOW;
  }
  
return val;
  
}




void delay_us(unsigned int k)
{
  unsigned j;
  for(j=k;j>0;j--)
  {
    _NOP();
  }
}








⌨️ 快捷键说明

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