void main(void)
{
WDTCTL=WDTPW+WDTHOLD;// 禁止看门狗定时器
// 设置系统时钟,使用外接晶振 :8MHz,使单片机的时钟源设为 XT2//
BCSCTL1 &=~XT2OFF;//首先打开外部晶体振荡器。也就是XT2OFF清零。
do
{ IFG1 &=~OFIFG;//清除晶体振荡器失效标志OFIFG
for(i=0xFF;i>0;i--); //等待50us等待晶体振荡器正常工作
}
while((IFG1 & OFIFG)!=0);//等OFIFG等于0的时候结束,说明晶体振荡器正常工作了
BCSCTL2=SELM_2+SELS; //选择MCLK、SMCLK为XT2
//初始化端口//
P6DIR |= BIT2;P6OUT |= BIT2; //关闭电平转换
Set_IO(); //设置IIC端口
P1DIR|=BIT0+BIT1;
//设置Timer_a//
TACTL =TASSEL1+TACLR;// 选择SMLK为时钟,定时器清除
//TACTL |=TASSEL1+TACLR;// 选择SMLK为时钟,定时器清除
CCTL0=CCIE;
TACCR0=32;
_EINT(); //中断允许
TACTL |=MC0;//选择up,16位模式
}
//Timer_A中断服务子程序
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
SampleTimes=(SampleTimes+1)%100;
DAC_Val=SinTable[SampleTimes];
Write_DAC(DAC_Val); //写入DAC
} |