<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 個(gè)人對單片機中斷程序的理解

個(gè)人對單片機中斷程序的理解

作者: 時(shí)間:2016-12-01 來(lái)源:網(wǎng)絡(luò ) 收藏
開(kāi)題首先貼上一段練習中遇到的代碼:

/*1:利用定時(shí)/計數器T0從P1.0輸出周期為1s的方波,讓發(fā)光二極管以1HZ閃爍,設晶振頻率為12MHz。*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
sbit P1_1=P1^0;
uchar time;
void main()
{
time=0;
TMOD=0x01;////設置定時(shí)器0為工作方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;//開(kāi)總中斷
ET0=1;//開(kāi)定時(shí)器0中斷
TR0=1;//啟動(dòng)定時(shí)器0
while(1);//等待中斷產(chǎn)生
}
void T1_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if(time==20)
{
time=0;
P1_1=~P1_1;
}
}

本文引用地址:http://dyxdggzs.com/article/201612/324158.htm

hit:
在學(xué)習單片機的時(shí)候很容易按照C語(yǔ)言編程的格式來(lái)理解,程序在打開(kāi)中斷之后會(huì )一直停留在while(1);當中,但在實(shí)際上,程序的確會(huì )停留在while(1);里,由于開(kāi)啟了中斷開(kāi)關(guān)而并未關(guān)閉,所以T0繼續計數,所以后面一直會(huì )有中斷。

過(guò)程可以理解為這樣,程序一直在while(1);當中,直到定時(shí)器計滿(mǎn)產(chǎn)生中斷;
產(chǎn)生中斷后,執行中斷程序,定時(shí)器重新賦值,time自加1;
回到while(1)中,等待下一次中斷,定時(shí)器繼續計數。

單片機怎么從主函數跳到中斷函數中:
對于單片機的硬件,你熟悉嗎?時(shí)鐘和CPU是獨立的,時(shí)鐘中斷程序時(shí)這樣的:在CPU執行指令時(shí),計數器(計時(shí)器)同時(shí)在計時(shí),當計時(shí)器溢出時(shí),就向CPU申請中斷,如果允許響應中斷,CPU就轉到中斷服務(wù)程序執行相關(guān)的程序。
單片機的時(shí)鐘中斷相應要滿(mǎn)足兩個(gè)條件:第一,允許中斷源申請中斷。第二,允許cpu響應中斷。二者缺一不可。 EA=1;//開(kāi)總中斷
ET0=1;//開(kāi)定時(shí)器0中斷
ET1=1;
TR0=1;//啟動(dòng)定時(shí)器0
TR1=1;
你這些語(yǔ)句,就允許了中斷響應,所以,當你的程序跑起來(lái)時(shí),時(shí)鐘時(shí)間到了,CPU就轉入中斷服務(wù)程序了,執行完了再返回主程序。你可以在編譯器中用DEBUG查看執行過(guò)程的。如果你用匯編語(yǔ)言寫(xiě),就更清楚了,可以看清每一步的操作的。
硬件部分是這樣:在每個(gè)機器周期的S5P2,單片機會(huì )來(lái)采樣,判斷是否有中斷申請。所以一旦時(shí)鐘計數溢出,就會(huì )轉入中斷服務(wù)程序。


這個(gè)打個(gè)比方吧,你在上課,相當于主程序,這時(shí)時(shí)間到了,打鈴下課了,你就不讀書(shū)了,跑出去玩了。這其實(shí)是一樣的道理。你在上課,這和打鈴不相關(guān),并不是你讓打鈴的,學(xué)校的時(shí)鐘在不停地走,到了時(shí)間自動(dòng)打鈴,這不受你上課的影響的。但是如果你把耳朵堵上了(不允許響應中斷),就是把鈴打碎了你也不知道下課了,所以你就一直讀書(shū)。



關(guān)鍵詞: 單片機中斷程

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>