代码附上如下: #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); } }
此帖出自
小平头技术问答
一周热门 更多>