找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机计时系统程序调试,有一些细节我不太会,希望大家能帮忙

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

正文摘要:

这是我的要求

回复

ID:994053 发表于 2021-12-24 14:03
看着评论我也收获不少
ID:966442 发表于 2021-12-14 19:51
电子浪人 发表于 2021-12-14 18:58
我一个按键是外部中断控制LED,一个按键是定时器中断控制数码管,怎么还会是只有一个呢

但是你的代码给我很大的启发,非常感谢
ID:966442 发表于 2021-12-14 18:58
lkc8210 发表于 2021-12-14 13:15
1.审题要小心,评分标准4的要求是Led和数码管都要用中断,你现在只用了一个中断
2.你这系统对按键中断的要 ...

我一个按键是外部中断控制LED,一个按键是定时器中断控制数码管,怎么还会是只有一个呢
ID:161164 发表于 2021-12-14 13:15
1.审题要小心,评分标准4的要求是Led和数码管都要用中断,你现在只用了一个中断
2.你这系统对按键中断的要求不高,可以不用消抖
3.要求没写是正计时还是倒记时,但写了要保持N,所以正计时更方便写代码
4.如果你"想出跟别人不太一样的方法"来达到题目要求可以让代码更简洁易读,欢迎使用,但如果让代码更累赘难懂,就是画蛇添足





ID:624769 发表于 2021-12-13 23:11
需要改进的就是, 中断里面只做两件事, 一,就是计数 二,就是置位标志。 其他的事情统统在主程序里面通过if(cnt2==1)  也好, 通过 if(flag2)也好进行判断后,选择性的执行。
ID:624769 发表于 2021-12-13 19:18
电子浪人 发表于 2021-12-13 13:27
这里的定时器中断我是来处理流水灯和数码管的倒计时可能代码有点多,ET0 = 0,确实可让数码管停在数字4上 ...

后续想重新倒计时的时候 再 ET0 = 1 啊
ID:843335 发表于 2021-12-13 15:47
你想用while停在这也不是非得用while(1),你可以整个while(key2==0){...};这样再次按键的时候就跳出去了,但是这样你得在前面做一个按键的松手检测
ID:966442 发表于 2021-12-13 13:27
188610329 发表于 2021-12-12 22:38
1)  既然你知道问题在 while(1)  上面,为什么你还要用 while(1)?
2)  你把中断当什么了? 我还真没见过主 ...

这里的定时器中断我是来处理流水灯和数码管的倒计时可能代码有点多,ET0 = 0,确实可让数码管停在数字4上,但是后续我如果想再按下去数码管重新倒计时该咋办呢
ID:624769 发表于 2021-12-12 22:38
1)  既然你知道问题在 while(1)  上面,为什么你还要用 while(1)?
2)  你把中断当什么了? 我还真没见过主程序比中断还要简洁的代码。
3)  我实在看不出来 你定时器里面 while(1)的必要, 你既然判断了 >4  那么你直接关了 ET0 不就好了 有必要 去while(1) 死在那里么?
ID:966442 发表于 2021-12-12 20:32
这个难点就在于,这个定时器中断里有一个while循环,这个循环是为了保证数码管在倒计时结束之后能够保持住数字“4”,但是也就是因为这个while,导致我再一次按下按键时候,按键无法反映,我不知道该怎么办

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

Powered by 单片机教程网

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