![]() |
發布時間: 2024-2-5 13:43
正文摘要:學習板上的數碼管顯示60然后是59,感覺是只執行了num2等于0,num2等于1,到了num2等于1就停了。然后我加了個if(num2等于1等于) num2等于0,在那個switch語句后面for循環里面,然后學習板上的結果也不對。 把num2 ... |
中斷處理函數的循環有問題 |
看你下面是main()那么這段代碼是中斷處理程序,里面不要用for,也不要用delay() |
進入死循環了,要讓他重新啟動 |
xiaobendan001 發表于 2024-2-6 13:04 是的,要讓它重新開始循環,不然會加很久 |
Pikachu233 發表于 2024-2-6 10:24 不是那樣的,在你得到==20之后,要讓他=0這樣就從新開始了 |
Pikachu233 發表于 2024-2-6 10:24 中斷可能進了兩三次了,你主程序才運行完一輪,對時序要求嚴格的函數,是需要放在中斷里面的,但是中斷里面也不能放太多東西,不然主程序沒得跑了,都跑中斷服務函數了。另外就是延時函數能不用就不用 |
xiaobendan001 發表于 2024-2-5 18:29 我理解了,并且通過實驗驗證了,是因為那個num1的函數沒寫到中斷里面中斷程序運行的時時序和主程序的有可能會有沖突 |
上個帖子說了,你的num1在第一次等于20以后一直加知道65535之后才會再次出現==20的情況,所以減到59就需要等很久才能到58的 |