wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 15279|回復(fù): 2
收起左側(cè)

第3章 單片機(jī)定時器/計(jì)數(shù)器、中斷系統(tǒng)

[復(fù)制鏈接]
ID:111078 發(fā)表于 2016-3-28 01:24 | 顯示全部樓層 |閱讀模式
51單片機(jī)輕松入門—基于STC15W4K系列(C語言版)
李友全
編著:http://www.izizhuan.cn/bbs/dpj-37954-1.html



(1) 定時器/計(jì)數(shù)器

1 單片機(jī)定時器/計(jì)數(shù)器工作原理概述
2 定時器/計(jì)數(shù)器的相關(guān)寄存器
3 初值計(jì)算
4 編程舉例
(2) 中斷系統(tǒng)
%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-4.jpg

1 中斷系統(tǒng)結(jié)構(gòu)圖
2 操作電路圖中的開關(guān)(相關(guān)寄存器介紹)
3 編寫中斷函數(shù)
4 中斷程序舉例
5 外中斷代碼調(diào)試(按鍵的防抖技術(shù))
(1) 定時器/計(jì)數(shù)器

IAP15W4K58S4單片機(jī)內(nèi)部包含了下面與定時中斷功能有關(guān)的模塊:

① 5個16位的定時器/計(jì)數(shù)器(T0、T1、T2、T3、T4),不僅可方便 的用于定時控制,而且還可以用于對外部脈沖信號進(jìn)行計(jì)數(shù)。

② 6個引腳同時輸出時鐘功能(5路定時器時鐘 + 1路主時鐘),可給外部 器件提供時鐘脈沖信號(最高頻率可達(dá)13.5MHz)。
③ 2個引腳連接內(nèi)部PCA模塊, 通過功能選擇可將PCA模塊用作外部中

斷(2通道)、定時器、時鐘輸出和脈寬調(diào)制PWM輸出。

④ 5個外中斷輸入口(INT0、INT1、/INT2、/INT3、/INT4),INT0與 INT1既可上升沿觸發(fā)也可下降沿觸發(fā),/INT2、/INT3和/INT4只能 下降沿觸發(fā)。

1 單片機(jī)定時器/計(jì)數(shù)器工作原理概述
IAP15W4K58S4單片機(jī)定時器/計(jì)數(shù)器結(jié)構(gòu)示意圖如圖3-1所示,同一個模塊當(dāng)用 于內(nèi)部系統(tǒng)時鐘計(jì)數(shù)時稱為定時器,當(dāng)用于外部輸入脈沖計(jì)數(shù)時稱為計(jì)數(shù)器。

%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-1.jpg

圖3-1 定時器/計(jì)數(shù)器原理示意圖( x = 0、1、2、3、4)

定時器/計(jì)數(shù)器的核心是一個加1計(jì)數(shù)器,加1計(jì)數(shù)器的脈沖有兩個來源,一個是 單片機(jī)引腳輸入的外部脈沖信號源,另一個是CPU實(shí)際運(yùn)行的系統(tǒng)時鐘SYSclk,當(dāng) 程序中沒有對CPU的時鐘分頻器進(jìn)行額外設(shè)置時,系統(tǒng)時鐘SYSclk就等于外部晶體 振蕩器或內(nèi)部R/C時鐘頻率,計(jì)數(shù)器對這兩個脈沖源之一進(jìn)行輸入計(jì)數(shù),每輸入一 個脈沖,計(jì)數(shù)值加1,當(dāng)計(jì)數(shù)到計(jì)數(shù)器為全1時,再輸入一個脈沖就使計(jì)數(shù)值回零, 同時從最高位溢出一個脈沖使特殊功能寄存器TCON的TFx位置1,作為計(jì)數(shù)器的溢 出中斷標(biāo)志,當(dāng)脈沖源選擇內(nèi)部系統(tǒng)時鐘SYSclk時,在每個時鐘周期計(jì)數(shù)器加1或

12個時鐘周期計(jì)數(shù)器加1(默認(rèn)值是12個時鐘周期加1 ),由于計(jì)數(shù)脈沖的周期是 固定的,所以脈沖數(shù)乘以脈沖周期就是定時時間,此為定時器功能。

允許外部最高輸入信號頻率:當(dāng)脈沖源選擇外部引腳輸入的脈沖時,就是對外部

事件計(jì)數(shù)的計(jì)數(shù)器,當(dāng)外部引腳上有一個從1到0的負(fù)跳變時計(jì)數(shù)值加1,由于系 統(tǒng)每個時鐘對外部計(jì)數(shù)器引腳采樣1次,當(dāng)前一次采樣到外部引腳為高電平而后 一次采樣到低電平則形成一個負(fù)跳變,因此確認(rèn)外部輸入信號的一次負(fù)跳變至少 需要2個系統(tǒng)時鐘周期,實(shí)際上,引腳輸入通道中還有一個同步采樣與邊沿檢測 電路,致使外部輸入信號的最高允許頻率不能大于系統(tǒng)時鐘頻率SYSclk的1/4, 比如CPU運(yùn)行的系統(tǒng)時鐘為22.1184MHz,允許外部最高輸入信號頻率為

22.1184MHz/4 = 5.5926 MHz,如果頻率高于這個值,輸入信號的部分脈沖在檢 測過程中會被丟失,若用著頻率計(jì),表現(xiàn)結(jié)果是測量得到的頻率比真實(shí)頻率低。

特殊功能寄存器:從這個示意圖我們可以看到2個開關(guān)符號,后面將會介紹的 詳細(xì)結(jié)構(gòu)圖中有更多的開關(guān)符號,我們使用單片機(jī)內(nèi)部功能模塊就是要把這些 電路開關(guān)合上或斷開,這些開關(guān)的合上或斷開是直接由特殊功能寄存器控制 的,因此我們要控制開關(guān)實(shí)際是控特殊功能寄存器,為了方便,后面把特殊功 能寄存器簡稱為寄存器

%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-5.jpg
表3-1 定時器/計(jì)數(shù)器方式寄存器TMOD(地址89H,復(fù)位值為0000 0000B)

D7

D6

D5

D4

D3

D2

D1

D0

位名 稱

GATE

C/T

M1

M0

GATE

C/T

M1

M0

T1 T0
GATE:門控位,用于外部引腳控制定時器啟動與停止。
0:每當(dāng)TR0/TR1置位時,就啟動定時器工作。
1:外部引腳INT0/INT1為高電平且TR0/TR1置位時,啟動定時器工作。
GATE門控位實(shí)際中一般都不會使用,不管用于定時還是計(jì)數(shù),都直接設(shè)為0
即可,在定時計(jì)數(shù)器T2、T3、T4干脆直接去掉了GATE門控位。

C/T : 設(shè)為0用于內(nèi)部定時,設(shè)為1用于外部計(jì)數(shù)。

M1M0 :

00 : 16位自動重裝定時計(jì)數(shù),當(dāng)溢出時將RL_TH和RL_TL的值自動裝入 TH和TL
中,推薦使用首選(重點(diǎn)學(xué)習(xí)) 。
01 : 16位定時計(jì)數(shù),傳統(tǒng)單片機(jī)使用得較普遍,在一些特殊運(yùn)用場合比如后面章 節(jié)將會介紹的斷電存儲定時器,只能采用這種非自動重裝方式。
10 : 8位自動重裝定時計(jì)數(shù),當(dāng)溢出時將TH的值自動裝入TL中。
11 : 對于T1,停止計(jì)數(shù),等同于將TR1設(shè)置為0。 對于T0,在運(yùn)行過程中,中斷一旦開啟就無法關(guān)閉,稱為不可屏蔽中斷的16
位自動重裝定時器,可用于操作系統(tǒng)的節(jié)拍定時器。
D7
D6
D5
D4
D3
D2
D1
D0
位名稱
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
定時.計(jì)數(shù) 中斷
TF1:T1溢出標(biāo)志位,計(jì)數(shù)器溢出時此位自動置1,進(jìn)入相應(yīng)中斷函數(shù)后則由硬 件清零,若沒編寫中斷函數(shù)則必須由軟件清零。
TF0: T0溢出標(biāo)志位,功能與TF1類似。
TR1:T1運(yùn)行控制位,置1啟動定時器,置0關(guān)閉定時器。
TR0:T0運(yùn)行控制位,置1啟動定時器,置0關(guān)閉定時器。
表3-3 輔助寄存器AUXR(地址8EH,復(fù)位值為0000 0001B)
D7
D6
D5
D4
D3
D2
D1
D0
位名稱
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
T0x12:定時器0速度控制位。 0:12分頻 ,1:不分頻 。

T1x12:定時器1速度控制位。 0:12分頻 ,1:不分頻 。

nUART_M0x6:串口1模式0的通信速度設(shè)置位。 0:12分頻 ,1:6分頻 。
注:串口1模式0是移位寄存器方式,無實(shí)際用途,不用學(xué)
nT2R:定時器2運(yùn)行控制位。置1啟動,置0關(guān)閉。
nT2_C/T :選擇定時器2作定時器或計(jì)數(shù)器。
0:用作定時器(計(jì)數(shù)脈沖從內(nèi)部系統(tǒng)時鐘輸入)。
1:用作計(jì)數(shù)器(計(jì)數(shù)脈沖從P3.1/T2引腳輸入)。
nT2x12:定時器2速度控制位。 0:12分頻 ,1:不分頻 。
0:12分頻,定時器T2 每12個時鐘周期計(jì)數(shù)一次。
1:不分頻,定時器T2 每1個時鐘周期計(jì)數(shù)一次。 如果串口(UART1~UART4)用T2作為波特率發(fā)生器,T2x12位決定串口
是12T 還是1T(高速通信需要1T ,后面章節(jié)會講)。
nEXTRAM:用于設(shè)置是否允許使用內(nèi)部3840字節(jié)的擴(kuò)展RAM。
0:允許,1:禁止。
nS1ST2:串口1(UART1)選擇定時器2作為波特率發(fā)生器的控制位。
0:選擇定時器T1作為串口1(UART1)的波特率發(fā)生器
1:選擇定時器T2作為串口1(UART1)的波特率發(fā)生器,此時定時器T1
得到釋放,可作為獨(dú)立定時器使用。

%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-6.jpg 定時器/計(jì)數(shù)器T3固定為16位自動重裝方式,電路原理如圖3-6所示,T3除可以 當(dāng)作定時器/計(jì)數(shù)器使用外,還可以作串口3的波特率發(fā)生器或可編程時鐘輸出。

圖3-6 定時器/計(jì)數(shù)器3的工作模式固定為16位自動重裝方式
表3-4 定時器T4和T3控制寄存器T4T3M(地址D1H,復(fù)位值為0000 0000B)
D7
D6
D5
D4
D3
D2
D1
D0
位名稱
T4R
T4_C/T
T4xl2
T4CLKO
T3R
T3_C/T
T3xl2
T3CLKO
定時器/計(jì)數(shù)器T4 定時器/計(jì)數(shù)器T3
n T4R:定時器4運(yùn)行控制位, 置1啟動定時器,置0關(guān)閉定時器。
n T4_C/T:選擇定時器4用作定時器或計(jì)數(shù)器。設(shè)為0用于內(nèi)部定時,設(shè)為1用 于外部計(jì)數(shù)(引腳T4/P0.7)。

n T4x12:定時器4速度控制位。 0:12分頻 (默認(rèn)值),1:不分頻 。

n T4CLKO:是否允許將P0.6腳配置為定時器T4的時鐘輸出T4CLKO。1:允許 時鐘輸出,0:禁止時鐘輸出。

n T3R:定時器3運(yùn)行控制位。置1啟動定時器,置0關(guān)閉定時器。

n T3_C/T:選擇定時器3用作定時器或計(jì)數(shù)器。設(shè)為0用于內(nèi)部定時,設(shè)為1用于 外部計(jì)數(shù)(引腳T3/P0.5)。

n T3x12:定時器3速度控制位。 0:12分頻 (默認(rèn)值),1:不分頻 。

n T3CLKO:是否允許將P0.4腳配置為定時器T3的時鐘輸出T3CLKO。1:允許 時鐘輸出,0:禁止時鐘輸出。
3 初值計(jì)算
l 計(jì)數(shù)器初值計(jì)算:
M1M0=00 初值 = 65536 – 待計(jì)數(shù)值
M1M0=01 初值 = 65536 – 待計(jì)數(shù)值
M1M0=10 初值 = 256 – 待計(jì)數(shù)值

l 定時器初值計(jì)算: 單個定時脈沖周期Tin = 1/Fin

待計(jì)數(shù)值 = 定時時間/單個定時脈沖周期 = T/Tin = Fin*T M1M0=00 初值 = 65536 – 待計(jì)數(shù)值 = 65536 –Fin*T M1M0=01初值 = 65536 – 待計(jì)數(shù)值 = 65536 –Fin*T M1M0=10 初值 = 256 – 待計(jì)數(shù)值 = 256 - Fin*T

再把CPU工作的系統(tǒng)時鐘SYSclk(注意:SYSclk不等于內(nèi)部R/C時鐘 或外部晶振頻率Fosc)是否12分頻考慮進(jìn)去,得出計(jì)算初值的表格,見 表3-5。

表3-5 定時器初值計(jì)算公式表


12分頻(即12T,默認(rèn)值)

1分頻(即1T)

16位定時器

預(yù)置初值 = 65536 – SYSclk/12*T

預(yù)置初值 = 65536 – SYSclk*T

8位定時器

預(yù)置初值 = 256 – SYSclk/12*T

預(yù)置初值 = 256 – SYSclk*T

公式中的T表示定時時間,單位是uS,系統(tǒng)時鐘SYSclk單位是MHz,如果T的單
位用Hz,則SYSclk單位用S,通過上面的計(jì)算公式我們可以精確計(jì)算出定時器預(yù) 置初值,為了快速簡便,我們也可以直接使用STC下載軟件中的輔助工具“定時器
計(jì)算器”直接生成定時器初始化函數(shù)。
4 編程舉例
例3.1 用定時器T0實(shí)現(xiàn)P0.0引腳LED亮30ms滅30ms方式閃爍(使用查詢方
式),使用單片機(jī)內(nèi)部R/C時鐘,頻率22.1184MHz。

#include "STC15W4K.H" sbit P0_0=P0^0;

void main()

{
P0=0xff; // 關(guān)閉P0口接的所有燈
TMOD=0x00; // 定時器0的16位自動重裝方式
TH0=0x28; // 定時器初值2800H

TL0=0; TR0=1; for(;;)

{
if(TF0) // 如果TF0等于1
{
TF0=0; // 清TF0
P0_0=!P0_0; // 執(zhí)行燈亮或滅的動作

}

}

}

例3.2 用定時器T0實(shí)現(xiàn)P0.0引腳LED亮1秒滅1秒方式閃爍(使用查詢方式),R/C時鐘
22.1184MHz。

#include "STC15W4K.H" sbit LED=P0^0;

unsigned char counter; // 軟件計(jì)數(shù)器

void main()

{
TMOD=0x01; // 定時器0_16位計(jì)數(shù)
TH0=0x70; // 經(jīng)計(jì)算定時20ms初值是0x7000

TL0=0x00;

TR0=1; // 定時器開始運(yùn)行

while(1)

{

if(TF0==1)

{

}

TF0=0; // 沒使用中斷的情況下必定會用軟件查詢清零

TH0=0x70; TL0=0x00; counter++;

if(50==counter) // 20ms×50=1000ms即1S(中斷時重裝定時常數(shù)占用時間忽略不計(jì))
{

counter=0; LED=~LED;

}

}

}

例3.3 使用T0作計(jì)數(shù)器對外部信號計(jì)數(shù),計(jì)數(shù)值用P0口的LED顯示出來。本例使用第一章介紹的 二極管閃爍發(fā)光的實(shí)例在1號單片機(jī)P5.4輸出的低頻脈沖信號作為2號單片機(jī)T0(P3.4)引腳計(jì) 數(shù)脈沖輸入,有脈沖信號輸入后從P0口就可以看到LED按二進(jìn)制遞增規(guī)律亮滅變化。

#include "STC15W4K.H" // include稱為文件包含命令,后面引號中內(nèi)容稱為頭文件

void port_mode() // 端口模式
{ // 同第一章流水燈程序
}
void main()
{
unsigned char DispBuf;
port_mode(); // 所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。 P0=0xff; // 關(guān)閉P0口接的所有燈
TMOD=0x05; // 確定計(jì)數(shù)工作模式為T0_16位計(jì)數(shù),不需要重裝。 TR0=1; // 計(jì)數(shù)器T0開始運(yùn)行
for(;;)
{
DispBuf=TL0; P0=~DispBuf;
}
}
例3.5 使用T2作計(jì)數(shù)器對外部信號計(jì)數(shù),計(jì)數(shù)值用P0口的LED顯示出來。若使

用配套實(shí)驗(yàn)板,需要用杜邦線將1號單片機(jī)P54連接到2號單片機(jī)P3.1/T2引腳

(22腳)上。

void main()

{

unsigned char DispBuf;

port_mode(); // 所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。 P0=0xff; // 關(guān)閉P0口接的所有燈

AUXR|=0x18; // 定時器T2工作于計(jì)數(shù)方式并開始運(yùn)行

for(;;)

{

DispBuf=T2L;

P0=~DispBuf;

}

}

2 中斷系統(tǒng)

當(dāng)單片機(jī)正在處理當(dāng)前一段程序時,突然出現(xiàn)了另一個更重 要的事件需要處理,單片機(jī)可以暫停當(dāng)前的程序段去執(zhí)行 更重要的事件對應(yīng)的程序代碼,當(dāng)重要程序代碼執(zhí)行完畢 后返回到原暫停程序處繼續(xù)執(zhí)行原來的代碼,單片機(jī)暫停 當(dāng)前程序去執(zhí)行其它程序的過程就稱為中斷,當(dāng)正在執(zhí)行 重要程序代碼的過程中出現(xiàn)了更為重要的事件時,單片機(jī) 還可以暫停當(dāng)前事件去執(zhí)行更重要的事件的代碼,稱為中 斷嵌套。

IAP15W4K58S4單片機(jī)有21個中斷源,如圖3-11左邊部分所 示,包括5個外部中斷、5個片內(nèi)定時器/計(jì)數(shù)器溢出中斷、
4個片內(nèi)串行口(UART)中斷、1個ADC中斷、1個SPI中斷、
1個低電壓檢測中斷、1個PCA中斷、1個PWM中斷、1個PWM 異常中斷、1個比較器中斷。
2 中斷系統(tǒng)

當(dāng)單片機(jī)正在處理當(dāng)前一段程序時,突然出現(xiàn)了另一個更重要的事件需要處理,單片機(jī) 可以暫停當(dāng)前的程序段去執(zhí)行更重要的事件對應(yīng)的程序代碼,當(dāng)重要程序代碼執(zhí)行完畢后 返回到原暫停程序處繼續(xù)執(zhí)行原來的代碼,單片機(jī)暫停當(dāng)前程序去執(zhí)行其它程序的過程就 稱為中斷 ,簡單的說,中斷就是中途打斷。

當(dāng)正在執(zhí)行重要程序代碼的過程中出現(xiàn)了更為重要的事件時,單片機(jī)還可以暫停當(dāng)前事

件去執(zhí)行更重要事件的代碼,稱為中斷嵌套,IAP15W4K58S4單片機(jī)有21個中斷源,最常 用的是外部引腳中斷、定時器中斷、串行口(UART)中斷。

主程序
執(zhí)行主 程序
中斷請求 執(zhí)行
中斷
斷點(diǎn)
繼續(xù)執(zhí)行 主程序

處理 函數(shù)
中斷返回
%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-7.jpg
1

中斷系統(tǒng)結(jié)構(gòu)圖(各開關(guān)處于默認(rèn)狀態(tài))

2 操作電路圖中的開關(guān)(相關(guān)寄存器介紹)
表3-2 定時器/計(jì)數(shù)器控制寄存器TCON (地址:88H,復(fù)位值:0000 0000B)
D7
D6
D5
D4
D3
D2
D1
D0
位名稱
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
定時.計(jì)數(shù) 中斷

① IT0:INT0引腳觸發(fā)方式控制位,可由軟件置1或清“0”。

0:上升沿和下降沿都可以觸發(fā)中斷并置位IE0標(biāo)志。
1:下降沿觸發(fā)中斷并置位IE0標(biāo)志。
② IE0:INT0中斷請求標(biāo)志位,當(dāng)INT0引腳產(chǎn)生中斷信號后由硬件將IE0置1(程序調(diào)
試過程中也可以使用軟件置1),CPU響應(yīng)中斷并進(jìn)入中斷程序入口地址后立即由硬件將
IE0清0。注意:在匯編語言中剛進(jìn)入中斷入口地址或C語言中剛進(jìn)入中斷函數(shù),IE0即
被清零,所以無論匯編還是C語言在中斷程序調(diào)試過程中根本看不到IE0=1的情況,因
此,IE0和IE1只在查詢編程的方式上用得上。
③ IT1:INT1引腳觸發(fā)方式控制位,與IT0類似。
④ IE1:INT1中斷請求標(biāo)志位,與IE0類似。
⑤ TF0:定時器T0溢出中斷標(biāo)志,T0溢出時由硬件將TF0置1, CPU響應(yīng)中斷并進(jìn)入中
斷程序入口地址后立即由硬件將TF0清0。注意:在匯編語言中剛進(jìn)入中斷入口地址或C
語言中剛進(jìn)入中斷函數(shù),TF0即被清零,所以無論匯編還是C語言在中斷程序序調(diào)試過
程中根本看不到TF0=1的情況,因此,TF0和TF1只在查詢編程的方式上用得上。
⑥ TF1,定時器T1溢出中斷標(biāo)志,與TF0類似。
中斷允許寄存器IE、IE2、INT_CLKO共同完成中斷信號通路的接通與斷開控制。
表3-13 中斷允許寄存器IE(地址A8H,復(fù)位值是:0000 0000B)

D7

D6

D5

D4

D3

D2

D1

D0

位名稱

EA

ELVD

EADC

ES

ET1

EX1

ET0

EX0

EA:總開關(guān)。EA=1,開總中斷,EA=0,關(guān)總中斷。
ELVD:低電壓檢測中斷允許控制位。ELVD =1,允許低電壓檢測中斷,ELVD
=0,禁止低電壓檢測中斷。
EADC:ADC中斷允許控制位。EADC = 1,允許ADC中斷,EADC = 0,禁止
ADC中斷。
ES:串口1中斷開關(guān)。ES=1,允許串口1中斷,ES=0,禁止串口1中斷。
ET1:定時器T1中斷開關(guān)。ET1=1,允許T1中斷,ET1=0,禁止T1中斷。
EX1:外部中斷INT1開關(guān)。EX1=1,開外部中斷INT1,EX1=0,關(guān)外部中斷INT1。
ET0和EX0與ET1和EX1功能類似。
優(yōu)先級控制。

單片機(jī)對中斷優(yōu)先級的處理原則是低優(yōu)先級中斷可被高優(yōu)先級中斷所中斷,反 之不能。任何一種中斷(不管是高優(yōu)先級還是低優(yōu)先級),一旦得到響應(yīng),不 會再被與它同級的中斷所中斷,同一優(yōu)先級的中斷源同時申請中斷時,按照事 先約定的硬件查詢順序響應(yīng)中斷,也就是說在每個優(yōu)先級內(nèi),還同時存在一個 自然優(yōu)先級,自然優(yōu)先級順序見圖3-16右邊部分所示。

表3-16 中斷優(yōu)先級控制寄存器IP (地址為D8H,復(fù)位值是:0000 0000B)

D7

D6

D5

D4

D3

D2

D1

D0

位名稱

PPCA

PLVD

PADC

PS

PT1

PX1

PT0

PX0

PPCA:PCA優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PLVD: 低壓檢測優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PADC:ADC優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PS:串口1優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PT1:定時器T1優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PX1:外中斷INT1優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PT0:定時器T0優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)
PX0 :外中斷INT0優(yōu)先 (設(shè)為1 = 高級中斷,設(shè)為0 = 低級中斷)

3 編寫中斷函數(shù)

• 1、中斷函數(shù)格式:void 函數(shù)名() interrupt m [using n]

• void : 返回值類型。由于中斷函數(shù)是CPU響應(yīng)中斷時通過硬件自動調(diào) 用的,因此中斷函數(shù)的返回值和參數(shù)都只能是void(不能返回函數(shù)值, 也不能給中斷函數(shù)傳遞參數(shù))。

• 函數(shù)名:可以隨便寫,只要方便自己識別此函數(shù)對應(yīng)哪個中斷源即可。
• interrupt:指明此函數(shù)為中斷專用函數(shù)。

• m :中斷源編號(0~13、16~23)確定此函數(shù)對應(yīng)哪一個硬件 中斷。

• using n:確定此中斷函數(shù)使用第幾組R0~R7寄存器組(n = 0~3), 通常不必去做工作寄存器組設(shè)定,而由編譯器自動選擇,避免產(chǎn)生不 必要的錯誤。

• 使用中斷函數(shù)時應(yīng)注意:

• ① 只要程序中開啟了中斷,就必須編寫對應(yīng)的中斷函數(shù),哪怕是空函 數(shù)也必須有(空函數(shù)自動執(zhí)行RETI中斷返回指令),否則中斷產(chǎn)生時 卻找不到可執(zhí)行的中斷函數(shù),這樣必然引起程序功能錯亂或死機(jī)。

• ② 任何函數(shù)都不能直接調(diào)用中斷函數(shù),另外中斷函數(shù)可放在程序中任 何位置而不需要聲明,只要產(chǎn)生中斷,程序就能自動跳入中斷函數(shù)執(zhí) 行。

中斷函數(shù)名稱典型書寫格式如下。
• void INT0(void) interrupt 0{} // 外部中斷0中斷函數(shù)
• void Timer0(void) interrupt 1{} // 定時器T0 中斷函數(shù)
• void INT1(void) interrupt 2{} // 外部中斷1中斷函數(shù)
• void Timer1(void) interrupt 3{} // 定時器T1中斷函數(shù)
• void UART1(void) interrupt 4{} // 串行口1中斷函數(shù)
• void ADC(void) interrupt 5{} // ADC中斷函數(shù)
• void LVD(void) interrupt 6{} // 低電壓檢測LVD中斷函數(shù)
• void PCA(void) interrupt 7{} // PCA中斷函數(shù)
• void UART2(void) interrupt 8{} // 串行口2中斷函數(shù)
• void SPI(void) interrupt 9{} // SPI通信中斷函數(shù)
• void INT2(void) interrupt 10{} // 外部中斷2中斷函數(shù)
• void INT3(void) interrupt 11{} // 外部中斷3中斷函數(shù)
• void Timer2(void) interrupt 12{} // 定時器T2中斷函數(shù)
• void INT4(void) interrupt 16{} // 外部中斷4中斷函數(shù)
• void UART3(void) interrupt 17{} // 串行口3中斷函數(shù)
• void UART4(void) interrupt 18{} // 串行口4中斷函數(shù)
• void Timer3(void) interrupt 19{} // 定時器3中斷函數(shù)
• void Timer4(void) interrupt 20{} // 定時器4中斷函數(shù)
• void Comparator(void) interrupt 21{} // 比較器中斷函數(shù)
• void PWM(void) interrupt 22{} // PWM中斷函數(shù)
• void PWMFD(void) interrupt 23{} // PWM異常中斷函數(shù)
4 中斷程序舉例

例3.10 用定時器T0實(shí)現(xiàn)P0.0引腳LED亮30ms滅30ms方式閃爍(使用中斷方式),R/C 時鐘22.1184MHz。

// 預(yù)置初值 = 65536 – Fosc/12*T=65536-22.1184/12×30000 = 2800H
#include "STC15W4K.H" sbit P0_0=P0^0;


// 包含 "STC15W4K.H"寄存器定義頭文件
void main()



{



P0=0xff;
//
關(guān)閉P1口接的所有燈
TMOD=0x00;
//
定時器0的16位自動重裝方式
TH0=0x28;
//
定時器初值2800H
TL0=0;



TR0=1;



ET0=1;
//
開定時器0中斷開關(guān)
EA=1;
while(1);
//
開總中斷開關(guān)
}
void Timer0() interrupt 1
{
P0_0=!P0_0; // 執(zhí)行燈亮或滅的動作
}

例3.13 用定時器T2實(shí)現(xiàn)P0.0引腳LED亮30ms滅30ms方式閃爍(使用中斷方式), R/C時鐘22.1184MHz。

#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定義頭文件

sbit P0_0=P0^0;
void main()
{
P0=0xff; // 關(guān)閉P1口接的所有燈 AUXR = 0x00; // 定時器2為12T模式
T2L = 0; // 初始化計(jì)時值,
T2H = 0x28;
AUXR |= 0x10; // 定時器2開始計(jì)時 IE2 |= 0x04; // 開定時器2中斷
EA = 1;
while(1);
}
void Timer2() interrupt 12
{
P0_0=!P0_0; // 執(zhí)行燈亮或滅的動作
}

例3.14 用定時器T3實(shí)現(xiàn)P0.0引腳LED亮30ms滅30ms方式閃爍(使用中斷 方式),R/C時鐘22.1184MHz。

#include "STC15W4K.H" // 包含 "STC15W4K.H"寄存器定義頭文件

sbit P0_0=P0^0;
void main()
{
P0=0xff; // 關(guān)閉P0口接的所有燈 T4T3M &= 0xFD; // 定時器3為12T模式 T3L = 0; // 初始化計(jì)時值,
T3H = 0x28;
T4T3M |= 0x08; // 定時器3開始計(jì)時 IE2 |= 0x20; // 開定時器3中斷
EA = 1;
while(1);
}

5 外中斷代碼調(diào)試技巧(按鍵的防抖技術(shù))

%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-2.jpg




單片機(jī)外中斷輸入引腳:





%E7%AC%AC3%E7%AB%A0--%E5%AE%9A%E6%97%B6%E5%99%A8_%E8%AE%A1%E6%95%B0%E5%99%A8_%E4%B8%AD%E6%96%AD%E7%B3%BB%E7%BB%9F-8.jpg
74LS00引腳圖
0.png

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:425919 發(fā)表于 2019-10-31 11:00 | 顯示全部樓層
不努力學(xué)習(xí)都不懂呀
回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除
無效樓層,該帖已經(jīng)被刪除
ID:424788 發(fā)表于 2023-7-3 11:00 | 顯示全部樓層
還要更加努力才能看的懂  目前似懂非懂.....
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
中文字幕乱码日本亚洲一区二区| 久久久噜噜噜久久人人看| 日本乱人伦一区| 午夜影院日韩| 日韩在线成人| 麻豆影视在线观看_| 精品久久亚洲一级α| 国产又色又爽又黄的| 2025韩国理伦片在线观看| 久99久在线| 国内精品免费午夜毛片| 日韩欧美国产小视频| 国产精品久久夜| 麻豆成人91精品二区三区| 日韩精品欧美大片| 在线观看v片| 狠狠色伊人亚洲综合网站l| 又色又爽又黄视频| 日韩一区二区三区高清| 国产精品成人国产乱一区| 精品视频在线播放| 欧美日韩尤物久久| 亚洲精品97久久久babes| 精品网站www| 国产裸体永久免费无遮挡| 欧美一级片在线视频| a级大片免费看| 欧美一级视频免费看| 国产chinese精品一区二区| 久久久久久亚洲精品不卡| 亚洲国产精品久久91精品| 日韩成人免费电影| 成人在线电影在线观看视频| 伊人久久综合网另类网站| 黄网av在线| 你懂得网站在线| 福利视频网站| 日日干天夜夜| 热re66久久精品国产99re| 国产黄色一区二区| jizz国产在线观看| 最新一区二区三区| 无码国产69精品久久久久同性| 日本激情视频在线| 日韩在线视频在线| 亚洲视频欧美在线| 久久久久一区二区| 国产精品露出视频| 91久久中文字幕| 热99精品只有里视频精品| 欧美老少做受xxxx高潮| 中文字幕免费精品一区| 亚洲开心激情网| 亚洲精品国产品国语在线| 欧美日韩高清在线| 欧美综合在线视频| 91国产精品成人| 色综合婷婷久久| 五月婷婷激情综合| 亚洲午夜影视影院在线观看| 日韩理论片一区二区| 中文在线免费一区三区高中清不卡| 波多野结衣中文字幕一区二区三区| 久久99国产精品久久| 日韩影院精彩在线| 日韩电影在线免费观看| 久久久综合网| 日本女优在线视频一区二区| 日韩精品福利网| 免费在线观看不卡| 极品少妇一区二区| 国产在线视频精品一区| 韩日欧美一区二区三区| 国产美女精品在线| 成人白浆超碰人人人人| 91丝袜美腿高跟国产极品老师| 不卡一区中文字幕| 91麻豆精品秘密| 国产亚洲美州欧州综合国| 樱桃成人精品视频在线播放| 婷婷激情综合| 99热在线成人| 黄色成人91| 亚洲综合社区| 美女视频一区二区| 国产精品亚洲午夜一区二区三区 | 高清在线视频不卡| 美女100%一区| 日韩精品一区二区三区中文| 清纯唯美亚洲经典中文字幕| 日产精品一区二区| 韩国av一区| 日韩专区在线视频| 成人91在线观看| 欧美国产日韩精品免费观看| 亚洲伊人色欲综合网| 日本精品一区二区三区高清| 欧美一区二区三区在线视频| 亚洲免费影视第一页| 久久天天躁狠狠躁老女人| 91精品国产91久久久| 91精品国产综合久久男男| 久久国产精品99久久久久久丝袜 | 精品欧美在线观看| 思思99热久久精品在线6| 轻轻操 在线观看| 五月天婷婷综合社区| 77导航福利在线| 欧美xo影院| 色婷婷久久久| 亚洲狼人精品一区二区三区| 国产传媒欧美日韩成人| 成人免费在线播放视频| 欧美最猛黑人xxxxx猛交| 日韩精品视频在线播放| 国外成人免费在线播放| 国产私拍一区| 91精品91久久久中77777老牛| 伦理片一区二区| 久一区二区三区| 东京干手机福利视频| 邪态动恶图27期gif| 最近中文字幕在线| а√在线中文在线新版| 北条麻妃在线一区二区免费播放| 欧美精品三区| 91在线一区二区| 一本色道久久综合精品竹菊| 精品夜色国产国偷在线| 国产精品第1页| 手机成人av在线| 佐佐木明希电影| 成人午夜视频在线播放| 国产在线麻豆精品| 日韩私人影院| 国产精品99久久免费| 一区免费在线| 国产日韩欧美精品综合| 欧美日韩成人综合| 97精品一区二区三区| 色涩成人影视在线播放| 色女人综合av| 精品人妻一区二区三区免费| 日本中文字幕免费| 最近更新在线中文字幕一页| 色网址在线观看| 韩国三级一区| 午夜国产欧美理论在线播放 | 97av在线播放| 视频一区二区综合| 成人欧美精品一区二区| 久久精品偷拍视频| 九九色在线观看| 不卡的av影片| 欧美成人69| 欧美激情一区二区三区四区 | 久久久91精品国产一区二区三区| 欧美日韩午夜影院| 青青精品视频播放| 国产曰肥老太婆无遮挡| 免费国产羞羞网站美图| 小说区图片区综合久久88| 新版中文字幕在线资源| 麻豆精品久久| 日本少妇一区二区| 精品女厕一区二区三区| 欧美激情精品久久久久久免费印度 | 国产亚洲一本大道中文在线| 欧美一区二区三区的| 国产精品第三页| 鲁一鲁一鲁一鲁一澡| 久久久久久久久久99| 国产一级黄色| 男女羞羞视频在线观看| 欧美va天堂在线| 亚洲精选视频在线| 久久精品成人欧美大片古装| 日本精品一区二区三区视频| 添女人荫蒂视频| 亚洲 欧美 自拍偷拍| 久热av在线| 欧美一区二区三区激情视频| 久久新电视剧免费观看| 亚洲天堂免费观看| 亚洲欧美成人一区| 国精品无码一区二区三区| 国产卡一卡2卡三卡免费视频| 四虎国产精品免费久久5151| 外国成人免费视频| 日韩欧美午夜| 中文字幕在线不卡国产视频| 在线精品国产成人综合| 亚洲欧美日产图| 国产精品麻豆一区| 一个人免费观看日本www视频| 黄色在线观看www| 国产视频一区免费看| 色偷偷久久一区二区三区| 国产精品av电影| 亚洲第一天堂久久| 亚洲国产www| 亚洲老女人av| 国自产拍偷拍精品啪啪一区二区| www欧美com| 青青色青青操| 美女视频一区| 成人一区在线观看| 亚洲免费人成在线视频观看| 一区二区三区在线视频111 | aaaaa黄色片| 国产一区二区麻豆| 国产在线免费观看| 欧美不卡在线| 91精品国产色综合久久ai换脸| 国产在线精品一区二区三区| 蜜桃传媒一区二区亚洲| 涩涩网站在线观看| 麻豆国产一区| 中文字幕一区在线观看| 午夜精品久久久99热福利| 日韩欧美国产片| 三级小说一区| 久久av日韩| 国产欧美日韩在线视频| 欧美一级片在线播放| 无码人妻aⅴ一区二区三区玉蒲团| 亚洲欧美天堂| 99er精品视频| 亚洲欧洲www| 国产在线播放91| 日韩不卡av在线| xx免费视频| 99国产精品一区二区| 欧美专区在线观看一区| 欧美精品七区| 国产精品成人久久久| 性生交大片免费全黄| 久久久久亚洲av无码专区 | 日韩精品在线不卡| 一二三区在线| 最新日韩欧美| 国产视频自拍一区| 日韩精品xxxx| 日本欧美色图| 国产成人一二| 欧美日韩免费网站| 日韩av不卡在线播放| 日韩久久久久久久久久| 成年人在线网站| 国产亚洲欧美在线| 国产精品视频免费在线观看| 欧美激情精品久久| 在线免费观看视频网站| 免费在线毛片网站| 国产一区二区在线影院| 久久这里有精品| 中国免费黄色片| 影音av资源站| 欧美精品国产| 国产精品色眯眯| 97在线中文字幕| 国产综合精品视频| 成全电影大全在线观看| 国产欧美日韩久久| 97人人干人人| 中文字幕第2页| 日本一区二区三区视频在线| 亚洲精品中文字幕乱码三区| 久久综合福利| 337人体粉嫩噜噜噜| 一个人看的www一区| 青青草国产精品97视觉盛宴| 欧美成人精品xxx| 免费看黄色的视频| 国产黄色免费在线观看| 福利91精品一区二区三区| 国产精品96久久久久久| 日本熟妇色xxxxx日本免费看| a黄色片在线观看| 日本一区二区久久| 精品视频高清无人区区二区三区| 国产精品主播一区二区| 无人区乱码一区二区三区| 精品视频在线免费观看| 成人免费aaa| 一起草在线视频| 91短视频在线| 国产成人一级电影| 亚洲精品免费网站| 国产露脸国语对白在线| 深夜福利一区二区三区| 欧美夫妻性生活| 91在线第一页| 在线免费视频福利| 91麻豆123| 日本高清不卡三区| 性欧美大胆高清视频| 在线看片不卡| 久久久久久12| 五月天综合激情| 不卡精品视频| 日韩亚洲欧美成人一区| 日批视频在线看| 国产51人人成人人人人爽色哟哟| 久久只精品国产| 手机看片福利永久国产日韩| 国产一级黄色大片| 首页国产欧美久久| 最新中文字幕亚洲| 日本 欧美 国产| 在线看的毛片| 欧美美女激情18p| 在线成人免费av| aaa日本高清在线播放免费观看| 国产精品毛片无遮挡高清| 好色先生视频污| 黄色av免费网站| 成人sese在线| 亚洲一区二区高清视频| www91在线观看| 久久精品国产亚洲aⅴ| 99理论电影网| 欧美xxxxbbbb| 青青青爽久久午夜综合久久午夜| 亚洲tv在线观看| 一二三四在线观看视频韩国| 午夜在线一区二区| 俄罗斯精品一区二区三区| 亚洲永久免费网站| 久久性色av| 国产伦精品一区二区三区四区免费 | 国产精品入口芒果| 黄色毛片av| 国产精品日产欧美久久久久| 97精品一区二区三区| 色哟哟日韩精品| 一女二男3p波多野结衣| 亚洲成人av高清| 最好看的中文字幕久久| 成人午夜免费在线| gogogo影视剧免费观看在线观看| 久久国产亚洲| 26uuu亚洲伊人春色| 97人人爽人人爽人人爽| 93在线视频精品免费观看| 性欧美暴力猛交69hd| 99热在线只有精品| 在线成人亚洲| 国产精品久久亚洲7777| 黄色的毛片免费| 91在线观看高清| 成年在线观看视频| 日韩女优一区二区| 久久野战av| 亚洲男子天堂网| 五月婷婷中文字幕| 精品国内自产拍在线观看视频 | 在线视频色在线| 亚洲永久免费av| 99riav国产精品视频| 亚洲国产福利| 亚洲香蕉成人av网站在线观看| 国产在线视频第一页| 久久一区二区三区喷水| 国产欧美日韩高清| 翁止熄痒禁伦短文合集免费视频| 国产成人福利夜色影视| 色香阁99久久精品久久久| 国产美女三级无套内谢| 亚洲一区图片| 亚洲午夜精品久久久中文影院av| 91短视频在线观看| 日韩欧美在线免费观看| 精品一区二区在线观看视频| 欧美中文一区| 91精品视频专区| 天天撸天天射| 亚洲图片自拍偷拍| 日韩一级av毛片| 免费短视频成人日韩| 97国产超碰| 丁香花高清视频完整版在线观看| 一区二区三区中文字幕| 国产成人福利在线| 婷婷五月色综合香五月| 成人情趣片在线观看免费| 影视先锋午夜av| 精品久久久久久久久国产字幕 | 中文字幕精品一区二区三区精品 | 欧洲金发美女大战黑人| 色开心亚洲综合| 精品亚洲一区二区三区| www.久久精品.com| 国产最新精品精品你懂的| 日韩黄色片视频| 欧美日韩精品一区二区三区视频| 久久久爽爽爽美女图片| 99久久免费国产精品| 亚洲精品久久久久久国产精华液| 久久久久久九九九九九|