找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机中断函数程序调试的问题

查看数: 2137 | 评论数: 7 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-12-1 09:05

正文摘要:

改过外部中断优先以后,外部中断是可以执行,但是一松开按键,主程序还是不运行,好像又在运行定时中断了。问题在于虽然我把定时中断1改成定时中断0,但是我没有设置定时器0的初始化,也没有开通定时器0, ...

回复

ID:450037 发表于 2021-12-1 14:32
188610329 发表于 2021-12-1 14:05
定时器2 中断需要手动清除中断标志,
中断中需要加入:
TF2 = 0;

大侠,收下我的膝盖吧!(
我加了个TF2=0,就可以完美的运行了。一切正常。这样定时器1与定时器2就完美地切换过来了。
谢谢你!
你是不是对C8051F020单片机很熟悉啊,我提的问题你基本上都能解决,老厉害了。
ID:624769 发表于 2021-12-1 14:05
定时器2 中断需要手动清除中断标志,
中断中需要加入:
TF2 = 0;

定时器2自动重载需要 设置 RCAP2L , RCAP2H 那么它就会自动重载,
所以,如果你的重装值是要变化的话,一般需要 把下一次的T2重装值提前写入RCAP2L , RCAP2H 让他自动重装,如果你要每次直接改写 TL2 TH2 的话, 需要先 TR2 = 0, 然后 改写TL2 TH2 之后再 TR2 = 1,
另外, TR2 必须独立驱动(TR2 = 1), 不能通过 T2CON |= 0x04 来启动, 原因不知道,也许是设计缺陷。

最后,其实你也不知道你到底是跑飞还是其他什么情况。
个人建议你确定一下 DATA_OUT() 这个函数, 看你的定时设置应该是 0.5毫秒 或者 1毫秒, 你这个DATA_OUT() 需要跑多久? 时间久的话,程序被卡死就是必然的了。
ID:450037 发表于 2021-12-1 13:17
npn 发表于 2021-12-1 10:17
定时器1溢出后TF1会被硬件置1,中断触发后又被硬件清0,如果只开计数,不开中断,就需要软件清0。
中断 ...

是的,我现在知道是什么原因了。
ID:450037 发表于 2021-12-1 13:12
lkc8210 发表于 2021-12-1 10:09
你没有设置定时器0的初始化,也没有开通定时器0
但是你有设置定时器1的初始化和开通定时器1啊~
而且你还 ...

哦哦,果然高手再论坛里。四个字:醍醐灌顶
ID:57657 发表于 2021-12-1 10:17
lkc8210 发表于 2021-12-1 10:09
你没有设置定时器0的初始化,也没有开通定时器0
但是你有设置定时器1的初始化和开通定时器1啊~
而且你还 ...

定时器1溢出后TF1会被硬件置1,中断触发后又被硬件清0,如果只开计数,不开中断,就需要软件清0。
中断触发后会跳转到相应的向量地址,没有 interrupt 3 的中断入口函数就会导致程序跑飞。
ID:161164 发表于 2021-12-1 10:09
你没有设置定时器0的初始化,也没有开通定时器0
但是你有设置定时器1的初始化和开通定时器1啊~
而且你还取消了定时器1的中断函数
当单片机产生定时器1的中断时
没有中断函数响应
没有清零TF1
单片机就会当机了

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表