[国产单片机] 单片机中断问题

[复制链接]
1379|15
 楼主| bright世界 发表于 2016-9-11 14:07 | 显示全部楼层 |阅读模式
请教:在使用合泰芯片的定时器中断时候,当把bit_LED放到中断中直接去点亮则亮,当把它放到中断计时20ms到了的if语句中则一直都不会亮,貌似中断只能进去一次,初始化的参数设置应该没有问题,如图片程序,求分析可能是什么原因导致的,有没有可能是硬件原因?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
NE5532 发表于 2016-9-11 16:29 | 显示全部楼层
你把“亮”改成“翻转”,很快就能找到问题了。
皈依 发表于 2016-9-11 16:52 | 显示全部楼层
楼上说的有道理~哈哈 都没问题,是想的和写的没对上
 楼主| bright世界 发表于 2016-9-11 19:09 | 显示全部楼层
NE5532 发表于 2016-9-11 16:29
你把“亮”改成“翻转”,很快就能找到问题了。

额,没太看明白。亮改成翻转?是让我改成方波驱动么?
phphhhncn 发表于 2016-9-11 23:48 来自手机 | 显示全部楼层
 楼主| bright世界 发表于 2016-9-12 08:38 | 显示全部楼层

可是我的硬件原理图上就是用高电平去驱动8050然后点亮LED的。取反原理上不合逻辑。。。
NE5532 发表于 2016-9-12 08:48 | 显示全部楼层
那我给楼主翻译一下,看看楼主能看明白不:

楼主早上出门,对着天喊了一声“太阳出来”,看到天亮了,就认为自己是上帝,喊太阳出来,太阳就出来了。你再马上喊月亮出来看看呢?
NE5532 发表于 2016-9-12 08:49 | 显示全部楼层
另外请阅读“程序调试黑宝书”,在本版精华帖里找,你的这个问题将作为我新课程的例子使用,欢迎到时候品鉴。
jackhwang 发表于 2016-9-12 09:42 | 显示全部楼层
LZ,楼上的大神让你由“亮”改为“取反”的意思是:中断进来一次,控制LED的IO高低电平翻转。测试情况如果是你的LED灯亮灭,那就说明你的中断是正常的。
 楼主| bright世界 发表于 2016-9-12 09:59 | 显示全部楼层
jackhwang 发表于 2016-9-12 09:42
LZ,楼上的大神让你由“亮”改为“取反”的意思是:中断进来一次,控制LED的IO高低电平翻转。测试情况如果 ...

嗷嗷,这么说明白了,我这就去试一下
gszou 发表于 2016-9-12 10:02 | 显示全部楼层
楼主,你那些计数变量是什么类型的?有初始化没有?不防把 if(xx == yy) 的语句改为 if( xx >= yy) 试试。
gszou 发表于 2016-9-12 10:07 | 显示全部楼层
另外,time_20ms这是个标置吧,怎只有置1,而没有清0的呢?那中断进一次后,后面的中断还有意义么?
 楼主| bright世界 发表于 2016-9-12 10:17 | 显示全部楼层
gszou 发表于 2016-9-12 10:07
另外,time_20ms这是个标置吧,怎只有置1,而没有清0的呢?那中断进一次后,后面的中断还有意义么? ...

嗯嗯,这个主程序中是忘记清零了,我那些计数变量是根据其实际大小而定的整形或字符型,在头文件中已经定义。
 楼主| bright世界 发表于 2016-9-13 17:16 | 显示全部楼层
jackhwang 发表于 2016-9-12 09:42
LZ,楼上的大神让你由“亮”改为“取反”的意思是:中断进来一次,控制LED的IO高低电平翻转。测试情况如果 ...

终于找到问题了,原来是芯片本身原因,换了一个新的芯片之后就可以正常使用啦
 楼主| bright世界 发表于 2016-9-13 17:16 | 显示全部楼层
NE5532 发表于 2016-9-11 16:29
你把“亮”改成“翻转”,很快就能找到问题了。

不过,感谢提供找bug的思路,谢谢!
IQ110 发表于 2016-10-25 16:33 | 显示全部楼层
首先,先确认中断标志位是否清零,正常c语言会自动清零,这个没问题但最好确认一下。
其次,if(time_20ms==1)这个条件使用后需要time_20ms=0,否则会一直进入if(time_20ms==1)执行。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

27

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部