|
發布時間: 2021-8-10 21:13
正文摘要:我自己編寫了一個用按鍵選擇DA輸出不同波形的函數。按鍵0按下,顯示三角波;按鍵1按下,顯示鋸齒波;除了1、2以外的按鍵按下,顯示正弦波。按鍵值可以在數碼管中顯示。 使用硬件:吳鑒鷹開發板 &nb ... |
npn 發表于 2021-8-11 13:34 不用理會上電那一瞬間,因為中斷是不斷執行的 |
npn 發表于 2021-8-11 12:35 非常感謝,已經解決了問題。 |
lkc8210 發表于 2021-8-11 11:43 謝謝,我已經按照您的方法測試,中斷執行時間是2ms。我把定時器的時間定為3ms的時候,就解決了問題,可以驗證是因為中斷函數占用的時間太長導致的。非常感謝。 |
lkc8210 發表于 2021-8-11 11:43 P17上電瞬間高電平,建議將電平反過來。 |
yermsir 發表于 2021-8-11 10:42 這個需要用邏輯分析儀捕捉一下 |
yermsir 發表于 2021-8-11 10:56 最好當然是在硬件上測量,我的做法是在中斷第一行寫P17 = 1;在中斷尾寫P17 = 0;然后用邏輯分析儀測量P17腳的高電平時間 |
Jiang_YY 發表于 2021-8-11 10:00 謝謝您的回復,您能否指教以下如何確認中斷函數的處理時間?單是從Keil編譯器自帶的sec指標來看,進入中斷和出中斷中間只差0.6ms,這個時間準不準? |
Jiang_YY 發表于 2021-8-11 10:00 不好意思,中斷函數的處理時間怎么來確認呢? |
| 中斷服務函數里的兩個函數延時加太長了 |
| 如果只是修改了定時時間,確認一下中斷處理函數用的時間是多少,如果中斷處理函數的時間超出或者很接近你定時的時間(1ms),程序會一直在響應中斷,跑不到其它的地方,或者響應很慢。 |
lkc8210 發表于 2021-8-10 23:17 謝謝您詳細的回復,非常感謝。我按照您的意見追加了Key_Value=4;的語句,并不是如預想的那樣顯示正弦波,不管按哪個鍵還是顯示三角波。 另外,按鍵掃描用了長時間的延遲delay怎么會影響到中斷函數呢?中斷函數每個1ms理論上觸發一次,只要按鍵值有變化,就會被捕捉到。 |
|
因為你的Switch沒有Default case, 若Key_Data的值不在你預定的16個case內 Key_Value值會維持為零(因初值預設為零) 而你又用Key_Value是零作為輸出三角波的條件 結果令你覺得按什么都是零 其實什么都不是 驗證方法, if(0!=Key_Data) {Key_Value=4;//先為Key_Value附值 switch(Key_Data) 看看是否按什么都出正弦波 至于為什么會受中斷時間影響 可能是你的按鍵掃描用了長時間(對單片機來說)的delay吧 |