×
单片机 > 单片机程序设计 > 详情

MSP430操作ADC0808程序

发布时间:2020-09-02 发布时间:
|

虽然MSP430F149自带10位的ADC,出于各种原因,我还是选用了ADC0808作为AD转化,下面是程序:


#include

#include"lcd.h"

 

#define DATA_DIRIN P3DIR=0x00;

#define DATA P3IN

 

#define START_DIROUT P4DIR|=BIT0   //P4.0->START

#define CLR_START P4OUT&=~BIT0

#define SET_START P4OUT|=BIT0

 

#define OE_DIROUT P4DIR|=BIT1      //P4.1->OE

#define CLR_OE    P4OUT&=~BIT1

#define SET_OE P4OUT|=BIT1

 

#define EOC_DIROUT P4DIR|=BIT2     //P4.2->EOC

#define EOC_DIRIN  P4DIR&=~BIT2

#define EOC_READ   P4IN&BIT2

#define CLR_EOC P4OUT&=~BIT2

#define SET_EOC P4OUT|=BIT2

 

unsigned char voltageChar[6]="0.00V";//ÒªÏÔʾ×Ö·û´®£¬×îºóһλĬÈÏÊÇ¡®¡¯

void DelayXms(unsigned int i);  //delay about x ms

int main( void )

{

  unsigned int v;

  // Stop watchdog timer to prevent time out reset

  WDTCTL = WDTPW + WDTHOLD;

  P5SEL |= BIT6;                 //P5.6Êä³öACLK = 32768Hz£¬×÷ΪADC0808µÄʱÖÓÐźÅ

  LcdReset();                    //lcd1602³õʼ»¯

  DATA_DIRIN;

  START_DIROUT;

  OE_DIROUT;

  EOC_DIRIN;

  while(1){

  CLR_START;

  CLR_OE;

  SET_START;

  DelayXms(1);

  CLR_START;   

  while(!(P4IN&0x04)); 

  SET_OE;

  v = DATA;

  CLR_OE;

  DelayXms(500);

  }

  return 0;

}

 

void DelayXms(unsigned int i){

    unsigned int j;

    for( ; i>0; i--){

      for(j=0;j<200;j++); 

    }

  

}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义