📄 0832.c
字号:
#include <msp430x16x.h>
#include "0832.h"
unsigned char adc0832(unsigned char channel,unsigned char* data)
{
unsigned char i=0, temp=0;
unsigned char datamsb=0, datalsb=0;
if(channel == 0) channel=2;
if(channel == 1) channel=3;
DataDir |= (CS+DI+CLK);
SET_DI; //启动信号
_NOP();
_NOP();
_NOP();
CLR_CS; //拉低CS端
_NOP();
_NOP();
_NOP();
SET_CLK; //拉高CLK端
_NOP();
_NOP();
_NOP();
CLR_CLK; //拉低CLK端,形成下降沿1
_NOP();
_NOP();
_NOP();
SET_CLK; //拉高CLK端
if(channel & 0x01)
SET_DI;
else
CLR_DI;
_NOP();
_NOP();
_NOP();
//SET_CLK; //拉高CLK端
//_NOP();
//_NOP();
CLR_CLK; //拉低CLK端,形成下降沿2
_NOP();
_NOP();
_NOP();
SET_CLK; //拉高CLK端
if(channel & 0x02)
SET_DI;
else
CLR_DI;
_NOP();
_NOP();
_NOP();
//SET_CLK; //拉高CLK端
//_NOP();
//_NOP();
CLR_CLK; //拉低CLK端,形成下降沿3
SET_DI; //控制命令结束
_NOP();
_NOP();
_NOP();
DataDir &= ~DO;
for(i=0;i<8;i++)
{
SET_CLK; //拉高CLK端
_NOP();
_NOP();
_NOP();
CLR_CLK; //拉低CLK端,形成下降沿
_NOP();
_NOP();
_NOP();
if(DataIn & DO)
temp=1;
else
temp=0;
datamsb |= (temp <<(7-i));
}
for(i=0;i<8;i++)
{
if(DataIn & DO)
temp=1;
else
temp=0;
datalsb |= (temp<<i);
SET_CLK; //拉高CLK端
_NOP();
_NOP();
_NOP();
CLR_CLK; //拉低CLK端,形成下降沿
_NOP();
_NOP();
_NOP();
}
SET_CS; //拉高cs
//SET_CLK;
if(datamsb == datalsb)
{
*data = datalsb;
return 1;
}
else
return 0;
}
void main(void)
{
unsigned char result=0, data=0;
unsigned int iq0;
WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 &= ~XT2OFF;
do
{
IFG1 &= ~OFIFG;
for (iq0 = 0xFF; iq0 > 0; iq0--);
}
while ((IFG1 & OFIFG) != 0);
BCSCTL2 =SELM_2+SELS;
do
result = adc0832(0,&data);
while(result !=1);
LPM3;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -