void Init_Port(void){ WDTCTL=WDTPW+WDTHOLD; //关闭看门狗 P1DIR=0; //P1端口,0,1,2,3输入,4,5,6,7输出 P1SEL=0; //P1端口管脚设置为一般I/O口 P1DIR |=BIT4+BIT5+BIT6+BIT7; P1OUT=0; //------------------------------------------------------------ // 时钟频率设置 //------------------------------------------------------------ BCSCTL1 = CALBC1_8MHZ; //CPU工作在8MHz BCSCTL1 |=DIVA_3; //ACLK进行8分频 DCOCTL = CALDCO_8MHZ; //
TACTL|=TASSEL_1+TACLR; //ACKL为时钟源(32.768K) TACCR0=24575; //定时6s TACTL |=MC_1; //增计数 TACCTL0 |= CCIE; _EINT(); //------------------------------------------------------------ // 数码管 //------------------------------------------------------------ P2DIR=0xff; //P2口为输出方式 P2SEL = 0; //p2口所有管脚设置为一般I/0口 P2OUT=0;
//------------------------------------------------------------ // 键盘中断响应设置 //------------------------------------------------------------ P1IE=0; //中断寄存器清零 P1IES=0; P1IE |=BIT0+BIT1+BIT2+BIT3; //打开管脚中断 P1IES |=BIT0+BIT1+BIT2+BIT3; //下降沿中断 P1IFG=0;
return;}以上是初始化程序,定时器的程序没有写错吧?为什么运行后TAR始终是0呢?(晶振工作正常,同一开发板在其他程序下可以用ACLK完成6S定时,唯独这段代码不对)小白跪求指点
此帖出自
小平头技术问答
按这个顺序
TACCR0=24575; //定时6s
TACTL |=MC_1; //增计数
TACCTL0 |= CCIE;
TACTL|=TASSEL_1+TACLR; //ACKL为时钟源(32.768K)
一周热门 更多>