| 看着评论我也收获不少 |
电子浪人 发表于 2021-12-14 18:58 但是你的代码给我很大的启发,非常感谢 |
lkc8210 发表于 2021-12-14 13:15 我一个按键是外部中断控制LED,一个按键是定时器中断控制数码管,怎么还会是只有一个呢 |
|
1.审题要小心,评分标准4的要求是Led和数码管都要用中断,你现在只用了一个中断 2.你这系统对按键中断的要求不高,可以不用消抖 3.要求没写是正计时还是倒记时,但写了要保持N,所以正计时更方便写代码 4.如果你"想出跟别人不太一样的方法"来达到题目要求可以让代码更简洁易读,欢迎使用,但如果让代码更累赘难懂,就是画蛇添足
|
| 需要改进的就是, 中断里面只做两件事, 一,就是计数 二,就是置位标志。 其他的事情统统在主程序里面通过if(cnt2==1) 也好, 通过 if(flag2)也好进行判断后,选择性的执行。 |
电子浪人 发表于 2021-12-13 13:27 后续想重新倒计时的时候 再 ET0 = 1 啊 |
| 你想用while停在这也不是非得用while(1),你可以整个while(key2==0){...};这样再次按键的时候就跳出去了,但是这样你得在前面做一个按键的松手检测 |
188610329 发表于 2021-12-12 22:38 这里的定时器中断我是来处理流水灯和数码管的倒计时可能代码有点多,ET0 = 0,确实可让数码管停在数字4上,但是后续我如果想再按下去数码管重新倒计时该咋办呢 |
|
1) 既然你知道问题在 while(1) 上面,为什么你还要用 while(1)? 2) 你把中断当什么了? 我还真没见过主程序比中断还要简洁的代码。 3) 我实在看不出来 你定时器里面 while(1)的必要, 你既然判断了 >4 那么你直接关了 ET0 不就好了 有必要 去while(1) 死在那里么? |
| 这个难点就在于,这个定时器中断里有一个while循环,这个循环是为了保证数码管在倒计时结束之后能够保持住数字“4”,但是也就是因为这个while,导致我再一次按下按键时候,按键无法反映,我不知道该怎么办 |