欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 單片機計時系統(tǒng)程序調(diào)試,有一些細(xì)節(jié)我不太會,希望大家能幫忙 [打印本頁]

作者: 電子浪人    時間: 2021-12-11 19:45
標(biāo)題: 單片機計時系統(tǒng)程序調(diào)試,有一些細(xì)節(jié)我不太會,希望大家能幫忙
這是我的要求
這是我畫的仿真圖 P1.3控制數(shù)碼管(用的是定時器中斷判斷按鍵是否按下),P3.2控制LED流水燈(用的是觸發(fā)外部中斷的方法)
我現(xiàn)在的代碼可以讓流水燈流4次,數(shù)碼管能夠倒計時,并且倒計時結(jié)束后可以停在數(shù)字“4”上,但是我發(fā)現(xiàn)倒計時的時間誤差有點大,當(dāng)我P1.3的按鍵按下的時候發(fā)現(xiàn)從4到3的時間有點長,這個4要等挺久才能達(dá)到3,后面才比較正常的倒計時,我感到很迷惑,還有的話,就是后續(xù)的要求,我實在是想不出有什么比較好的方法(最好能不要用到軟件延時),希望大家能給我這個萌新一點思路,或者我的代碼有什么需要改進的地方或者其他地方也可以提出來,感謝大家的幫助
以下是我的代碼圖
2.rar (70.88 KB, 下載次數(shù): 5)



作者: 電子浪人    時間: 2021-12-12 20:32
這個難點就在于,這個定時器中斷里有一個while循環(huán),這個循環(huán)是為了保證數(shù)碼管在倒計時結(jié)束之后能夠保持住數(shù)字“4”,但是也就是因為這個while,導(dǎo)致我再一次按下按鍵時候,按鍵無法反映,我不知道該怎么辦
作者: 188610329    時間: 2021-12-12 22:38
1)  既然你知道問題在 while(1)  上面,為什么你還要用 while(1)?
2)  你把中斷當(dāng)什么了? 我還真沒見過主程序比中斷還要簡潔的代碼。
3)  我實在看不出來 你定時器里面 while(1)的必要, 你既然判斷了 >4  那么你直接關(guān)了 ET0 不就好了 有必要 去while(1) 死在那里么?

作者: 電子浪人    時間: 2021-12-13 13:27
188610329 發(fā)表于 2021-12-12 22:38
1)  既然你知道問題在 while(1)  上面,為什么你還要用 while(1)?
2)  你把中斷當(dāng)什么了? 我還真沒見過主 ...

這里的定時器中斷我是來處理流水燈和數(shù)碼管的倒計時可能代碼有點多,ET0 = 0,確實可讓數(shù)碼管停在數(shù)字4上,但是后續(xù)我如果想再按下去數(shù)碼管重新倒計時該咋辦呢
作者: wuyui    時間: 2021-12-13 15:47
你想用while停在這也不是非得用while(1),你可以整個while(key2==0){...};這樣再次按鍵的時候就跳出去了,但是這樣你得在前面做一個按鍵的松手檢測
作者: 電子浪人    時間: 2021-12-13 18:06
wuyui 發(fā)表于 2021-12-13 15:47
你想用while停在這也不是非得用while(1),你可以整個while(key2==0){...};這樣再次按鍵的時候就跳出去了, ...

這是我想到的,起碼可以讓數(shù)碼管在倒計時結(jié)束能保持?jǐn)?shù)字4的同時,也能響應(yīng)我的按鍵讓數(shù)碼管重新倒計時,就是感覺這個時間有點慢慢的

作者: 電子浪人    時間: 2021-12-13 18:09
電子浪人 發(fā)表于 2021-12-13 13:27
這里的定時器中斷我是來處理流水燈和數(shù)碼管的倒計時可能代碼有點多,ET0 = 0,確實可讓數(shù)碼管停在數(shù)字4上 ...

這是我想出來的方法,不用關(guān)閉ET0,就依靠標(biāo)志位去切換,基本能滿足要求,就是感覺有點慢啊,確實如你所說我在中斷里的代碼過于臃腫,主程序過于簡潔,我感覺自己就是一定要想出跟別人不太一樣的方法去應(yīng)對一道題,可能是把這道題想的過于難了

作者: 188610329    時間: 2021-12-13 19:18
電子浪人 發(fā)表于 2021-12-13 13:27
這里的定時器中斷我是來處理流水燈和數(shù)碼管的倒計時可能代碼有點多,ET0 = 0,確實可讓數(shù)碼管停在數(shù)字4上 ...

后續(xù)想重新倒計時的時候 再 ET0 = 1 啊

作者: 電子浪人    時間: 2021-12-13 19:56
188610329 發(fā)表于 2021-12-13 19:18
后續(xù)想重新倒計時的時候 再 ET0 = 1 啊

這是我在你說之前,想到的方法,不用改變ET0也可以滿足要求,就是感覺有點慢慢的,我的代碼有什么需要改進的地方嗎

作者: 188610329    時間: 2021-12-13 23:11
需要改進的就是, 中斷里面只做兩件事, 一,就是計數(shù) 二,就是置位標(biāo)志。 其他的事情統(tǒng)統(tǒng)在主程序里面通過if(cnt2==1)  也好, 通過 if(flag2)也好進行判斷后,選擇性的執(zhí)行。
作者: lkc8210    時間: 2021-12-14 13:15
1.審題要小心,評分標(biāo)準(zhǔn)4的要求是Led和數(shù)碼管都要用中斷,你現(xiàn)在只用了一個中斷
2.你這系統(tǒng)對按鍵中斷的要求不高,可以不用消抖
3.要求沒寫是正計時還是倒記時,但寫了要保持N,所以正計時更方便寫代碼
4.如果你"想出跟別人不太一樣的方法"來達(dá)到題目要求可以讓代碼更簡潔易讀,歡迎使用,但如果讓代碼更累贅難懂,就是畫蛇添足






作者: 電子浪人    時間: 2021-12-14 18:58
lkc8210 發(fā)表于 2021-12-14 13:15
1.審題要小心,評分標(biāo)準(zhǔn)4的要求是Led和數(shù)碼管都要用中斷,你現(xiàn)在只用了一個中斷
2.你這系統(tǒng)對按鍵中斷的要 ...

我一個按鍵是外部中斷控制LED,一個按鍵是定時器中斷控制數(shù)碼管,怎么還會是只有一個呢
作者: 電子浪人    時間: 2021-12-14 19:51
電子浪人 發(fā)表于 2021-12-14 18:58
我一個按鍵是外部中斷控制LED,一個按鍵是定時器中斷控制數(shù)碼管,怎么還會是只有一個呢

但是你的代碼給我很大的啟發(fā),非常感謝
作者: a70524414    時間: 2021-12-24 14:03
看著評論我也收獲不少




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1