版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、定時器中斷c語言解析interrupt x using yinterrupt表示中斷優(yōu)先級,using表示所用工作寄存器組。interrupt x using y跟在interrupt后面的xx值得是中斷號,就是說這個函數(shù)對應第幾個中斷端口,一般在51中0外部中斷01定時器02外部中斷13定時器14串行中斷其它的根據(jù)相應得單片機有自己的含義,實際上c在編譯的時候就是把你這個函數(shù)的入口地址放到這個對應中斷的跳轉(zhuǎn)地址using y這個y是說這個中斷函數(shù)使用的那個寄存器組就是51里面一般有4個r0-r7寄存器,如果你的終端函數(shù)和別的程序用的不是同一個寄存器組則進入中斷的時候就不會將寄存器組壓入堆棧返
2、回時也不會彈出來節(jié)省代碼和時間外部中斷INT0void intsvr0(voidinterrupt0using1定時/計數(shù)器T0void timer0(voidinterrupt1using1外部中斷INT1void intsvr1(voidinterrupt2using1定時/計數(shù)器T1void timer1(voidinterrupt3using1串口中斷void serial0(voidinterrupt4using1單片機的C語言HNBCC培訓電話:137*一,中斷的概念中斷:當計算機執(zhí)行正常程序時,系統(tǒng)中出現(xiàn)某些急需處理的異常情況和特殊請求.中斷的執(zhí)行:當CPU正在執(zhí)行某一程序時,若
3、有中斷響應,則CPU轉(zhuǎn)而執(zhí)行中斷服務程序,當中斷服務程序執(zhí)行完畢后,CPU自動返回原來的程序繼續(xù)執(zhí)行.中斷服務程序的語句寫法與函數(shù)的寫法完全相同,所以,中斷服務程序也是函數(shù),只在函數(shù)頭部有不同(后續(xù).中斷服務程序的執(zhí)行與函數(shù)的執(zhí)行不同:函數(shù)的執(zhí)行是有固定位置的,是通過函數(shù)的調(diào)用來完成的;而中斷服務程序的執(zhí)行是不固定位置的,只要有中斷響應,在一定條件下都會去響應中斷,即執(zhí)行中斷服務程序.二,中斷源中斷源:任何引起計算機中斷的事件,一般一臺機器允許有許多個中斷源.8051系列單片機至少有5個可能的中斷(8052有6個,其它系列成員最多可達15個.下面以5個中斷源為例.8051單片機的五個中斷源是:
4、外部中斷請求0,由INT0(P3.2輸入;外部中斷請求1,由INT1(P3.3輸入;片內(nèi)定時器/計數(shù)器0溢出中斷請求;片內(nèi)定時器/計數(shù)器1溢出中斷請求;片內(nèi)串行口發(fā)送/接收中斷請求.三,與中斷有關(guān)的寄存器1,定時/計數(shù)器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0D7D6D5D4D3D2D1D0.IT0,IT1:外部中斷0,1觸發(fā)方式選擇位,由軟件設(shè)置;1下降沿觸發(fā)方式,INT0/INT1管腳上高到低的負跳變可引起中斷;0電平觸發(fā)方式,INT0/INT1管腳上低電平可引起中斷.IE0,IE1:外部中斷0,1請求標志位;當外部中斷0,l依據(jù)觸發(fā)方式滿足條件,產(chǎn)生中斷請求時由
5、硬件置位(IE0/IE1=1;當CPU響應中斷時由硬件清除(IE0/IE1=0.TR0,TR1:啟動定時/計數(shù)器0,1.TF0,TF1:定時器/計數(shù)器0,1(T/C0,T/C1溢出中斷請求標志;當T/C0,1計數(shù)溢出時由硬件置位(TF0/TF1=l;當CPU響應中斷由硬件清除(TFO/TF1=0.三,與中斷有關(guān)的寄存器2,串行口控制寄存器SCONTI RID7D6D5D4D3D2D1D0.RI:串行口接收中斷請求標志位;當串行口接收完一幀數(shù)據(jù)后請求中斷,由硬件置位(RI=1RI必須由軟件清"0".TI:串行口發(fā)送中斷請求標志位.當串行口發(fā)送完一幀數(shù)據(jù)后請求中斷,由硬件置位(
6、TI=1TI必須由軟件清"0".三,與中斷有關(guān)的寄存器3,中斷允許寄存器IEEA ET2ES ET1EX1ET0EX0D7D6D5D4D3D2D1D0.EX0,EX1:外部中斷0,1的中斷允許位;l外部中斷0,1開中斷;0外部中斷0,1關(guān)中斷.ET0,ET1:定時器/計數(shù)器0,1(T/C0,T/C1溢出中斷允許位;1T/C0,T/Cl開中斷;0T/C0,T/Cl關(guān)中斷.ES:串行口中斷允許位;1串行口開中斷;0串行口關(guān)中斷.ET2:定時器/計數(shù)器2(T/C2溢出中斷允許位;1T/C2開中斷;0T/C2關(guān)中斷.EA:CPU開/關(guān)中斷控制位.1CPU開中斷.0CPU關(guān)中斷.80
7、51復位時,IE被清"0",此時CPU關(guān)中斷,各中斷源的中斷也都屏蔽三,與中斷有關(guān)的寄存器4,中斷優(yōu)先級寄存器IPPS PT1PX1PT0PX0D7D6D5D4D3D2D1D0.PX0,PX1:外部中斷0,1中斷優(yōu)先級控制位;1高優(yōu)先級;0低優(yōu)先級.PT0,PT1:定時器/計數(shù)器0,1中斷優(yōu)先級控制位;1高優(yōu)先級;0低優(yōu)先級.PS:串行口中斷優(yōu)先級控制位;1高優(yōu)先級;0低優(yōu)先級.8051復位時,IP被清"0",5個中斷源都在同一優(yōu)先級,其內(nèi)部優(yōu)先級的順序從高到低為:外部中斷0(IE0定時器/計數(shù)器0(TF0外部中斷1(IE1定時器/計數(shù)器1(TF1串行口
8、中斷(RI+TI四,中斷響應8051的CPU在每個機器周期采樣各中斷源的中斷請求標志位,如果沒有下述阻止條件,將在下一個機器周期響應被激活了的最高級中斷請求:1.CPU正在處理同級或更高級的中斷;2.現(xiàn)行機器周期不是所執(zhí)行指令的最后一個機器周期;3.正在執(zhí)行的是RETI或是訪問IE或IP的指令.CPU在中斷響應后完成如下的操作:1.硬件清除相應的中斷請求標志;2.執(zhí)行一條硬件子程序,保護斷點,并轉(zhuǎn)向中斷服務程序人口3.結(jié)束中斷時執(zhí)行RETI指令,恢復斷點,返回主程序.8051的CPU在響應中斷請求時,由硬件自動形成轉(zhuǎn)向與該中斷源對應的服務程序入口地址,這種方法為硬件向量中斷法.五,中斷服務程序
9、的入口地址編號中斷源人口地址0外部中斷00003H1定時器/計數(shù)器0000BH2外部中斷10013H3定時器/計數(shù)器1001BH4串行口中斷0023H各中斷服務程序入口地址僅間隔8個字節(jié),編譯器在這些地址放入無條件轉(zhuǎn)移指令跳轉(zhuǎn)到服務程序的實際地址.六,中斷服務程序的語法規(guī)則中斷服務程序的語法規(guī)則如下:函數(shù)的返回值函數(shù)名(參數(shù)interrupt nusing m函數(shù)體;對中斷程序而言,函數(shù)的返回值和參數(shù)一般為errupt n中n的取值為031的常數(shù),不允許用表達式,表示中斷向量的編號. using m中m的取值為03的常數(shù),不允許用表達式,表示內(nèi)部RAM中的工作寄存器.七,中斷說
10、明中斷不允許用于外部函數(shù),它對函數(shù)目標代碼影響如下z·當調(diào)用函數(shù)時,SFR中的ACC,B,DPH,DPL和PSW(當需要時入錢;.如果不使用寄存器組切換,甚至中斷函數(shù)所需的所有工作寄存器都入錢;.函數(shù)退出前,所有的寄存器內(nèi)容出錢;·函數(shù)由8051的指令"RETI"終止.中斷服務程序使用的任何程序也使用同一寄存器組.八,中斷例子#includereg51.hunsigned char status;bit flag;void service_int(interrupt2using2flag=1;status=P1;void main(voidIP=0x04
11、;IE=0x84;for(;if(flagswitch(statuscase0:break;case1:break;case2:break;case3:break;default:;flag=0;圖見書中P148習題試設(shè)計滿足下列要求的電路圖:1單片機采用89C51,時鐘11.0592MHz;2有4個指示燈表示狀態(tài);3外接12位A/D芯片AD574;4有4*4的鍵盤;5有字符型LCD(畫成插座形式,12Pin插座,管腳接法見書P253;6有串行接口與計算機連接;7設(shè)置8位二進制的地址,地址范圍可表示為0255;8外接EEPROM.定時器/計數(shù)器(T/C8051系列單片機至少有兩個16位內(nèi)部定時
12、器/計數(shù)器,8052有三個定時器/計數(shù)器,其中有兩個是基本定時器/計數(shù)器是定時器/計數(shù)器.它們既可以編程為定時器使用,也可以編程為計數(shù)器使用.若是計數(shù)內(nèi)部晶振驅(qū)動時鐘,它是定時器;若是計數(shù),8051的輸入管腳的脈沖信號,它是計數(shù)器.當T/C工作在定時器時,對振蕩源12分頻的脈沖計數(shù),即每個機器周期計數(shù)值加1,計數(shù)率=1/12f osc.例當晶振為12MHz時,計數(shù)率=1000kHz,即每1s計數(shù)值加1.當T/C工作在計數(shù)器時,計數(shù)脈沖來自外部脈沖輸入管腳T0(P3.4或T1(P3.5,當T0或T1腳上負跳變時計數(shù)值加1.識別管腳上的負跳變需兩個機器周期,即24個振蕩周期.所以T0或T1腳輸入的
13、可計數(shù)外部脈沖的最高頻率為1/24fosc,當晶振為12MHZ時,最高計數(shù)率為500kHz,高于此頻率將計數(shù)出錯.一,與T/C有關(guān)的SFR1,計數(shù)寄存器Th和TLT/C是16位的,計數(shù)寄存器由TH高8位和TL低8位構(gòu)成.在特殊功能寄存器(SFR中,對應T/C0為TH0和TL0;對應T/C1為TH1和TL1.定時器/計數(shù)器的初始值通過TH1/TH0和TL1/TL0設(shè)置.2,定時器/計數(shù)器控制寄存器TCON前面已介紹.二,與T/C有關(guān)的SFR3,T/C的方式控制寄存器TMOD.C/T:計數(shù)器或定時器選擇位;1為計數(shù)器;0為定時器.GATE:門控信號;1T/C的啟動受到雙重控制,即要求TR0/TR1
14、和INT0/INT1同時為高;0T/C的啟動僅受TR0或TR1控制.GATE C/T M1M0GATE C/T M1M0D7D6D5D4D3D2D1D0T/C1T/C0三,四種工作方式M1M0方式功能00013位定時器/計數(shù)器,TL是低5位,TH是高8位01116位定時器/計數(shù)器102常數(shù)自動重裝的8位定時器/計數(shù)器113僅用于T/C0,是兩個8位定時器/計數(shù)器利用定時器編寫時鐘程序.四,T/C工作方式的說明1.方式0:當TMOD中MlM0=00時,T/C工作在方式0;方式0為13位的T/C,由TH的高8位,TL的低5位的計數(shù)值,滿計數(shù)值213,但啟動前可以預置計數(shù)初值.若T/C開中斷(ET=
15、1且CPU開中斷(EA=1時,則定時器/計數(shù)器溢出時,CPU轉(zhuǎn)向中斷服務程序時,且TF白動清0.2.方式1:當TMOD中MlM0=01時,T/C工作在方式1;方式1與方式0基本相同.唯一區(qū)別在于計數(shù)寄存器的位數(shù)是16位的,由TH和TL寄存器各提供8位,滿計數(shù)值為216.四,T/C工作方式的說明3.方式2:當TMOD中MlM0=10時,T/C工作在方式2;方式2是8位的可自動重載的T/C,滿計數(shù)值為28;在方式0和方式1中,當計數(shù)滿后,若要進行下一次定時/計數(shù),須用軟件向TH和TL重裝預置計數(shù)初值;方式2中TH和TL被當作兩個8位計數(shù)器,計數(shù)過程中,TH寄存8位初值并保持不變,由TL進行8位計數(shù)
16、.計數(shù)溢出時,除產(chǎn)生溢出中斷請求外,還自動將TH中初值重裝到TL,即重裝載. 4.方式3:方式3只適合于T/C0.當T/CO工作在方式3時,TH0和TL0成為兩個獨立的8位計數(shù)器.五,定時器/計數(shù)器的初始化在使用8051的定時器/計數(shù)器前,應對它進行編程初始化,主要是對TCON和TMOD編程;計算和裝載T/C的計數(shù)初值.一般完成以下幾個步驟:(1確定T/C的工作方式編程TMOD寄存器;(2計算T/C中的計數(shù)初值,并裝載到TH和TL;(3T/C在中斷方式工作時,須開CPU中斷和源中斷編程IE寄存器;(4啟動定時器/計數(shù)器編程TCON中TR1或TR0位.六,定時器/計數(shù)器的初值計算在定時器方式下,
17、T/C是對機器周期脈沖計數(shù)的,若fosc=12MHz,一個機器周期為12/fosc=1s,則:方式013位定時器最大定時間隔=213×1s=8.192ms;方式116位定時器最大定時間隔=216×1s=65.536ms;方式28位定時器最大定時間隔=28×1s=256s.若使T/C工作在定時器方式1,要求定時1ms,求計數(shù)初值.設(shè)計數(shù)初值為x,則有:(216-x×1s=1000s或x=216一1000因此,TH,TL可置-1000;即:TH=-1000/256;TL=-1000%256.對一般fosc有下列公式(設(shè)定時時間為times:(216-x
18、15;12/fosc=times例1,設(shè)單片機的fosc=12MHz,要求在P1.0腳上輸出周期為2ms的方波采用查詢方式.#includereg51.hsbit P1_0=P10;void main(voidTMOD=0x01;TR0=1;for(;TH0=-1000/256;TL0=-1000%256;dowhile(!TF0;P1_0=!P1_0;TF0=0;采用中斷方式.#includereg51.h>sbit P1_0=P10;void timer0(voidinterrupt1using1P1_0=!P1_0;TH0=-1000/256;TL0=-1000%256;void
19、main(voidTMOD=0x01;P1_0=0;TH0=-1000/256;TL0=-1000%256;EA=1;ET0=1;TR0=1;dowhile(1;例2,設(shè)單片機的fosc=6MHz,要求在P1.7腳上的指示燈亮一秒滅一秒. void main(voidP1_7=0;P1_0=1;TMOD=0x61;TH0=-50000/256;TL0=-50000%256;TH1=-5;TL1=-5;IP=0x08;EA=l;ET0=1;ET1=l;TR0=l;TR1=1;for(;#includesbit P1_0=P10;sbit P1_7=P17;void timer0(interrup
20、t1using1P1_0=!P1_0;TH0=-50000/256;TL0=-50000%256;void timer1(interrupt3using2P1_7=!P1_7;#define uchar unsigned charuchar time;uchar period=250;uchar high=50;void timer0(interrupt l using1TH0=-8333/256;TL0=-8333%256;if(+time=highP1=0;else if(time=periodtime=0;P1=1;void main(voidTMOD=0x01;TH0=-8333/25
21、6;TL0=-8333%256;EA=l;ET0=1;TR0=1;dowhile(1;#include#define uchar unsigned char#define uint unsigned intuchar time,status,percent,period;bit one_round;uint oldcount,target=500;void pulse(voidinterrupt1using lTH0=-833/256;TL0=-833%256;ET0=l;if(+time=percentP1=0;else if(time=100time=0;P2=l;void tachmet
22、er(voidinterrupt2using2unionuint word;structuchar hi;uchar lo;byte;newcount;newcount_byte.hi=TH1;newcount_byte.lo=TLl;period=newcount.word-oldcounts;oldcount=newcount.word;one-round=1;void main(voidIP=0x04;TMOD=0x01;TCON=0x54;TH1=0;TL1=0;IE=0x86;for(;if(one_roundif(periodif(percent0-percent;串行口8051系
23、列單片機有一個標準的串行通信接口,發(fā)送數(shù)據(jù)時由TXD端口送出,接收數(shù)據(jù)時由RXD 端口輸入.內(nèi)置兩個緩沖器SBUF,一個接受緩沖器,另一個是接收緩沖器,可實行全雙工的串行通信.近距離可直接用TTL電平,若與計算機通信,則需要將電平轉(zhuǎn)換成RS232電平形式,若需長距離通信可以采用RS485電平形式,通信的數(shù)據(jù)必須通過軟件的編寫來完成.一,與串行口有關(guān)的SFR1,串行口控制寄存器SCONSM0SM1SM2REN TB8RB8TI RID7D6D5D4D3D2D1D0.SM0,SM1:串行口工作方式控制位(見書P158.SM2:多機通信控制位(方式2,3;1只有接收到第9位(RB8為1,RI才置位;
24、0接收到字符RI就置位.REN:串行口接收允許位;1允許串行口接收;0禁止串行口接收.TB8:方式2和方式3時,為發(fā)送的第9位數(shù)據(jù),也可以作奇偶校驗位.RB8:方式2和方式3時,為接收到的第9位數(shù)據(jù);方式1時,為接收到的停止位.TI:發(fā)送中斷標志;由硬件置位,必須由軟件清0.RI:接收中斷標志;由硬件置位,必須由軟件清0.一,與串行口有關(guān)的SFR2,電源控制寄存器PCONSMODD7D6D5D4D3D2D1D0PCON的第7位SMOD是與串行口的波特率設(shè)置有關(guān)的選擇位.SMOD:串行口波特率加倍位.1方式1,3波特率=定時器1溢出率/16;方式2波特率為fosc/32;0方式1,3波特率=定時
25、器1溢出率/32;方式2波特率為fosc/64.二,串行口的工作方式1.方式0方式0為移位寄存器輸入/輸出方式,串行數(shù)據(jù)通過RXD輸入/輸出,TXD則用于輸出移位時鐘脈沖.方式0時,收發(fā)的數(shù)據(jù)為8位,低位在前.波特率固定為fosc/12,其中fosc為單片機外接晶振頻率.發(fā)送是以寫SBUF寄存器的指令開始的,8位輸出結(jié)束時TI被置位.二,串行口的工作方式2.方式1方式1是10位異步通信方式,1位起始位(0,8位數(shù)據(jù)位和1位停止位(1.其中的起始位和停止位在發(fā)送時是自動插入的.接收到的停止位為1;方式1的波特率是可變的,波特率可由以下計算公式計算得到:方式1波特率=2SMOD.(定時器1的溢出率
26、/32其中的SMOD為PCON的最高位.定時器1的方式0,1,2,都可以使用,其溢出率為定時時間的倒數(shù)值.二,串行口的工作方式3.方式2和方式3這兩種方式都是11位異步接收/發(fā)送方式,它們的操作過程完全一樣,所不同的是波特率:方式2波特率=2SMOD.(fosc/64;方式3波特率同方式1(定時器l作波特率發(fā)生器.三,串行口的初始化在使用串行口之前,應對它進行編程初始化,主要是設(shè)置產(chǎn)生波特率的定時器1,串行口控制和中斷控制寄存器.具體步驟如下:(1確定定時器1的工作方式編程TMOD寄存器;(2計算定時器1的初值裝載TH1,TL1,具體TH1和TL1的值可查表得到;(3啟動定時器1編程TCON中
27、的TR1位,即置TR1為1;(4確定串行口的控制編程SCON;(5串行口在中斷方式工作時,須開CPU和源中斷編程IE寄存器.四,串行口舉例1#includereg51.h>#define uchar unsigned char#define uint unsigned int uchar idata trdata10= 'M','C','S','-','5','1', 0x0d, 0x0a,0x00; void main(void uchar i; uint j; TMOD=0x20; TL1=0xfd;TH1=0xfd; SCON=0xd8;PCON=0x00; TR1=1; while(1 i=0; while(trdatai!=0x00 SBUF=trdatai; while(TI=0; TI=0; i+; for (j=0;j void main(void unsigned char a; TMOD=Ox20; TL1=0xfd;TH1=0xfd; SCON=Oxd8;PCON=0x00; TR
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學年高中政治第3單元思想方法與創(chuàng)新意識課時作業(yè)18用對立統(tǒng)一的觀點看問題含解析新人教版必修4
- 2024-2025學年新教材高中歷史第三單元遼宋夏金多民族政權(quán)的并立與元朝的統(tǒng)一單元評估課后作業(yè)含解析新人教版必修中外歷史綱要上
- 2025年度盤扣建筑構(gòu)件質(zhì)量控制檢測合同4篇
- 2025年度汽車制造企業(yè)總經(jīng)理聘請及智能制造合同范本4篇
- 二零二五年度智慧社區(qū)安防系統(tǒng)安裝施工合同范本3篇
- 二零二五年度窗簾產(chǎn)業(yè)園區(qū)建設(shè)與管理合同3篇
- 二零二五年度四人合伙企業(yè)股權(quán)投資合同3篇
- 2025年度餐飲多人合伙經(jīng)營營銷推廣合同范本3篇
- 二手房購買補充合同:2024年定制版版B版
- 二零二五年度2025版二手設(shè)備存量買賣服務協(xié)議2篇
- 產(chǎn)品共同研發(fā)合作協(xié)議范本5篇
- 風水學的基礎(chǔ)知識培訓
- 吸入療法在呼吸康復應用中的中國專家共識2022版
- 1-35kV電纜技術(shù)參數(shù)表
- 信息科技課程標準測(2022版)考試題庫及答案
- 施工組織設(shè)計方案針對性、完整性
- 2002版干部履歷表(貴州省)
- DL∕T 1909-2018 -48V電力通信直流電源系統(tǒng)技術(shù)規(guī)范
- 2024年服裝制版師(高級)職業(yè)鑒定考試復習題庫(含答案)
- 門診部縮短就診等候時間PDCA案例-課件
評論
0/150
提交評論