📄 ad.c
字号:
#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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -