|
發布時間: 2019-6-13 21:11
正文摘要:第一個問題:圖一中的“INT0”是什么干用的,還有它是哪來的,這個程序并沒有“sbit INT0=xxx”。 第二個問題:圖二為什么在中斷函數中要加上“EX=0 …… EX=1”?如果不加會怎么樣? 我想diy個手電 ... |
溝里郭嘉 發表于 2019-6-14 22:53 第一個是INT0的地址,很多里面用的是sfr,第二個是INT0所作用的引腳 |
|
1 INT0頭文件里有了,也就是庫里已經給你寫好了; 2 中斷的開關,開的時候進中斷(滿足條件),關的時候不進中斷(滿足條件);中斷里寫了是因為不讓程序在中斷里的時候就再一次進中斷; 用占空比會比較好一點;控制亮度比較得心應手。 |
| 1 INT0頭文件里定義了,也就是庫里有了; |
aiwenxue999 發表于 2019-6-14 08:39 求教一下,我發現reg51.h里面,寫的是sbit INT0=0xB2,reg52.h里面,寫的是sbit INT0=P3^2,這是什么意思? |
|
樓主對C語言和51單片機的理解還不夠啊。INT0的概念純粹是C語言的知識,是為了在程序中操縱P3.2管腳時,使用的別稱。除了能控制管腳輸出信號,還可以配合控制寄存器和控制位,做單片機的設置工作,就像樓上給的資料那樣。比如控制這個管腳是在收到下降沿信號的時候產生中斷,還是遇到低電平的時候產生中斷。 EX0是替代51單片機中的中斷控制器(寄存器地址:0xA8)中的控制外部中斷0使能的一個控制位(位地址:0xA8),用來控制當外部中斷信號產生的時候,系統是否還響應這個中斷。EX=0,意味著即使外部已經產生了中斷信號,但系統不響應,不會進到中斷處理程序中去處理。 建議樓主有時間的話,多看看單片機原理的書。 |
|
典型的外部中斷0按鍵處理程序: EX0=0 <>延時30毫秒 <>等待按鍵松開 EX0=1 就是說先關了外部中斷0,等按鍵穩定后,再等按鍵松開 以防止按鍵按下時震動余波引起的誤觸發 你的程序沒有考慮到按鍵震動的余波,所以會多次觸發外部中斷0。 但是這個半成品程序的外部中斷0內容僅僅是不斷將LED設置為點亮的狀態,即使多次觸發也不會影響,所以目前看不出來什么;如果想要在中斷函數里面準確記錄按鍵按下次數的話就會出問題的。 |
|
①、INT0是在<reg51.h>中定義了的,INT0上面的一杠代表:為低電平觸發。 ②、看此鏈接:http://m.raoushi.com/bbs/dpj-140317-1.html |
|
第一個問題:圖一中的“INT0”是什么干用的,還有它是哪來的,這個程序并沒有“sbit INT0=xxx”。 答:INT0的問題需要看硬件的設計目的。sbit INT0=xxx 是有的,只是你不知道,樓上的朋友告訴你了。 第二個問題:圖二為什么在中斷函數中要加上“EX=0 …… EX=1”?如果不加會怎么樣? 答:都可以,需要根據整個系統的設計來決定,就目前你的水平,還不能理解這句話。慢慢來,功夫到了,你會應用自如的。這里提兩個問題供你思考一下: 1、當你進入中斷服務程序后,會發生其它中斷? 2、你在執行中斷服務程序時,怕不怕被其它中斷打擾? 如果怕打擾,可以將可能打擾你的那個中斷禁止,待你處理完成后,再開放它,是不是一個方法呢? “EX=0 …… EX=1” :常用來禁止某個中斷,發生于某段程序運行的地方。 |
|
1、INT0 在頭文件中定義了 2、就是初始化外部中斷。默認并不觸發外部中斷。 3、實現變檔,最好是使用PWM驅動。 |