代码附上如下: #include //************************************************************************* // 系统时钟初始化 //************************************************************************* void Clock_Init(void) { uchar i; BCSCTL1&=~XT2OFF; //打开XT振荡器 do{ IFG1&=~OFIFG; //清除震荡标志 for(i=0;i<100;i++) _NOP(); //延时等待 } while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待 IFG1&=~OFIFG; BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ } //************************************************************************* // MSP430内部看门狗初始化 //************************************************************************* void WDT_Init(void) { WDTCTL = WDTPW + WDTHOLD; //关闭看门狗 } //************************************************************************* // 初始化IO口子程序 //************************************************************************* void Port_init(void) { P1SEL = 0x00; //P1普通IO功能 P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻 P3SEL = 0x00; //设置IO口为普通I/O模式 P3DIR = 0xFF; //设置IO口方向为输出 P6SEL |= BIT6; P6DIR |= BIT6; //初始设置为00 } void DAC12Init(void) { //校验DAC DAC12_0CTL |= DAC12CALON; //启动校验DAC while((DAC12_0CTL & DAC12CALON) != 0){_NOP();}//等待校验完成 //控制寄存器设置 //选择输入缓冲器中速中电流,输出缓冲器中速中电流,12DAC,输出为内基准,自动更新数据 DAC12_0CTL = DAC12AMP_5 + DAC12IR + DAC12LSEL_0; DAC12_0CTL |= DAC12SREF_0; DAC12_0CTL |= DAC12ENC; //启动DAC模块(DAC12SEL_0可省) DAC12_0DAT = 0X0000;//初始化电压 } //************************************************************************* // 主程序 //************************************************************************* void main(void) { WDT_Init(); //看门狗设置 Clock_Init(); //系统时钟设置 Port_init(); DAC12Init(); while(1) { DAC12_0DAT = 0X0666; // delay_ms(100); } }
此帖出自
小平头技术问答
#include <msp430x16x.h>
//*************************************************************************
// 系统时钟初始化
//*************************************************************************
void Clock_Init(void)
{
uchar i;
BCSCTL1&=~XT2OFF; //打开XT振荡器
do{
IFG1&=~OFIFG; //清除震荡标志
for(i=0;i<100;i++)
_NOP(); //延时等待
}
while((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待
IFG1&=~OFIFG;
BCSCTL2|=SELM1+SELS; //MCLK为8MHZ,SMCLK为8MHZ
}
//*************************************************************************
// MSP430内部看门狗初始化
//*************************************************************************
void WDT_Init(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
}
//*************************************************************************
// 初始化IO口子程序
//*************************************************************************
void Port_init(void)
{
P1SEL = 0x00; //P1普通IO功能
P1DIR = 0xF0; //P10~P13输入模式,外部电路已接上拉电阻
P3SEL = 0x00; //设置IO口为普通I/O模式
P3DIR = 0xFF; //设置IO口方向为输出
P6SEL |= BIT6;
P6DIR |= BIT6; //初始设置为00
}
void DAC12Init(void)
{
//校验DAC
DAC12_0CTL |= DAC12CALON; //启动校验DAC
while((DAC12_0CTL & DAC12CALON) != 0){_NOP();}//等待校验完成
//控制寄存器设置
//选择输入缓冲器中速中电流,输出缓冲器中速中电流,12DAC,输出为内基准,自动更新数据
DAC12_0CTL = DAC12AMP_5 + DAC12IR + DAC12LSEL_0;
DAC12_0CTL |= DAC12SREF_0;
DAC12_0CTL |= DAC12ENC; //启动DAC模块(DAC12SEL_0可省)
DAC12_0DAT = 0X0000;//初始化电压
}
//*************************************************************************
// 主程序
//*************************************************************************
void main(void)
{
WDT_Init(); //看门狗设置
Clock_Init(); //系统时钟设置
Port_init();
DAC12Init();
while(1)
{
DAC12_0DAT = 0X0666;
// delay_ms(100);
}
}
一周热门 更多>