關於郭天祥微控制器書上第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 無參主函式入口...