




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第七章內(nèi)部資源第七章內(nèi)部資源C編程編程一、中斷應(yīng)用的一、中斷應(yīng)用的C C語言編程語言編程 C51 C51編譯器支持在編譯器支持在C C源程序中直接開發(fā)中斷程序。中斷服務(wù)源程序中直接開發(fā)中斷程序。中斷服務(wù)程序是通過按規(guī)定語法格式定義的一個(gè)函數(shù)。程序是通過按規(guī)定語法格式定義的一個(gè)函數(shù)。 中斷服務(wù)程序的函數(shù)定義的語法格式如下:中斷服務(wù)程序的函數(shù)定義的語法格式如下: 返回值返回值 函數(shù)名函數(shù)名(參數(shù)參數(shù)) ) 模式模式重入重入 interrupt m using n interrupt m using n nterrupt m nterrupt m 其中其中m m是中斷號(hào)是中斷號(hào)(0(0到到31)31
2、),中斷號(hào)告訴編譯器中,中斷號(hào)告訴編譯器中斷程序的入口地址,中斷號(hào)對(duì)應(yīng)著斷程序的入口地址,中斷號(hào)對(duì)應(yīng)著IEIE寄存器中的使能位。寄存器中的使能位。下表給出了對(duì)應(yīng)關(guān)系下表給出了對(duì)應(yīng)關(guān)系 IE 寄存器中的使能位和寄存器中的使能位和C 中的中斷號(hào)中的中斷號(hào)中斷源中斷源入口地址入口地址0 外部中斷外部中斷00003H1 定時(shí)器定時(shí)器0 溢出溢出000BH2 外部中斷外部中斷10013H 3 定時(shí)器定時(shí)器1 溢出溢出001BH4 串行口中斷串行口中斷0023H5 定時(shí)器定時(shí)器2 溢出溢出002BH 在進(jìn)入中斷服務(wù)程序前的程序中使用一組工作寄存器,進(jìn)在進(jìn)入中斷服務(wù)程序前的程序中使用一組工作寄存器,進(jìn)入中斷
3、服務(wù)程序后,由入中斷服務(wù)程序后,由“using n”切換到另一組寄存器,中斷返切換到另一組寄存器,中斷返回后又恢復(fù)到原寄存器組。這樣互相切換的兩組寄存器中的內(nèi)回后又恢復(fù)到原寄存器組。這樣互相切換的兩組寄存器中的內(nèi)容彼此都沒有被破壞。容彼此都沒有被破壞。 為中斷程序指定工作寄存器組的缺點(diǎn)是為中斷程序指定工作寄存器組的缺點(diǎn)是:所有被中斷調(diào)用的所有被中斷調(diào)用的過程都必須使用同一個(gè)寄存器組過程都必須使用同一個(gè)寄存器組,否則參數(shù)傳遞會(huì)發(fā)生錯(cuò)誤。否則參數(shù)傳遞會(huì)發(fā)生錯(cuò)誤。 中斷不允許用于外部函數(shù),它對(duì)函數(shù)目標(biāo)代碼影響如下:中斷不允許用于外部函數(shù),它對(duì)函數(shù)目標(biāo)代碼影響如下: 當(dāng)調(diào)用函數(shù)時(shí),當(dāng)調(diào)用函數(shù)時(shí),SFR
4、中的中的ACC,B,DPH,DPL和和PSW入入棧。如果不使用寄存器組切換,則甚至中斷函數(shù)所需要的所有棧。如果不使用寄存器組切換,則甚至中斷函數(shù)所需要的所有工作寄存器都入棧。工作寄存器都入棧。 函數(shù)退出前,所有的寄存器內(nèi)容出棧;函數(shù)退出前,所有的寄存器內(nèi)容出棧; 函數(shù)由函數(shù)由8051的指令的指令RETI終止。終止。 例:如圖所示是利用優(yōu)先權(quán)解碼芯片,在單片機(jī)例:如圖所示是利用優(yōu)先權(quán)解碼芯片,在單片機(jī)80318031的一的一個(gè)外部中斷個(gè)外部中斷INT1INT1上擴(kuò)展多個(gè)中斷源的原理電路圖。圖中是以開上擴(kuò)展多個(gè)中斷源的原理電路圖。圖中是以開關(guān)閉合來模擬中斷請(qǐng)求信號(hào)。當(dāng)有任一中斷源產(chǎn)生中斷請(qǐng)求,關(guān)閉
5、合來模擬中斷請(qǐng)求信號(hào)。當(dāng)有任一中斷源產(chǎn)生中斷請(qǐng)求,能給能給80318031的的INT1INT1引腳送一個(gè)有效中斷信號(hào),由引腳送一個(gè)有效中斷信號(hào),由P1P1的低的低3 3位可得對(duì)位可得對(duì)應(yīng)中斷源的中斷號(hào)。多個(gè)中斷源的處理。應(yīng)中斷源的中斷號(hào)。多個(gè)中斷源的處理。 在中斷服務(wù)程序中僅設(shè)置標(biāo)志,并保存在中斷服務(wù)程序中僅設(shè)置標(biāo)志,并保存I/OI/O口輸入狀態(tài)??谳斎霠顟B(tài)。 C51C51編譯器提供定義特定編譯器提供定義特定80C5180C51系列成員的寄存器頭文件。系列成員的寄存器頭文件。 80C5180C51頭文件為頭文件為reg51.hreg51.h。 C51C51程序如下:程序如下:主程序主程序初始化
6、INT1清標(biāo)志清標(biāo)志處理處理標(biāo)志設(shè)置?標(biāo)志設(shè)置?YN返返回回設(shè)置標(biāo)志設(shè)置標(biāo)志存狀態(tài)存狀態(tài)外中斷外中斷1 # include unsigned char status; bit flag; void service_int1( ) interrupt 2 using 2 /* INT1中斷服務(wù)程序,用第中斷服務(wù)程序,用第2組工作寄存器組工作寄存器 */ flag=1; /* 設(shè)置標(biāo)志設(shè)置標(biāo)志 */ status=p1; /* 存輸入口狀態(tài)存輸入口狀態(tài) */ void main(void) IP=0 x04 ; /* 置置INT1為高優(yōu)先級(jí)中斷為高優(yōu)先級(jí)中斷 */ IE=0 x84 ; /* IN
7、T1開中斷,開中斷,CPU開中斷開中斷 */ for(; ;) if(flag) /* 有中斷有中斷 */ switch(status) /* 根據(jù)中斷源分支根據(jù)中斷源分支 */ case 0 : break ; /* 處理處理IN0 */ case 1 : break ; /* 處理處理IN1 */ case 2 : break; /* 處理處理IN2 */ case 3 : break; /* 處理處理IN3 */ default : ; flag=0 ; /* 處理完成清標(biāo)志處理完成清標(biāo)志 */ 例例1 1:在:在XTALXTAL頻率是頻率是12MHZ12MHZ的標(biāo)準(zhǔn)的標(biāo)準(zhǔn)8051805
8、1器件上,用器件上,用TIME1TIME1(定(定時(shí)器時(shí)器/ /計(jì)數(shù)器計(jì)數(shù)器1 1)產(chǎn)生)產(chǎn)生10KHz10KHz定時(shí)器滴答中斷。定時(shí)器滴答中斷。 分析:采用分析:采用TIME1TIME1的工作模式的工作模式2 2,則:,則: TMOD=20HTMOD=20H, 機(jī)器周期機(jī)器周期=12/fosc=12/fosc=,T=1/10KHZ= 100 s T=1/10KHZ= 100 s (256 -256 -次數(shù))次數(shù))* *1 s=100 s 1 s=100 s TH1=TL1=256-100 TH1=TL1=256-100 采用中斷方式:采用中斷方式:EA=1EA=1,ET1=1ET1=1二、定
9、時(shí)器二、定時(shí)器/ /計(jì)數(shù)器應(yīng)用的計(jì)數(shù)器應(yīng)用的C C語言編程語言編程#include #include static unsigned long overflowcount=0;static unsigned long overflowcount=0;void time1(void) interrupt 3 void time1(void) interrupt 3 overflowcount+; / overflowcount+; /溢出計(jì)數(shù)器加溢出計(jì)數(shù)器加1 1 void main(void) void main(void) TMOD=(TMOD&0 x0F)|0 x20; TMOD=
10、(TMOD&0 x0F)|0 x20; TH1=256-100; TH1=256-100; TL1=TH1; TL1=TH1; ET1=1; ET1=1; EA=1;TR1=1; EA=1;TR1=1; while(1); while(1); (1) (1) 用定時(shí)器用定時(shí)器0 0的方式的方式1 1編程,采用查詢方式,程序如下:編程,采用查詢方式,程序如下: #include #include sbit P1_0=P10 sbit P1_0=P10 ; void main(void)void main(void) TMOD=0 x01 TMOD=0 x01 ; / /* * 設(shè)置定時(shí)器
11、設(shè)置定時(shí)器1 1為控制方式為控制方式1 1* */ / TR0=1 TR0=1 ; / /* * 啟動(dòng)啟動(dòng) T/C0 T/C0 * */ / for( for( ; ;) ) TH0= ( TH0= ( -1000 ) /256 -1000 ) /256 ; / /* * 裝載計(jì)數(shù)器初值裝載計(jì)數(shù)器初值 * */ / TL0= ( TL0= ( -1000 ) %256 -1000 ) %256 ; do while (!TF0) do while (!TF0) ; / /* * 查詢等待查詢等待TF0TF0置位置位 * */ / P1_0=!P1_0 P1_0=!P1_0; / /* * 定時(shí)
12、時(shí)間到定時(shí)時(shí)間到P1.0P1.0反相反相 * */ / TF0=0 TF0=0; / /* * 軟件清軟件清 TF0 TF0 * */ / (2) (2) 用定時(shí)器用定時(shí)器0 0的方式的方式1 1編程,采用中斷方式。程序如下:編程,采用中斷方式。程序如下: #include #include sbit P1_0=P10 sbit P1_0=P10 ; void time (void) interrupt 1 using 1 void time (void) interrupt 1 using 1 P1_0=!P1_0 P1_0=!P1_0 ; / /* * P1.0 P1.0取反取反 * */
13、 / TH0= ( TH0= ( -1000 ) /256 -1000 ) /256 ; * * 重新裝載計(jì)數(shù)初值重新裝載計(jì)數(shù)初值 * */ / TL0= ( TL0= ( -1000 ) %256 -1000 ) %256 void main( void ) void main( void ) TMOD=0 x01 TMOD=0 x01 ; / /* * T/C0 T/C0工作在定時(shí)器非門控制方式工作在定時(shí)器非門控制方式1 1 * */ / P1_0=0 P1_0=0; TH0= (TH0= ( -1000 ) /256 -1000 ) /256 ; / /* * 預(yù)置計(jì)數(shù)初值預(yù)置計(jì)數(shù)初值
14、* */ / TL0= ( TL0= ( -1000 ) %256 -1000 ) %256 ; EA=1 EA=1 ; / /* * CPU CPU中斷開放中斷開放 * */ / ET0= 1 ET0= 1 ; / /* * T/C0 T/C0中斷開放中斷開放 * */ / TR0=1 TR0=1 ; / /* * 啟動(dòng)啟動(dòng)T/C0T/C0開始定時(shí)開始定時(shí) * */ / do while(1) do while(1) ; / /* * 等待中斷等待中斷 * */ / 例例3:采用:采用10 MHz晶振,在晶振,在P1.0腳上輸出周期為腳上輸出周期為2.5 s,占空,占空比比20%的脈沖信號(hào)。
15、的脈沖信號(hào)。 分析:分析: 10 MHz晶振,使用定時(shí)器最大定時(shí)幾十毫秒。取晶振,使用定時(shí)器最大定時(shí)幾十毫秒。取10 ms定時(shí),定時(shí),周期周期2.5 s需需250次中斷,占空比次中斷,占空比20%,高電平應(yīng)為,高電平應(yīng)為50次中斷。次中斷。 10 ms定時(shí),晶振定時(shí),晶振fosc=10 MHz。 需定時(shí)器計(jì)數(shù)次數(shù)需定時(shí)器計(jì)數(shù)次數(shù)=1010310/12=8333# include # include # define uchar unsigned char# define uchar unsigned charuchar period=250uchar period=250;uchar high
16、=50uchar high=50;timer0( )interrupt 1 using 1 /timer0( )interrupt 1 using 1 /* * T/C0 T/C0中斷服務(wù)程序中斷服務(wù)程序 * */ / TH0= ( TH0= ( 8333 8333)/256 /256 ; / /* * 重置計(jì)數(shù)值重置計(jì)數(shù)值 * */ / TL0= ( TL0= ( 8333 8333)%256 %256 ; if(+time=high)P1=0; /* 高電平時(shí)間到變低高電平時(shí)間到變低 */ else if (time=period) /* 周期時(shí)間到變高周期時(shí)間到變高 */ time=0
17、; P1=1 ; main( )main( ) TMOD=0 x01 TMOD=0 x01 ; / /* * 定時(shí)器定時(shí)器0 0方式方式1 1 * */ / TH0= ( TH0= ( 8333 8333) /256 /256 ; TL0= (TL0= ( 8333 8333) %256 %256 ; EA=1EA=1; / /* * 開開CPUCPU中斷中斷 * */ / ET0=1 ET0=1 ; / /* * 開開T/C0T/C0中斷中斷 * */ / TR0=1 TR0=1 ; / /* * 啟動(dòng)啟動(dòng)T/C0 T/C0 * */ / do while(1) do while(1) ;
18、TL1=0 xfd; TH1=TL1; TL1=0 xfd; TH1=TL1; SCON=0 xd8;PCON=0 x00; SCON=0 xd8;PCON=0 x00; TR1=1; TR1=1; while(1) while(1) i=0; i=0; while(trdatai!=0 x00) while(trdatai!=0 x00) SBUF= trdatai; SBUF= trdatai; while(TI=0); while(TI=0); TI=0; TI=0; i+; i+; for(j=0;j12500;j+); for(j=0;j12500;j+); 單片機(jī)串行口發(fā)送單片機(jī)串行口發(fā)送/ /接收程序,每接收到字節(jié)即刻發(fā)送出去;接收程序,每接收到字節(jié)即刻發(fā)送出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 新解讀《CB-T 3873-1999舷窗矩形窗密封墊料》新解讀
- 新解讀《CB-T 60 - 1999船用眼板》新解讀
- 質(zhì)量保證措施
- 論土地所有權(quán)和使用權(quán)爭議處理
- 汽車傳感器與檢測技術(shù)電子教案:霍爾式節(jié)氣門位置傳感器
- 濟(jì)南市佳興天城營銷推廣策略報(bào)告52p
- 介紹家鄉(xiāng)教學(xué)活動(dòng)方案
- 物理中考一輪復(fù)習(xí)教案 第一講 聲現(xiàn)象
- 從裝開業(yè)活動(dòng)方案
- 倉鼠手工活動(dòng)方案
- 2022年高中英語學(xué)科教學(xué)計(jì)劃
- DB51T 2845-2021 連續(xù)玄武巖纖維生產(chǎn)原料技術(shù)規(guī)范
- 生物化學(xué)檢驗(yàn)技術(shù) 課件 第七章 糖代謝紊亂檢驗(yàn)
- 物理-2025年中考終極押題猜想(廣州專用)(原卷版)
- 【MOOC】機(jī)械原理-西北工業(yè)大學(xué) 中國大學(xué)慕課MOOC答案
- GB/T 36547-2024電化學(xué)儲(chǔ)能電站接入電網(wǎng)技術(shù)規(guī)定
- 江蘇省蘇州市(2024年-2025年小學(xué)五年級(jí)語文)統(tǒng)編版期末考試(下學(xué)期)試卷及答案
- 手術(shù)室護(hù)士長年終述職
- 2024年度城市供水管道維修服務(wù)合同
- 鋼絲網(wǎng)骨架塑料管的質(zhì)量控制方案
- GB/T 15822.1-2024無損檢測磁粉檢測第1部分:總則
評(píng)論
0/150
提交評(píng)論