MAX531问题
时间:10-02
整理:3721RD
点击:
程序如下:
#include <msp430x16x.h>
#define uchar unsigned char
#define uint unsigned int
#define MAX531_IO P3DIR |= 0xF0
#define CS_H P3OUT|=BIT7
#define CS_L P3OUT&=~BIT7
#define SCLK_H P3OUT|=BIT6
#define SCLK_L P3OUT&=~BIT6
#define DIN_H P3OUT|=BIT5
#define DIN_L P3OUT&=~BIT5
//**************************************************************************
void InitSys()
{
uchar i;
BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器
do
{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振
}
/*******************************************************************/
void DelayNus(uint n)
{
uint i;
for(i=0;i<n;i++)
{
_NOP();
_NOP();
_NOP();
_NOP();
}
}
/**************************************************************************/
void DA_sendbyte(uint dat)
{
MAX531_IO;
uint ch;
uchar n=16;
ch=dat;
CS_H ;
DelayNus(20);
CS_L;
SCLK_L;
while(n--) //发送16位,可改变了N
{
if((ch&0x8000)==0x8000) DIN_H; //若发送的数据最高位为1,则发送1
else DIN_L; //否则发送0
DelayNus(20);
SCLK_L;
DelayNus(20);
SCLK_H;
ch=ch<<1;//数据左移一位
}
DelayNus(20);
CS_H;
}
/*******************************************************/
void da_init()
{
CS_H ;
SCLK_H;
}
/************************************************************************/
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
InitSys();
da_init();
DA_sendbyte(0x07ff);
while(1);
}
经调试后得不到输出电压 求解释 谢谢各位了
#include <msp430x16x.h>
#define uchar unsigned char
#define uint unsigned int
#define MAX531_IO P3DIR |= 0xF0
#define CS_H P3OUT|=BIT7
#define CS_L P3OUT&=~BIT7
#define SCLK_H P3OUT|=BIT6
#define SCLK_L P3OUT&=~BIT6
#define DIN_H P3OUT|=BIT5
#define DIN_L P3OUT&=~BIT5
//**************************************************************************
void InitSys()
{
uchar i;
BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器
do
{
IFG1 &= ~OFIFG; //清除晶振失败标志
for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振
}
while ((IFG1 & OFIFG)); //晶振失效标志仍然存在?
BCSCTL2 |= SELM_2 + SELS; //MCLK和SMCLK选择高频晶振
}
/*******************************************************************/
void DelayNus(uint n)
{
uint i;
for(i=0;i<n;i++)
{
_NOP();
_NOP();
_NOP();
_NOP();
}
}
/**************************************************************************/
void DA_sendbyte(uint dat)
{
MAX531_IO;
uint ch;
uchar n=16;
ch=dat;
CS_H ;
DelayNus(20);
CS_L;
SCLK_L;
while(n--) //发送16位,可改变了N
{
if((ch&0x8000)==0x8000) DIN_H; //若发送的数据最高位为1,则发送1
else DIN_L; //否则发送0
DelayNus(20);
SCLK_L;
DelayNus(20);
SCLK_H;
ch=ch<<1;//数据左移一位
}
DelayNus(20);
CS_H;
}
/*******************************************************/
void da_init()
{
CS_H ;
SCLK_H;
}
/************************************************************************/
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Stop watchdog timer
InitSys();
da_init();
DA_sendbyte(0x07ff);
while(1);
}
经调试后得不到输出电压 求解释 谢谢各位了