關於郭天祥微控制器書上第68頁中斷剖析

2021-06-18 16:19:57 字數 1680 閱讀 5143

關於郭天祥微控制器書上第68頁

中斷剖析

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

優先順序概念及應用

--中斷的巢狀發生處理及響應:

中斷實現流程:

第一步——優先順序設定

第二步——工作方式設定

中斷工作方式設定分三種:定時器,外部中斷,序列口

總覽圖:

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

2.2外部中斷工作方式設定

第三步——響應中斷

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

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

51微控制器採用向上計數法,即你給乙個初值,定時器從這個初值向上加,一直加滿溢位。【

12mhz

情況下】

方式0:13位,則最大值為

8192

【8.192ms】

方式1:16

位,則最大值為

65536

【65.536ms】

方式2: 8

位,則最大值為

256【

0.256ms】

方式3: 8

位,則最大值為

256【

0.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.

在這個過程中主程式一直在display

(shi

, ge

)中顯示,而中斷發生了兩次仍未退出這個顯示函式,導致第一次進入中斷函式使

num1為4

,主函式還在

display

中,沒有判斷

num1==4

並將num1

清零。結果中斷再次發生,

num1

的值變為了

5。結果***。。。。。。。還是老郭那句話:寫程式搞研究一定要嚴格,絕對不能抱有僥倖的心理!!!

關於郭天祥微控制器書上第十二頁電平特性的相關引數

關於郭天祥微控制器書上第十二頁 電平特性 的相關引數 注意一 vih 最 小高電平輸入電壓 vil 最大低電平輸入電壓 voh 最大高電平輸出電壓 vol 最大低電平輸出電壓 vih和 vil 是針對晶元相對於單片的控制的輸入電壓 晶元引數和晶元電源決定大小 voh和 vol 是針對晶元所控制的外設...

郭天祥51微控制器教程 IIC匯流排

include define uchar unsigned char sbit sda p2 0 資料匯流排 sbit scl p2 1 時鐘匯流排 void delay 大概延時5us void delay1 uchar x 這是乙個寫資料的整體過程 void wirte add uchar ad...

郭天祥10天微控制器學習筆記(1 1)

program 1.1 commit include 包含52標頭檔案,對應的是微控制器型號,其中含各io陣腳的命名定義 sbit d2 p3 0 位定義 p3 0這個陣腳的名字叫d2 unsigned int a 無符號整型,65536到65535 2的16次方 void main 無參主函式入口...