![]() |
發布時間: 2020-8-14 23:02
正文摘要:新人請教一下 請問這段代碼哪里有錯誤 我用debug運行了一下發現箭頭一直在if(cnt>=500)這行 在群里問了沒有得到滿意的解答 請問有沒有大佬能告知一下是哪里出錯了 |
ベアトリス 發表于 2020-8-15 23:34 啊,我看錯了 |
disorder 發表于 2020-8-16 12:43 #include<reg52.h> sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; 應該沒問題吧 |
看上去沒啥大問題 你的P1和數碼管是怎么接的? |
while (表達式),表達式始終為true,所以一直循環 |
一直在中斷函數里循環 |
青桑葉 發表于 2020-8-15 10:11 請問大佬我中斷哪里寫錯了 |
panzishi123456 發表于 2020-8-15 11:17 unsigned int cnt不是0到65525嗎? |
藍魄 發表于 2020-8-15 08:16 我中斷應該設置的是2ms進一次(不知道大佬能不能看一下代碼) 但我debug運行時就一直指在if(cnt>=500)這行 我數碼管也是第一個只在閃爍 |
好像一直在中斷函數里循環,沒跳回去 |
cnt有符號,正數范圍不能超255 |
死循環中斷500次才到if里面的程序,挑不出來 |
一直中斷沒出來.供參考 |
說不定你的cnt 定義的是 8bit的變量 怎么可能大于500 |
因為if(cnt>=500)在死循環while(1)里,所以你單步執行要中斷500次才能進入到if里面的程序,所以cnt在500之前就會一直在判斷,所以就一直在if這里,而中斷會使程序跳轉到中斷函數,至于單步多少次就算你的中斷計算次數了 |