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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機中斷函數執行太快,導致按鍵掃描功能失效?

查看數: 3851 | 評論數: 14 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-8-10 21:13

正文摘要:

我自己編寫了一個用按鍵選擇DA輸出不同波形的函數。按鍵0按下,顯示三角波;按鍵1按下,顯示鋸齒波;除了1、2以外的按鍵按下,顯示正弦波。按鍵值可以在數碼管中顯示。  使用硬件:吳鑒鷹開發板  &nb ...

回復

ID:161164 發表于 2021-8-11 16:39
npn 發表于 2021-8-11 13:34
P17上電瞬間高電平,建議將電平反過來。

不用理會上電那一瞬間,因為中斷是不斷執行的
ID:959891 發表于 2021-8-11 16:22
本帖已經找到原因所在,中斷函數的執行時間是2ms。我把定時器的時間定為1ms的時候,那么程序會一直進入中斷;我修改為3ms,就解決了問題,可以驗證是因為中斷函數占用的時間太長導致的。非常感謝各位的幫助。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

ID:959891 發表于 2021-8-11 13:48
npn 發表于 2021-8-11 12:35
這個需要用邏輯分析儀捕捉一下

非常感謝,已經解決了問題。
ID:959891 發表于 2021-8-11 13:48
lkc8210 發表于 2021-8-11 11:43
最好當然是在硬件上測量,我的做法是在中斷第一行寫P17 = 1;在中斷尾寫P17 = 0;然后用邏輯分析儀測量P17 ...

謝謝,我已經按照您的方法測試,中斷執行時間是2ms。我把定時器的時間定為3ms的時候,就解決了問題,可以驗證是因為中斷函數占用的時間太長導致的。非常感謝。
ID:57657 發表于 2021-8-11 13:34
lkc8210 發表于 2021-8-11 11:43
最好當然是在硬件上測量,我的做法是在中斷第一行寫P17 = 1;在中斷尾寫P17 = 0;然后用邏輯分析儀測量P17 ...

P17上電瞬間高電平,建議將電平反過來。
ID:57657 發表于 2021-8-11 12:35
yermsir 發表于 2021-8-11 10:42
不好意思,中斷函數的處理時間怎么來確認呢?

這個需要用邏輯分析儀捕捉一下
ID:161164 發表于 2021-8-11 11:43
yermsir 發表于 2021-8-11 10:56
謝謝您的回復,您能否指教以下如何確認中斷函數的處理時間?單是從Keil編譯器自帶的sec指標來看,進入中 ...

最好當然是在硬件上測量,我的做法是在中斷第一行寫P17 = 1;在中斷尾寫P17 = 0;然后用邏輯分析儀測量P17腳的高電平時間
ID:959891 發表于 2021-8-11 10:56
Jiang_YY 發表于 2021-8-11 10:00
如果只是修改了定時時間,確認一下中斷處理函數用的時間是多少,如果中斷處理函數的時間超出或者很接近你定 ...

謝謝您的回復,您能否指教以下如何確認中斷函數的處理時間?單是從Keil編譯器自帶的sec指標來看,進入中斷和出中斷中間只差0.6ms,這個時間準不準?
ID:959891 發表于 2021-8-11 10:42
Jiang_YY 發表于 2021-8-11 10:00
如果只是修改了定時時間,確認一下中斷處理函數用的時間是多少,如果中斷處理函數的時間超出或者很接近你定 ...

不好意思,中斷函數的處理時間怎么來確認呢?
ID:479619 發表于 2021-8-11 10:05
中斷服務函數里的兩個函數延時加太長了
ID:959346 發表于 2021-8-11 10:00
如果只是修改了定時時間,確認一下中斷處理函數用的時間是多少,如果中斷處理函數的時間超出或者很接近你定時的時間(1ms),程序會一直在響應中斷,跑不到其它的地方,或者響應很慢。
ID:959891 發表于 2021-8-11 09:39
lkc8210 發表于 2021-8-10 23:17
因為你的Switch沒有Default case, 若Key_Data的值不在你預定的16個case內
Key_Value值會維持為零(因初值預 ...

謝謝您詳細的回復,非常感謝。我按照您的意見追加了Key_Value=4;的語句,并不是如預想的那樣顯示正弦波,不管按哪個鍵還是顯示三角波。
另外,按鍵掃描用了長時間的延遲delay怎么會影響到中斷函數呢?中斷函數每個1ms理論上觸發一次,只要按鍵值有變化,就會被捕捉到。
ID:161164 發表于 2021-8-10 23:17
因為你的Switch沒有Default case, 若Key_Data的值不在你預定的16個case內
Key_Value值會維持為零(因初值預設為零)
而你又用Key_Value是零作為輸出三角波的條件
結果令你覺得按什么都是零
其實什么都不是
驗證方法,
                  if(0!=Key_Data)
                        {Key_Value=4;//先為Key_Value附值
                                switch(Key_Data)

看看是否按什么都出正弦波

至于為什么會受中斷時間影響
可能是你的按鍵掃描用了長時間(對單片機來說)的delay吧

                       
       
                                                        

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表