關於郭天祥單片機書上第68頁中斷剖析

關於郭天祥單片機書上第68中斷剖析

 

書上講述的中斷思路有些複雜,及整理了一份思維導圖。希望以最少的語言表達出最清晰的意思。

優先級概念及應用--中斷的嵌套發生處理及響應:

 

 

 

 

 

中斷實現流程:

第一步——優先級設置

 

 

 

第二步——工作方式設置

中斷工作方式設置分三種:定時器,外部中斷,串行口

總覽圖:

 

 

 

2.1定時器的工作方式設置:

 

 

 

2.2外部中斷工作方式設置

 

 

 

第三步——響應中斷

 

 

 


看完流程,我們就可以實際操作,實際操作之中有些小細節性的東西又能讓我更全面的理解中斷。

 

首先看一下定時器定時長度計算

 

 

51單片機採用向上計數法,即你給一個初值,定時器從這個初值向上加,一直加滿溢出。【12MHz情況下】

 

方式0:13位,則最大值爲81928.192ms

方式1:16位,則最大值爲6553665.536ms

方式2: 8位,則最大值爲2560.256ms

方式3: 8位,則最大值爲2560.256ms

 

初值計算:

方式x下最大值爲max,要定時長度爲t,機器週期Tcy=12/晶振頻率;

初值大小爲 val = max - t/機器週期。

THx = val / 256

TLx = val%256

 

 

 

TMOD寄存器設置【定時器/計數器專用】

高四位設置定時器1

第四位設置定時器0

不能位尋址是說明這個字節地址不能進行特殊功能位單獨聲明,每次使用是8位一起使用。

 

 

 

 

TCON寄存器設置

TCON設置爲爲定時器設置和外部中斷設置

 

下圖爲使用定時器時的TCON設置

 

 

下圖是使用外部中斷時的TCON設置

 

 

 

寄存器設置完之後就可以寫中斷服務程序了

 

示例:

 

 

在中斷服務函數中必須做兩件事:

1.重裝初值[方式2除外]

2.中斷處理[確保準確的情況下,將能寫在中斷外的處理語句就寫在中斷外。]

 

 

 

 

78頁一段繞口的話逐句解讀

 

1:若將判斷時間是否到達的語句寫在的主程序中

 

 

2:當主程序運行到數碼管顯示語句當中時,此時恰好定時器0進入中斷並且num1剛好加到4,當定時器再次進入時,主程序仍未退出數碼管顯示語句,那麼此時num1的值便成了5.

 

在這個過程中主程序一直在displayshi, ge)中顯示,而中斷髮生了兩次仍未退出這個顯示函數,導致第一次進入中斷函數使num14,主函數還在display中,沒有判斷num1==4並將num1清零。結果中斷再次發生,num1的值變爲了5。結果你懂的。。。。。。。還是老郭那句話:寫程序搞研究一定要嚴格,絕對不能抱有僥倖的心理!!!

 

發佈了29 篇原創文章 · 獲贊 6 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章