![]() |
看著評論我也收獲不少 |
電子浪人 發(fā)表于 2021-12-14 18:58 但是你的代碼給我很大的啟發(fā),非常感謝 |
lkc8210 發(fā)表于 2021-12-14 13:15 我一個按鍵是外部中斷控制LED,一個按鍵是定時器中斷控制數(shù)碼管,怎么還會是只有一個呢 |
1.審題要小心,評分標(biāo)準(zhǔn)4的要求是Led和數(shù)碼管都要用中斷,你現(xiàn)在只用了一個中斷 2.你這系統(tǒng)對按鍵中斷的要求不高,可以不用消抖 3.要求沒寫是正計時還是倒記時,但寫了要保持N,所以正計時更方便寫代碼 4.如果你"想出跟別人不太一樣的方法"來達到題目要求可以讓代碼更簡潔易讀,歡迎使用,但如果讓代碼更累贅難懂,就是畫蛇添足 ![]() ![]() ![]() |
需要改進的就是, 中斷里面只做兩件事, 一,就是計數(shù) 二,就是置位標(biāo)志。 其他的事情統(tǒng)統(tǒng)在主程序里面通過if(cnt2==1) 也好, 通過 if(flag2)也好進行判斷后,選擇性的執(zhí)行。 |
電子浪人 發(fā)表于 2021-12-13 13:27 后續(xù)想重新倒計時的時候 再 ET0 = 1 啊 |
你想用while停在這也不是非得用while(1),你可以整個while(key2==0){...};這樣再次按鍵的時候就跳出去了,但是這樣你得在前面做一個按鍵的松手檢測 |
188610329 發(fā)表于 2021-12-12 22:38 這里的定時器中斷我是來處理流水燈和數(shù)碼管的倒計時可能代碼有點多,ET0 = 0,確實可讓數(shù)碼管停在數(shù)字4上,但是后續(xù)我如果想再按下去數(shù)碼管重新倒計時該咋辦呢 |
1) 既然你知道問題在 while(1) 上面,為什么你還要用 while(1)? 2) 你把中斷當(dāng)什么了? 我還真沒見過主程序比中斷還要簡潔的代碼。 3) 我實在看不出來 你定時器里面 while(1)的必要, 你既然判斷了 >4 那么你直接關(guān)了 ET0 不就好了 有必要 去while(1) 死在那里么? |
這個難點就在于,這個定時器中斷里有一個while循環(huán),這個循環(huán)是為了保證數(shù)碼管在倒計時結(jié)束之后能夠保持住數(shù)字“4”,但是也就是因為這個while,導(dǎo)致我再一次按下按鍵時候,按鍵無法反映,我不知道該怎么辦 |
Powered by 單片機教程網(wǎng)