其中CCTIMER1,CCTIMER2是可以手动清除的,也就意味你可以在执行代码的前后加入断点,执行前清空该计数器,代码跑完看该计数器的值,即是该段代码执行的CPU时钟个数。
具体时间的计算:CPU时钟个数 X 单个时钟周期
另外,CCSTEP会对CPU执行的每一条指令进行计数。
不知道你能不能仿真,要是能仿真其实很简单就解决了啊。(我用的不是149,不是很确定是不是一样的)放个断点在进中断第一句话,如果能进,说明初始化没问题,如果不能进,说明初始化有问题(大概看了下你程序,初始化加一句P1IFG &= ~BIT0吧,也不一定是这个问题)。
上一步没问题了,再放个断点在标志位判断那个括弧里,就是if(P1IFG &BIT0)这句后边。如果进不了,那就是这里的问题,我一般是这样写的(芯片不一样哦):
//*****************************************************************************
#pragma vector=PORT1_VECTOR
__interrupt void PORT1_RST(void)
{
__delay_cycles(2000)
switch(__even_in_range(P1IV, 16))
{
case 0: break
case 2:// P1.0 IFG
{
…………刚删除掉的
}
break
…………刚删除掉的
case 12: break// P1.5 IFG
case 14: break// P1.6 IFG
case 16: break// P1.7 IFG
default: break
}
P1IFG = 0x00
}
另外while(1)里边那个延时还是去掉吧,你这样问题很大,按键按快了的话一直都执行不到P2OUT&=~BIT6吧,执行到的话灯也亮了8至16秒的任一时间了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)