基本定时器0.064ms中断一次,在ISR中将标志位加1,在main()中循环检测该标志位的值,当标志位等于特定的一些值(值1,值2,值3,值4,值5)时去执行不同的函数
#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer_ISR(void)
{
if (bt_flag < 65535)
bt_flag += 1;
if (bt_flag == 65535)
IE2 &= ~BTIE;
}
main()
{
while(1)
{
if (bt_flag == 值1)
F_D4 ();
else if (bt_flag == 值2,值3,值4)
F_DA();
else if(bt_flag ==植5)
subnetwork_judgment();
else ;
}
}
那位大侠能指点一下这个思路的可行性,以及注意点!
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
请问那能不能提供一个好的思路呢?
这个可能和编译环境或者CPU的硬件有点关系吧?有些单片机好像是用 switch case的效率比if else低。
哪位能举个例子详细分析对比一下if else 和 switch case的效率性能在msp430和其它公司类型单片机上?
另外楼主的代码是否应该加上volatile?
[ 本帖最后由 wangfuchong 于 2011-12-17 09:45 编辑 ]尤其是九楼的回复和提问,我也想知道有没有更好的思路!
另外给出我同一个帖子在21ic上链接,希望能给大家带来一点启发!
http://bbs.21ic.com/viewthread.p ... p;extra=&page=1
一周热门 更多>