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

📄 3.c

📁 24位AD压力实验板 protell99se打开
💻 C
字号:
#include <msp430x14x.h>
#include "lcd.h" 
#include "init.h"
#include "ADS1240.h"
#include "uart.h"
#include "24C64.h"
#include "Key.h"


#define uchar   unsigned char
#define schar   signed char
#define uint    unsigned int
#define ulong   unsigned long

__interrupt void port1(void);
void writetoreg(uchar ad_reg);
void adc_init(void);

union ulonguintuchar {ulong dat1;uint dat2[2];uchar dat4[4];} ad0;
uchar ad_flag;
ulong ad1240;
float adf;

//Delay value machine cycle
void Delay(uint value)
{  while(value--);
}

main()
{
uchar i,j;

   WDTCTL=WDTPW+WDTHOLD;//Stop WDT

   BCSCTL1&=~XT2OFF;//Start XT2=2.4576M
   do 
   {  IFG1&=~OFIFG;//Clear OSCFault flag
      for(i=0xFF;i>0;i--);//Time for flag to set
   }
   while((IFG1&OFIFG)!=0);//OSCFault flag still set?  
   BCSCTL2|=SELM1;//MCLK = XT2
   BCSCTL2|=SELS;//SMCLK = XT2CLK

   P6OUT&=~BIT1;//RSET LO
   P6OUT|=BIT4;
   P6DIR|=BIT1+BIT4;//P6.1=RSET,P6.4=DIN
   P6DIR&=~BIT6;//P6.6=DOUT
   P1OUT|=BIT2;
   P1DIR|=BIT2;//P1.2=SCLK
   P1DIR&=~BIT0;//P1.0=DRDY

   P1IES|=BIT0;
   P1SEL&=~BIT0;
   P1IE|=BIT0;
Open_AD_Power();
   for(i=200;i>=1;i--)
   {  for(j=191;j>=1;j--) {;}//6clock 5ms
   }

   adc_init();
   _EINT();

   i=0x00;
star:
   if(ad_flag==1)
   {  ad_flag=0;
      ad1240=ad0.dat1;
      adf=ad0.dat1;
      i++;
   }
   goto star;
}

void writetoreg(uchar ad_reg)
{  uchar i;
   for(i=8;i>=1;i--)
   {  P5OUT&=~ADS1240_SCLK;//SCLK=0    
      if(ad_reg&0x80) P5OUT|=ADS1240_DIN;//DIN=1  
      else P5OUT&=~ADS1240_DIN;//DIN=0   
      _NOP();_NOP();_NOP();
      ad_reg=ad_reg<<1;
      P5OUT|=ADS1240_SCLK;//SCLK=1  
      _NOP();_NOP();_NOP();
   }
   
   
}

void adc_init(void)
{  uchar i,j;
    ADS1240Init();
   
   P4OUT&=~ADS1240_RESET;//RSET LO  
   Delay(6);//52 cycle   
   P4OUT|=ADS1240_RESET;//RSET HI, LO-->HI > 16 clock
   Delay(6);//52 cycle  

   while(P1IN&BIT0) {;}
   writetoreg(0x50);//WREG CMD 1
   writetoreg(0x02);//WREG CMD 2
   writetoreg(0x00);//Set PGA 1
   writetoreg(0x01);//MUX AIN0+,AIN1-
   writetoreg(0x00);//ACR 15Hz  0 U/B 0 0 0 0 0 0  U/B=0,Bipolar 1,Unipolar
   for(i=1;i>=1;i--)
   {  for(j=191;j>=1;j--) {;}
   }
   while(P1IN&BIT0) {;}
}

//ADC interrupt
#pragma vector=PORT1_VECTOR
__interrupt void port1(void)
{  uchar i,j;
   if(P1IFG&BIT0)//P1.0(DRDY)=0
   {  ad_flag=1;
      ad0.dat4[0]=0x00;
      writetoreg(0x01);
//ad0.dat4[1]高字节,ad0.dat4[2]中间字节,ad0.dat4[3]低字节
      for(i=1;i<4;i++)
      {  for(j=0;j<8;j++)
         {  P5OUT&=~ADS1240_SCLK;//SCLK=0  
            ad0.dat4[i]*=2;//ad0.dat4[i]=ad0.dat4[i]<<1;
            if(P5IN&ADS1240_DIN) ad0.dat4[i]++;//DOUT
            P5OUT|=ADS1240_SCLK;//SCLK=1  
         }
      }
      P1IFG&=~BIT0;//clear IFG
   }
}

⌨️ 快捷键说明

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