📄 adc.c
字号:
////////////////////////////////////////////////////////////////
// 无线传感器网络节点程序 //
// DAC操作子程序 //
// 编写:蒋路茸 //
// 日期:2008.6 //
// 版本:0.1 //
// //
// AD_CLK P3.3 SCLK0 //
// AD_DOUT P3.2 SOMI0 //
// AD_DIN P3.1 SIMO0 //
// AD_CS P3.0 STE0 //
////////////////////////////////////////////////////////////////
#include <msp430x14x.h>
#include "adc.h"
#define ADC_DIR P3DIR
#define ADC_IN P3IN
#define ADC_OUT P3OUT
#define ADC_CLK BIT3
#define ADC_DOUT BIT2
#define ADC_DIN BIT1
#define ADC_CS BIT0
#define ADC_CLK_HI P3OUT |= BIT3
#define ADC_CLK_LO P3OUT &= ~BIT3
#define ADC_DIN_HI P3OUT |= BIT1
#define ADC_DIN_LO P3OUT &= ~BIT1
#define ADC_CS_HI P3OUT |= BIT0
#define ADC_CS_LO P3OUT &= BIT0
#define ADC_CH0 0X18
#define ADC_CH1 0X19
#define ADC_CH2 0X1A
#define ADC_CH3 0X1B
#define ADC_CH4 0X1C
#define ADC_CH5 0X1D
#define ADC_CH6 0X1E
#define ADC_CH7 0X1F
///////////////////////////////////////////////////
// 名称:Adc_Delay
// 功能:adc延时
// 输入:null
// 输出:null
// 返回:null
///////////////////////////////////////////////////
void Adc_Delay(unsigned char i)
{
unsigned char j;
for(j=0;j<i;j++)
_NOP();
}
///////////////////////////////////////////////////
// 名称:Adc_Init
// 功能:初始化
// 输入:null
// 输出:null
// 返回:null
///////////////////////////////////////////////////
void Adc_Init(void)
{
P3OUT |= 0X0F;
P3DIR |= 0X0B;
}
///////////////////////////////////////////////////
// 名称:Adc_Read
// 功能:读取第n通道的采样结果
// 输入:通道号
// 输出:12位采样结果
// 返回:null
///////////////////////////////////////////////////
unsigned int Adc_Read(unsigned char channel)
{
unsigned char write_byte;
unsigned char adc_result;
unsigned char tempi;
write_byte = 0x18;
write_byte |= channel;
ADC_CLK_LO;
ADC_CS_LO;
ADC_DIN_HI;
ADC_CLK_LO;
for(tempi=0;tempi<5;tempi++)
{
ADC_CLK_LO;
_NOP();
if((write_byte & 0x10) == 0)
ADC_DIN_LO;
else
ADC_DIN_HI;
write_byte = write_byte << 1;
ADC_CLK_HI;
_NOP();
}
adc_result = 0;
_NOP();
_NOP();
for(tempi=0;tempi<15;tempi++)
{
adc_result = adc_result << 1;
ADC_CLK_HI;
_NOP();
if(ADC_IN & ADC_DOUT)
adc_result |= 0x0001;
else
adc_result &= 0xfffe;
ADC_CLK_LO;
_NOP();
ADC_CS_HI;
_NOP();
}
adc_result &= 0x0fff;
return adc_result;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -