51單片機(jī)中斷總結(jié)-馬強(qiáng)
Yybmec51單片機(jī)中斷系統(tǒng)5個中斷源:2個外部中斷請求INT0和INT1、2個片內(nèi)定時器/計數(shù)器T0和T1的溢出中斷請求串行口中斷請求TI或RI(合為一個中斷源)51單片機(jī)中斷級別中斷源INIT0---外部中斷0T0---定時器/計數(shù)器0中斷INIT1---外部中斷1T1----定時器/計數(shù)器1中斷TI/RI---串行口中斷T2---定時器/計數(shù)器2中斷默認(rèn)中斷級別最高第2第3第4第5最低序號(C語言用)012345中斷允許寄存器IE位序號符號位DB7EADB6-------DB5ET2DB4ESDB3ET1DB2EX1DB1ET0DB0EX0EA---全局中允許位。EA=1,打開全局中斷控制,在此條件下,由各個中斷控制位確定相應(yīng)中斷的打開或關(guān)閉。EA=0,關(guān)閉全部中斷。-------,無效位。ET2---定時器/計數(shù)器2中斷允許位。ET2=1,打開T2中斷。ET2=0,關(guān)閉T2中斷。ES---串行口中斷允許位。ES=1,打開串行口中斷。ES=0,關(guān)閉串行口中斷。ET1---定時器/計數(shù)器1中斷允許位。ET1=1,打開T1中斷。ET1=0,關(guān)閉T1中斷。EX1---外部中斷1中斷允許位。EX1=1,打開外部中斷1中斷。EX1=0,關(guān)閉外部中斷1中斷。ET0---定時器/計數(shù)器0中斷允許位。ET0=1,打開T0中斷。ET0=0,關(guān)閉T0中斷。EX0---外部中斷0中斷允許位。EX0=1,打開外部中斷0中斷。EX0=0,關(guān)閉外部中斷0中斷。中斷優(yōu)先級寄存器IP位序號DB7DB6DB5DB41DB3DB2DB1DBYybmec位地址---------PSPT1PX1PT0PX0-------,無效位。PS---串行口中斷優(yōu)先級控制位。PS=1,串行口中斷定義為高優(yōu)先級中斷。PS=0,串行口中斷定義為低優(yōu)先級中斷。PT1---定時器/計數(shù)器1中斷優(yōu)先級控制位。PT1=1,定時器/計數(shù)器1中斷定義為高優(yōu)先級中斷。PT1=0,定時器/計數(shù)器1中斷定義為低優(yōu)先級中斷。PX1---外部中斷1中斷優(yōu)先級控制位。PX1=1,外部中斷1中斷定義為高優(yōu)先級中斷。PX1=0,外部中斷1中斷定義為低優(yōu)先級中斷。PT0---定時器/計數(shù)器0中斷優(yōu)先級控制位。PT0=1,定時器/計數(shù)器0中斷定義為高優(yōu)先級中斷。PT0=0,定時器/計數(shù)器0中斷定義為低優(yōu)先級中斷。PX0---外部中斷0中斷優(yōu)先級控制位。PX0=1,外部中斷0中斷定義為高優(yōu)先級中斷。PX0=0,外部中斷0中斷定義為低優(yōu)先級中斷。定時器/計數(shù)器工作模式寄存器TMOD位序號位符號DB7GATEDB6C/T\\DB5M1DB4M0DB3GATEDB2C/T\\DB1M1DB0M0|-----------------定時器1------------------------|--------------------定時器0----------------------|GATE---門控制位。GATE=0,定時器/計數(shù)器啟動與停止僅受TCON寄存器中TRX(X=0,1)來控制。GATE=1,定時器計數(shù)器啟動與停止由TCON寄存器中TRX(X=0,1)和外部中斷引腳(INT0或INT1)上的電平狀態(tài)來共同控制。C/T\\---定時器和計數(shù)器模式選擇位。C/T\\=1,為計數(shù)器模式;C/T\\=0,為定時器模式。M1M0---工作模式選擇位。M10011M00101工作模式方式0,為13位定時器/計數(shù)器方式1,為16位定時器/計數(shù)器方式2,8位初值自動重裝的8位定時器/計數(shù)器方式3,僅適用于T0,分成兩個8位計數(shù)器,T1停止工作定時器/控制器控制寄存器TCON位序號符號位DB7TF1DB6TR1DB5TF0DB4TR0DB3IE1DB2IT1DB1IE0DB0IT0TF1---定時器1溢出標(biāo)志位。當(dāng)定時器1記滿溢出時,由硬件使TF1置1,并且申請中斷。進(jìn)入中斷服務(wù)程序后,由硬件自動清0。需要注意的是,如果使用定時器中斷,那么該位完全不用人為去操作,但是如果使用軟件查詢方式的話,當(dāng)查詢到該位置1后,就需要用軟件清0。TR1---定時器1運行控制位。由軟件清0關(guān)閉定時器1。當(dāng)GATE=1,且INIT為高電平時,TR1置1啟動定時器1;當(dāng)YybmecGATE=0時,TR1置1啟動定時器1。TF0---定時器0溢出標(biāo)志,其功能及其操作方法同TF1。TR0---定時器0運行控制位,其功能及操作方法同TR1。IE1---外部中斷1請求標(biāo)志。當(dāng)IT1=0時,位電平觸發(fā)方式,每個機(jī)器周期的S5P2采樣INT1引腳,若NIT1腳為定電平,則置1,否則IE1清0。當(dāng)IT1=1時,INT1為跳變沿觸發(fā)方式,當(dāng)?shù)谝粋及其機(jī)器周期采樣到INIT1為低電平時,則IE1置1。IE1=1,表示外部中斷1正向CPU中斷申請。當(dāng)CPU響應(yīng)中斷,轉(zhuǎn)向中斷服務(wù)程序時,該位由硬件清0。IT1外部中斷1觸發(fā)方式選擇位。IT1=0,為電平觸發(fā)方式,引腳INT1上低電平有效。IT1=1,為跳變沿觸發(fā)方式,引腳INT1上的電平從高到低的負(fù)跳變有效。IE0---外部中斷0請求標(biāo)志,其功能及操作方法同IE1。IT0---外部中斷0觸發(fā)方式選擇位,其功能及操作方法同IT1。從上面的知識點可知,每個定時器都有4種工作模式,可通過設(shè)置TMOD寄存器中的M1M0位來進(jìn)行工作方式選擇。方式1的計數(shù)位數(shù)是16位,對T0來說,由TL0寄存器作為低8、TH0寄存器作為高8位,組成了16位加1計數(shù)器。關(guān)于如何確定定時器T0的初值問題。定時器一但啟動,它便在原來的數(shù)值上開始加1計數(shù),若在程序開始時,我們沒有設(shè)置TH0和TL0,它們的默認(rèn)值都是0,假設(shè)時鐘頻率為12MHz,12個時鐘周期為一個機(jī)器周期,那么此時機(jī)器周期為1us,記滿TH0和TL0就需要216-1個數(shù),再來一個脈沖計數(shù)器溢出,隨即向CPU申請中斷。因此溢出一次共需65536us,約等于65.6ms,如果我們要定時50ms的話,那么就需要先給TH0和TL0裝一個初值,在這個初值的基礎(chǔ)上記50000個數(shù)后,定時器溢出,此時剛好就是50ms中斷一次,當(dāng)需要定時1s時,我們寫程序時當(dāng)產(chǎn)生20次50ms的定時器中斷后便認(rèn)為是1s,這樣便可精確控制定時時間啦。要計50000個數(shù)時,TH0和TL0中應(yīng)該裝入的總數(shù)是65536-50000=15536.,把15536對256求模:15536/256=60裝入TH0中,把15536對256求余:15536/256=176裝入TL0中。以上就是定時器初值的計算法,總結(jié)后得出如下結(jié)論:當(dāng)用定時器的方式1時,設(shè)機(jī)器周期為TCY,定時器產(chǎn)生一次中斷的時間為t,那么需要計數(shù)的個數(shù)為N=t/TCY,裝入THX和TLX中的數(shù)分別為:THX=(65536-N)/256,TLX=(65536-N)%256中斷服務(wù)程序的寫法void函數(shù)名()interrupt中斷號using工作組{中斷服務(wù)程序內(nèi)容}在寫單片機(jī)的定時器程序時,在程序開始處需要對定時器及中斷寄存器做初始化設(shè)置,通常定時器初始化過程如下:(1)對TMOD賦值,以確定T0和T1的工作方式。(2)計算初值,并將初值寫入TH0、TL0或TH1、TL1。(3)中斷方式時,則對IE賦值,開放中斷。Yybmec(4)使TR0和TR1置位,啟動定時器/計數(shù)器定時或計數(shù)。例:利用定時器0工作方式1,實現(xiàn)一個發(fā)光管以1s亮滅閃爍。程序代碼如下:#include#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0;ucharnum;voidmain(){TMOD=0x01;//設(shè)置定時器0位工作模式1(M1,M0位0,1)TH0=(65536-45872)/256;//裝初值11.0592M晶振定時50ms數(shù)為45872TL0=(65536-45872)%256;EA=1;//開總中斷ET0=1;//開定時器0中斷TR0=1;//啟動定時器0while(1){if(num==20)//如果到了20次,說明1秒時間{led1=~led1;//讓發(fā)光管狀態(tài)取反num=0;}}}voidT0_time()interrupt1{TH0=(65536-45872)/256;//重新裝載初值TL0=(65536-45872)%256;num++;}
擴(kuò)展閱讀:種菜的樂趣
種菜的樂趣
星期二那天,陽光明媚,風(fēng)和日麗,蔚藍(lán)的天空中飄著幾朵白云,正是種菜的好天氣。
我們大家上操回來,剛剛到教室門口,就被宋老師叫住了。大家一聽說去種菜,別提多開心了!
我們迫不及待地想種菜,于是我們連跑帶顛兒地紛紛來到了學(xué)校西南角的一塊空地勞動基地。
教我們種菜的是從村里請來的李師傅,大家按照他的吩咐,往挖好的坑里播種,澆水,最后埋土。同學(xué)們個個充滿了干勁。平時自己在家里都是“小皇帝”“小公主”,從不干活,更別說種菜了。不過,第一次種菜,到是充滿了樂趣。
我們大家齊心協(xié)力,共同種菜,合理分工。盧盛和賀璇負(fù)責(zé)播種,李師傅刨好一個坑,他們就在那個坑里播種。當(dāng)他們把一粒粒種子播撒進(jìn)坑里時,楊楚玉負(fù)責(zé)灑水,過一會兒就可以埋土了,在李師傅的指導(dǎo)下我小心翼翼地用腳埋土,然后再輕輕的踩一踩,好像生怕把種子才壞似的。不一會兒,我們在宋老師和李師傅的指導(dǎo)下就把菜種好了。望著種好的菜地,甜蜜的笑容洋溢在我們每個人的臉上。心里充滿了一種自豪感,因為我們用自己的手為勞動基地添了光彩。
多么有意義的活動呀!在這里我們不僅享受到了種菜的樂趣,而且我們也深深體會到了種菜的辛勞。
力行小學(xué)五年級:林少爺
友情提示:本文中關(guān)于《51單片機(jī)中斷總結(jié)-馬強(qiáng)》給出的范例僅供您參考拓展思維使用,51單片機(jī)中斷總結(jié)-馬強(qiáng):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。