微控制器之中斷

2021-07-24 08:48:11 字數 1215 閱讀 7754

11月14日學習總結

時隔兩周了吧,整理了一下課上記得筆記,發現沒有當即上過課就整理筆記的後果就是老師說的很多細節都想不起來了,不過憑著我這魚的記憶還是能想起來多少就寫多少吧。

首先來回顧一下基礎知識,各類資料基本型別的變數範圍,這些一定要記住,我在寫程式時有時就是因為定義的變數超出了範圍達不到想表達的效果,然後回來檢查程式找死都找不到,這個平時一定要注意:

unsigned char     0~255         signed char    -128~127

unsigned int        0~65535      signed int      -32768~32767

unsigned long     0~4294967295

float        -3.4*10^(-38)~3.4*10^(38)     

double和float相同

延時有四種方式:非精確延時:1.for(i=0; i<100; i++)

2.i=100;while(i--);

精確延時:1.定時器定時

2.用庫函式_nop_();

下面是中斷:

中斷有內部中斷和外部中斷,中斷也有優先順序之分,在51微控制器中,外部中斷0比內部中斷0優先順序高,且51不支援中斷巢狀;

在數碼管顯示上就用到了中斷和定時器,把定時器定的時間夠短,然後間隔定時器定的時間就會發生中斷,利用人眼的視覺暫留,人眼看到的就是數碼管一直亮著,定時器的初始化格式如下:

void timr_init()

下面要有個中斷服務函式來實現你要實現的功能,注意這個中斷服務函式是到時間後系統自己呼叫的;

最後有乙個做碼表的自己的對整個程式的理解,可能不夠詳細:

要求是:微控制器上電時數碼管顯示數字從0開始計時,10s後停止計時且蜂鳴器響一聲;

這個主要是利用中斷和定時器,需要用到兩個定時器,乙個16位的定時器用來重新整理螢幕,定足夠短的時間後開始中斷,利用人眼的視覺暫留,讓人們看到數碼管一直是亮著的狀態;第二個8位自動重灌定時器用來自動改變填充數字,設定的時間一到數字就會改變,比如在第二個定時器設定的1s到後,秒位會自動加1,當10s到時,關閉定時器,數碼管的數字就停止不動了,再呼叫乙個蜂鳴器函式,蜂鳴器就會滴一聲,這是對整個程式的大自概括。

再插乙個蜂鳴器的原理,蜂鳴器分為無源蜂鳴器和有源蜂鳴器,無源蜂鳴器只要給它上電就會響,而無源蜂鳴器必須給它提供一定頻率的方波才會響,方波的頻率越高蜂鳴器的音調越高,我們可以利用這個原理做乙個非常簡單的電子琴哈哈。

PIC微控制器之中斷

1 微控制器在任何情況下的復位,均會導致總遮蔽位和其他的中斷遮蔽位清0,即在預設狀態下,禁止cpu響應所有的中斷。2.中斷標誌位的狀態與該所有的終端遮蔽位無關,即不管是否允許cpu響應中斷源的中斷請求,只要滿足了中斷條件,中斷標誌位就會被置1 3.當系統開放某一中斷源時候,中斷源就通過過中斷標誌位向...

51微控制器之中斷

現在假設乙個情況,微控制器在迴圈點亮led,也就是實現了乙個流水燈,現在有乙個按鍵作為輸入,我們希望通過這個按鍵來實現不同的流水燈效果,當然了,你可以把點亮led和檢測按鍵放在同乙個迴圈裡面,假設這時候你又通過串列埠傳送字串,隨著主程式任務量的增大,迴圈一次的時間也會越來越長,這就會導致按鍵檢測失效...

51微控制器之中斷使用

include void delay unsigned int xms void main void low interrupt 0 1.關於p1八位流水燈引腳,引腳有乙個上拉的5v電源,所以程式寫時p1的八位,為1時燈不亮,為0時燈亮,電路圖如下 2.關於it1 0 1中斷方式 it0表示int0...