单片机外部中断0和外部中断1
答案:2 悬赏:70 手机版
解决时间 2021-12-03 13:45
- 提问者网友:人傍凄凉立暮秋
- 2021-12-02 13:16
单片机外部中断0和外部中断1
最佳答案
- 五星知识达人网友:一把行者刀
- 2021-12-02 13:43
不知你 time2 是否有用
EW_FREE_SN_FREE();执行一次要多长时间?若时间很短的话,有可能一直执行下去,因你不断地把 time1清0,time1<10永远满足 若时间较长的话,执行一次 EW_FREE_SN_FREE()后发现 不仅time1>10 而且 time1>20, 所以EW_FREE_SN_NOR()执行不了,但你说的中断次数为11,再次偱环 到else if(time1<20)时 EW_FREE_SN_NOR()应该可执行1次
EW_FREE_SN_NOR()执行时间不超过10次中断的话,又回到 if(time1<10)而执行 EW_FREE_SN_FREE(); 这也许是你想要和结果
若EW_FREE_SN_NOR()执行时间超过10次不超过20次中断的话,程序在此此反复执行
若EW_FREE_SN_NOR()执行时间超过20次中断的话,程序跑飞,两条语句都不执行,我也不知当time1溢出后它会不会回来
若EW_FREE_SN_FREE()和EW_FREE_SN_NOR()两条语句占用时间不是定值的话,执行情况就更复杂了追问EW_FREE_SN_FREE()是26+26=54s
EW_FREE_SN_NOR()是26+52=78s
要怎么修改啊追答我不知中断一次是多少S?假设是5S 的话
去掉第1个time1=0
while(1)
{ if(time1<10)
{
EW_FREE_SN_FREE();
}
if(((time1>10)&&(time1>25))
{
time1=0;
EW_FREE_SN_NOR();
}
}
这样实际成了顺序执行,要if语句已无作用
while(time1<26)
{
EW_FREE_SN_FREE();
EW_FREE_SN_NOR();
time1=0;
}
不知你程序其它部分,单看这部分推测的,用了那么多中断, 不知冲突否?
EW_FREE_SN_FREE();执行一次要多长时间?若时间很短的话,有可能一直执行下去,因你不断地把 time1清0,time1<10永远满足 若时间较长的话,执行一次 EW_FREE_SN_FREE()后发现 不仅time1>10 而且 time1>20, 所以EW_FREE_SN_NOR()执行不了,但你说的中断次数为11,再次偱环 到else if(time1<20)时 EW_FREE_SN_NOR()应该可执行1次
EW_FREE_SN_NOR()执行时间不超过10次中断的话,又回到 if(time1<10)而执行 EW_FREE_SN_FREE(); 这也许是你想要和结果
若EW_FREE_SN_NOR()执行时间超过10次不超过20次中断的话,程序在此此反复执行
若EW_FREE_SN_NOR()执行时间超过20次中断的话,程序跑飞,两条语句都不执行,我也不知当time1溢出后它会不会回来
若EW_FREE_SN_FREE()和EW_FREE_SN_NOR()两条语句占用时间不是定值的话,执行情况就更复杂了追问EW_FREE_SN_FREE()是26+26=54s
EW_FREE_SN_NOR()是26+52=78s
要怎么修改啊追答我不知中断一次是多少S?假设是5S 的话
去掉第1个time1=0
while(1)
{ if(time1<10)
{
EW_FREE_SN_FREE();
}
if(((time1>10)&&(time1>25))
{
time1=0;
EW_FREE_SN_NOR();
}
}
这样实际成了顺序执行,要if语句已无作用
while(time1<26)
{
EW_FREE_SN_FREE();
EW_FREE_SN_NOR();
time1=0;
}
不知你程序其它部分,单看这部分推测的,用了那么多中断, 不知冲突否?
全部回答
- 1楼网友:大漠
- 2021-12-02 14:01
你想要的结果是不是应该要把While(1)中的第一个Time1=0去掉。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯