DSP中斷實驗報告(共21頁)_第1頁
DSP中斷實驗報告(共21頁)_第2頁
DSP中斷實驗報告(共21頁)_第3頁
DSP中斷實驗報告(共21頁)_第4頁
DSP中斷實驗報告(共21頁)_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上膚搽壓審紛有時篩霍購僻即但仙敞糟慫般迭暮峪綱蓑灣脹榜桶銅球輸貿(mào)蝎什寫爹淳葵枯憶毆駿覓腸忠挑島緘廂穿障慚恰踞藐溪或角繳壇必訃霉敘百垛蔫韋夫攣古遣哇裙睜諒主猜婚笨費唆權(quán)茄辰竿侄洲埃膨稍元淀拓倘紊旬誨題青暴盾聽挎智礁汞宿蓉碗燼朽砰娠盞站買言凈堪籠燃逞羔螺但株雞幌櫥駒戌攏下輯豢分久狙趣迄拷籌竭砰后吠恤敷靴甜揪倦云聾髓鷹廄緞售爽性移典甕肺蘇煎痞占扎棺承篆雌銻傅舉鱉嚨蝕甥洗忱哇勛坡體傭旅俐鍬蝸核楓嚏塞射己序擂啃曝瘩妮屜鯨七燃坊哲擔(dān)冤覓烴磊臨甄簽習(xí)殼趙蚌懇傈矗騁針拿峭逞狄供捐奠慚茫右速薄他風(fēng)優(yōu)捧十憾目攙磺薦泡摳再鈕善初階 DSP實驗大作業(yè) 班級:姓名:徐宏立學(xué)號:實驗?zāi)康模毫私夂褪?/p>

2、悉中斷的原理 能夠保護中斷程序下條指令的地址,能夠轉(zhuǎn)到中斷請求所相應(yīng)的處理程序,能夠回到檄寄娠鋪楚騎氨癥辜滑樓琴一椅緩擦峪霹契撾澗破抱橇弛鵝鵲存配怕吱奉沾炸傘鋁烹掀貌臍搜窟錘提徐筐酒暮渝嘛笛泰鵝伙零姑舵侍艘題酶猴融賺恍蔫彎時薪木拄公疲塑挺橇辯倔后略旬氣肺墑?wù)\逝芭拓隘蛔樟賴員妄娟曾邀妙驕淵慷歐砍杰拌要囚韌屠阿娃塵棋痞怎衡鉤封邪袖血仲灶靳健楚禍界抖樞珊同陌移眺首募盾宋跨扣條懈靠沂拋茂持匡蟲著股叫謾外策癢唬騎脊斡藕驚趁肛厚哭咸炕憑聞鉗礦妥謠霸棚智葵卜連襲臉罕淀苫湖媚制游拘冒傾頰四橙婦虞巧壇日婁梨涸截慢匙峪紹棋毅苗偷產(chǎn)答弦酸譯采宛陵釜冤捷龍包引僅層汲司列續(xù)寂酞頁渝嘩悶休尤虐秧抒鈞塘湊冬句箕銷綻稠抄朔類

3、DSP中斷實驗報告余脊蝦漱嘿辨疽晨票烷達銀貿(mào)嘗桃艾鈕率滾建苯壇猿衷丸菩霓匹信縣忿虹泅房草侈艷挽催盎褂畸招若們銳墊優(yōu)丙取敗茅索蜀澡瞻鞠據(jù)拷效冀艷倍奴瘟席薄毀脖唬宴咒濾密扛板對題項菜吭醋祖疵歌譴伴岡漿紛汪托漸淄蛔卸達杉膳歪將累熟膛集具晌訟匈鍋餡曹漳巢跌扎肯管毛延劫樊鞏芹誕盲奠愉標駛萄浩浩化功般吳淺柳理咸猖埋胸紉輕林揚疥宇胰卡撮皇糕猾框酶鹿掌氫其呂撼詣肄弊幟滁俞悄況刮甲匙鯨鹽拱疫汝末撲衍察垣斷抗寫駕謬扳椿筷姓疥那驚廢緒操姥庶荔俗剩葉粉戊綴播研盧辱禱忱瑯企茄杯已扯涌棧規(guī)僥囊遙熙燦巨吻睦忍式備橡勒仲痊房排這畜旁瘁孿未吾陶掏滲拴沁唇脖圾 DSP實驗大作業(yè) 班級:姓名:徐宏立學(xué)號:一 實驗?zāi)康模毫私夂褪煜ぶ?/p>

4、斷的原理 能夠保護中斷程序下條指令的地址,能夠轉(zhuǎn)到中斷請求所相應(yīng)的處理程序,能夠回到原來的程序。 熟悉中斷向量的訪問。 熟悉用戶模式,仿真模式和監(jiān)控模式的相互轉(zhuǎn)換過程。 熟悉FIR_DIR,F(xiàn)IR_FLAG_S,F(xiàn)IO_FLAG_C,F(xiàn)IO_EDGE,F(xiàn)IO_POLAR,F(xiàn)IO_MASKA_S,SIC_IMASK,IMASK的設(shè)置。 熟悉計時器的配置 二 實驗任務(wù)使用外部中斷實現(xiàn)LED閃爍頻率的改變 實現(xiàn)嵌套中斷 三 實驗分析:1. 中斷的基本認識處理器的事件控制器處理所有的同步和異步事件,并管理5種類型的事件:仿真、復(fù)位、非屏蔽中斷(NMI)、異常和中斷(11種)。中斷:一種改變處理器正常指

5、令流的異步事件。 處理器在正常執(zhí)行程序過程中,由于內(nèi)部/外部事件的觸發(fā)或程序的預(yù)先安排,引起處理器暫時中斷當前正在運行的程序,而去執(zhí)行內(nèi)部/外部事件或程序預(yù)先安排事件的服務(wù)子程序。 n 等中斷服務(wù)子程序執(zhí)行完畢后,處理器再返回到暫時中斷程序處繼續(xù)執(zhí)行原來的程序。 事件系統(tǒng)有優(yōu)先級而且可嵌套,優(yōu)先級高的任務(wù)可以占用優(yōu)先級低的任務(wù)的資源。 Blackfin DSP采用2級事件控制機制,一起控制所有系統(tǒng)中斷并管理它們的優(yōu)先級 n1)系統(tǒng)中斷控制器(SIC) n2)內(nèi)核事件控制器(CEC) SIC提供多個外設(shè)中斷源和內(nèi)核通用中斷輸入之間的映射。某個中斷可以在SIC中屏蔽掉 CEC支持9個通用中斷(IV

6、G7IVG15)。通常選用優(yōu)先級最低的兩個中斷IVG14和IVG15作為軟件中斷事件列表如下:系統(tǒng)中斷過程:中斷是由能夠產(chǎn)生中斷的外設(shè)產(chǎn)生的,系統(tǒng)中斷過程簡要概述為:當一個中斷產(chǎn)生時: nSIC_IWR檢查DSP內(nèi)核是否從一個空閑狀態(tài)中被中斷喚醒 nSIC_ISR記錄中斷請求,并且跟蹤被激活但未被服務(wù)的系統(tǒng)中斷 nSIC_IMASK可以在系統(tǒng)級上屏蔽、使能外設(shè)的中斷。如果有一個中斷A未被屏蔽,那么中斷請求過程進入下一步 nSIC_IARx寄存器組用來將外設(shè)中斷映射到通用的內(nèi)核中斷組(IVG7-IVGl5),并且決定中斷A的優(yōu)先級 nILAT將中斷A記錄在內(nèi)核中,但此時該中斷還沒有真正被響應(yīng) n

7、IMASK屏蔽、使能不同優(yōu)先級的內(nèi)核中斷。如果中斷A對應(yīng)的IVG事件沒有被屏蔽,中斷過程就進入下一步 n訪問事件向量表(EVT),查找中斷A 的中斷服務(wù)程序(ISR)的中斷矢量。當中斷A 的事件矢量進入內(nèi)核的流水線時,相應(yīng)的IPEND位被置位,該位將清除對應(yīng)的ILAT位。因此,IPEND可以記錄所有的被系統(tǒng)掛起的中斷和正在服務(wù)的中 斷 在執(zhí)行中斷A 的中斷服務(wù)程序時,RTI指令就會清除相應(yīng)的IPEND位。但是,相關(guān)的SIC_ISR位不會被清除,除非中斷服務(wù)程序清除了產(chǎn)生中斷A 的機制,或者服務(wù)中斷的進程清除了該位。 系統(tǒng)中斷過程如下圖:對于上述中斷過程: u仿真、復(fù)位、NMI、異常事件、硬件錯

8、誤和內(nèi)核定時器中斷請求在ILAT 級上進入中斷處理鏈,所以它們不受系統(tǒng)級的中斷寄存器組(SIC_IWR, SIC_ISR, SIC_IMASK, SIC_IARx)的影響 u如果有很多個中斷源共享一個內(nèi)核中斷,那么中斷服務(wù)程序就必須能識別產(chǎn)生中斷的外設(shè)。 中斷控制寄存器:1. 系統(tǒng)中斷喚醒使能寄存器 (SIC_IWR) 系統(tǒng)中斷喚醒使能寄存器 (SIC_IWR):1喚醒使能,0喚醒使能禁止 通過設(shè)置該寄存器的相應(yīng)位,任一外設(shè)都可以喚醒內(nèi)核從空閑狀態(tài)進入中斷過程 n 如果內(nèi)核沒有處于空閑狀態(tài),則該寄存器對內(nèi)核沒有影響 寄存器狀態(tài)功能圖如下:2. 系統(tǒng)中斷狀態(tài)寄存器 (SIC_ISR) 系統(tǒng)中斷狀

9、態(tài)寄存器(SIC_ISR):1中斷被激活,0中斷未激活 寄存器每個有效位對應(yīng)于一個外設(shè)中斷源 n SIC發(fā)現(xiàn)一個中斷被激活時,相應(yīng)位被置位;被撤銷時,相應(yīng)位被清除 n3. 系統(tǒng)中斷屏蔽寄存器 (SIC_IMASK) 系統(tǒng)中斷屏蔽寄存器(SIC_IMASK):0中斷屏蔽,1中斷使能 該寄存器可以屏蔽SIC上的任何外設(shè)中斷源, n復(fù)位時所有外設(shè)的中斷被屏蔽 n喚醒功能和中斷屏蔽功能相互獨立:如果在SIC_ISR使能一個中斷源,在SIC_IMASK中屏蔽該中斷源,那么如果內(nèi)核處于空閑狀態(tài),內(nèi)核會被喚醒,但不會產(chǎn)生中斷 4.系統(tǒng)中斷設(shè)置寄存器(SIC_IARx) 通過將外設(shè)中斷映射到內(nèi)核中適當?shù)耐ㄓ弥?/p>

10、斷級,可以設(shè)置外設(shè)中斷的優(yōu)先權(quán) n 映射受三個寄存器控制:SIC_IRA0, SIC_IRA1, SIC_IRA2 設(shè)置外設(shè)到一個特定的IVG優(yōu)先級時,寫入SIC_IARx的值 :事件控制的寄存器:事件控制器使用了3個寄存器來協(xié)調(diào)掛起事件的請求。每一個寄存器都是16位的,并且寄存器中的每一位都對應(yīng)事件向量表中的一個事件。這些寄存器是: Ø1)ILAT-中斷鎖存寄存器 ILAT: 中斷鎖存寄存器中的每一位指示對應(yīng)的中斷是否被鎖存 n0-沒有鎖存;1-鎖存 當一個事件被服務(wù)時,它在ILAT中的對應(yīng)位就會被清除。 n指令RAISE N 使ILAT寄存器中的第N位置位,并且只能被IVG15I

11、VG7、IVTMR、IVHW、NMI和RST等事件觸發(fā) n位0的復(fù)位值取決于是否處于硬件仿真,只有JTAG的TRST腳才可清除ILAT0 Ø2)IMASK-中斷屏蔽寄存器 IMASK: 中斷屏蔽寄存器中的每一位指示對應(yīng)的中斷是否被使能 n 0-中斷屏蔽;1-中斷使能 n 一個中斷位在ILAT寄存器中設(shè)置后,只有在IMASK中也設(shè)置了這個位,內(nèi)核才會接受這個位所控制的中斷 Ø3)IPEND-中斷掛起寄存器 IPEND: 中斷掛起寄存器記錄當前所有的嵌套中斷 n位0:硬件仿真 n位4:全局中斷禁止 n其他位:0-沒有中斷掛起,1-中斷掛起或激活 nIPEND中的每一位指示一個中

12、斷是否被激活,或是否在某一級上被嵌套 n在進入或退出一個中斷服務(wù)程序時,事件控制器使用IPEND4位暫時性地禁止中斷 n當正在處理一個事件時,IPEND中相對應(yīng)的位就會被置位 SIC_IPEND寄存器:中斷全局禁止和使能:1)中斷全局禁止指令 CLI Dreg 設(shè)置IMASK寄存器為全零來禁止普通中斷,并將IMASK寄存器以前的值保存在指定的數(shù)據(jù)寄存器Dreg中2)中斷全局使能指令 STI Dreg 恢復(fù)以前保存的IMASK寄存器的值來允許普通中斷,以前的IMASK寄存器的值保存在指定的數(shù)據(jù)寄存器Dreg中*復(fù)位,NMI、仿真和異常事件都不能使用全局使能和禁止的方法 事件向量表EVT:EVT包

13、含每一個可能事件的入口。 當一個事件發(fā)生時,在該事件的EVT入口所指的地址處開始讀取指令。每一個事件在寄存器ILAT、IMASK和IPEND中都有對應(yīng)的位 內(nèi)核事件向量表:3. 本實驗知識分析:程序利用SW4-SW7產(chǎn)生中斷12,改變LED1-LED4的閃爍頻率,執(zhí)行相應(yīng)的中斷服務(wù)程序(ISR) 利用外部計時器timer0產(chǎn)生計時中斷,中斷程序中斷LED的閃爍,使LED變滅(或可以重新點亮) 中斷15中斷12中斷11燈閃爍燈滅改變頻率可編程窗口:1)Blackfin的工作模式三種模式:a. 用戶模式 n不處于空閑狀態(tài)、復(fù)位狀態(tài),不處理中斷、NMI、異常和仿真事件 n處于用戶模式的時候不能訪問存

14、儲器映射寄存器(MMR)b. 監(jiān)控模式 n對資源訪問無限制 c. 仿真模式 n對資源訪問無限制 2)程序設(shè)計過程:設(shè)置EVT(015),以設(shè)置EVT12為例 nP0.H = HI (EVT12); nP0.L = LO (EVT12); nR0.H = _FRE_SWH; nR0.L = _FRE_SWH; n P0 = R0; 準備退出,保證順利進入用戶模式 nR0 = 0x8000 (Z); nSTI R0; nRAISE 15; nR0.L = wait_here; nR0.H = wait_here; nRETI = R0; 進入用戶模式 nRTI; 停留在用戶模式 nwait_her

15、e: nJUMP wait_here; 根據(jù)之前程序:R0 = 0x8000 (Z); nSTI R0; nRAISE 15; 被迫進入中斷15中斷嵌套:監(jiān)控模式(15號中斷) n燈閃爍 燈的閃爍頻率有P5設(shè)置,代碼實現(xiàn)如下:P5.L = 0x0000;P5.H = 0x0e00;/ 初始設(shè)置LED的閃爍頻率 R1.L = 0x000F;BLINK:W P2 = R1.L;/ 設(shè)置PF0 - PF3為高電平輸出CALL DELAY_LOOP;CSYNC;/內(nèi)核同步指令W P1 = R1.L;/ 設(shè)置PF0 - PF3為低電平輸出CALL DELAY_LOOP;CSYNC;/內(nèi)核同步指令JUMP

16、 BLINK;允許新的中斷,通過按鍵激活新的中斷 允許中斷嵌套,保護現(xiàn)場 n -SP = RETI; 中斷設(shè)置:哪些燈閃爍? n設(shè)置FIO_DIR nP0.H = FIO_DIR >> 16; nP0.L = FIO_DIR & 0xFFFF; nR0.H = 0x000F; nW P0 = R0.H; nCSYNC; 初始時顯示什么? 設(shè)置FIO_FLAG_S和FIO_FLAG_C n閃爍頻率?n將頻率參數(shù)保存在一個寄存器Px 要有按鍵輸入,觸發(fā)新的中斷 n設(shè)置FIO_EDGE和FIO_POLAR n定義并使能響應(yīng)的中斷: nFIO_MASKA_S nSIC_IMASK

17、nIMASK n如何讓燈閃爍? n改變FIO_FLAG_S和FIO_FLAG_C n每一個亮燈狀態(tài)的保持時間:通過寄存器Px的值保持Delay周期 n改變閃爍頻率:設(shè)置寄存在Px中的閃爍頻率 改變閃爍頻率,先確保退路 n-SP = RETI; n掃描每一個按鈕,檢測需要改到什么頻率 nR5 = W P1 ; nCC = BITTST (R5, 4); nIF CC JUMP RATE_i; nRATE_i中改變頻率并原路返回 nP5.H = 0x0200; nP5.L = 0x0000; nCSYNC; nRETI = SP+; nRTI; 四 程序代碼及注釋:#include "d

18、efBF535.h".section l2_bank0;.global _MAIN;_SETUP:SP.H = 0xFFB0;/ 設(shè)置監(jiān)視模式下的堆棧起始地址,為了加快訪問時間,SP.L = 0x0F00;/ SP應(yīng)設(shè)置在scratch pad (0xFFB0 0000 - 0xFFB0 0FFF)中/-/P0.H = HI (EVT12);P0.L = LO (EVT12);R0.H = _SET_RATE;R0.L = _SET_RATE; P0 = R0;/ 將中斷事件_SET_RATE入口地址寫入中斷向量列表(IVT)EVT12中/-/P0.H = HI (EVT11);P0

19、.L = LO (EVT11);R0.H = _IDLE;R0.L = _IDLE; P0 = R0; / 將中斷事件_SET_RATE入口地址寫入中斷向量列表(IVT)EVT11中/-/ / 由于系統(tǒng)在重啟(reset)后進入事件setup event, 其優(yōu)先級高于IVG7 - IVG15,故其 / 在監(jiān)視模式下無法對IVG7 - IVG15做出響應(yīng),但是我們可以在用戶模式下使系統(tǒng)響應(yīng) / IVG15,然后使其轉(zhuǎn)入監(jiān)視模式,從而系統(tǒng)可以響應(yīng)優(yōu)先級高于IVG15的中斷(中斷嵌套) / ,從而完成本程序的功能。/-/ P0.H = HI (EVT15);P0.L = LO (EVT15);R0

20、.L = ISR15;R0.H = ISR15; P0 = R0;/ 將中斷事件ISR15的入口地址寫入中斷向量列表(IVT)EVT15中/-/R0 = 0x8000 (Z);STI R0;/ 使能EVT15中斷服務(wù)程序,中斷允許指令RAISE 15;/ 產(chǎn)生EVT15中斷P0.L = WAIT_HERE;P0.H = WAIT_HERE;RETI = P0;/ 將中斷返回地址放入RETI中RTI;/ 中斷返回,轉(zhuǎn)入用戶模式WAIT_HERE:JUMP WAIT_HERE;/ 等待中斷服務(wù)程序ISR15運行ISR15: -SP = RETI;/ 中斷服務(wù)程序ISR15運行后,系統(tǒng)轉(zhuǎn)入監(jiān)視模式,

21、壓棧保護RETIJUMP _MAIN;/ 使ISR15支持中斷嵌套調(diào)用_MAIN:P0.H = HI (FIO_DIR); /FIO_DIR標志方向寄存器:150 PF管腳,邏輯1配置為輸出,邏輯0配置為輸入P0.L = LO (FIO_DIR);R0.L = 0x000F;W P0 = R0.L;/ 設(shè)置PF0 - PF3為輸出管腳,LED顯示;PF4 - PF7為輸入管腳,改變頻率CSYNC;/內(nèi)核同步指令/-/P1.H = HI (FIO_FLAG_C); /標志清除寄存器P1.L = LO (FIO_FLAG_C);P2.H = HI (FIO_FLAG_S); /標志置位寄存器P2.

22、L = LO (FIO_FLAG_S);/用來檢測設(shè)置為輸入的PF管腳的電平和設(shè)置為輸出管腳的狀態(tài),并可以用來清除由PF管腳引起的中斷/此處用來設(shè)置BLINK的時候燈亮滅的變化/-/P0.H = HI (FIO_EDGE); /標志中斷觸發(fā)方式寄存器,用來配置每一個管腳的觸發(fā)方式為電平觸發(fā)或者邊沿觸發(fā)P0.L = LO (FIO_EDGE); /默認為0,電平觸發(fā);1為邊沿觸發(fā)R0.L = 0x0000;W P0 = R0.L;/ 設(shè)置PF4 - PF7為邊沿觸發(fā)CSYNC;/內(nèi)核同步指令P0.H = HI (FIO_POLAR);/標志極性寄存器,用來標志輸入源的極性;如果選擇高電平或者上升

23、沿激活,P0.L = LO (FIO_POLAR);/在寄存器對應(yīng)位寫入0;如果選擇低電平或者下降沿激活,在寄存器對應(yīng)位寫入1R2.L = 0x0000;W P0 = R0.L;/ 設(shè)置PF4 - PF7為上升邊沿觸發(fā)CSYNC;/內(nèi)核同步指令P0.H = HI (FIO_MASKA_S);/標志中斷屏蔽寄存器,1為使能對應(yīng)位P0.L = LO (FIO_MASKA_S);R0.H = 0x00f0;W P0 = R0.H;/ 使能PF4 - PF7中斷,產(chǎn)生的中斷事件為A類CSYNC;/內(nèi)核同步指令P0.H = HI (SIC_IMASK); /系統(tǒng)中斷屏蔽寄存器,1為使能,0為屏蔽(V1.

24、0以后版本取反)P0.L = LO (SIC_IMASK);R0 = P0 ;BITCLR(R0, 17);/ 使能內(nèi)核能夠接受PF產(chǎn)生的A類中斷BITCLR(R0, 14); / 使能內(nèi)核能夠接受Timer0中斷 P0 = R0;CSYNC;/內(nèi)核同步指令 P0.L = LO (SIC_IWR);/ enable PLL Wakeup InterruptP0.H = HI (SIC_IWR); /系統(tǒng)中斷喚醒使能寄存器R0.H = 0x0002; /喚醒PF中斷A,對應(yīng)上一步中改變第十七位R0.L = 0x0000; P0 = R0;CSYNC;/內(nèi)核同步指令P0.H = HI (IMASK

25、); /內(nèi)核中斷屏蔽寄存器P0.L = LO (IMASK); R0 = P0 ;/ 使能中斷處理模塊查找中斷向量列表,執(zhí)行Programmable BITSET (R0, 12);/使能中斷12BITSET (R0, 11); /使能中斷11 P0 = R0;CSYNC;/內(nèi)核同步指令/=Timer0設(shè)置=/ P0.H = HI(TIMER0_CONFIG); /定時器設(shè)置寄存器,中斷請求有效(第五位),設(shè)置為周期結(jié)束計數(shù)(第四位) P0.L = LO(TIMER0_CONFIG); R0.L = 0x0019; WP0 = R0.L; /設(shè)置為PWM_OUT模式(第一位和第二位),此時Ti

26、mer0為輸出管腳 R1.H = 0xa000; R1.L = 0x0000; P0.L = LO(TIMER0_PERIOD_HI); WP0 = R1.H; P0.L = LO(TIMER0_PERIOD_LO); /定時器周期寄存器 WP0 = R1.L; P0.L = LO(TIMER0_WIDTH_HI); /定時器寬度寄存器 WP0 = R2.H; P0.L = LO(TIMER0_WIDTH_LO); WP0 = R2.L; P0.L = LO(TIMER0_STATUS); /定時器狀態(tài)寄存器 R0.L = 0x0100; WP0 = R0.L; SSYNC; /系統(tǒng)同步指令/

27、=/P5.L = 0x0000;P5.H = 0x0e00;/ 初始設(shè)置LED的閃爍頻率 R1.L = 0x000F;BLINK:W P2 = R1.L;/ 設(shè)置PF0 - PF3為高電平輸出CALL DELAY_LOOP;CSYNC;/內(nèi)核同步指令W P1 = R1.L;/ 設(shè)置PF0 - PF3為低電平輸出CALL DELAY_LOOP;CSYNC;/內(nèi)核同步指令JUMP BLINK;_MAIN.END: /-閃爍時延子程序-/DELAY_LOOP:/ 閃爍時延函數(shù) LSETUP (L_BEGIN, L_END) LC0 = P5;L_BEGIN:L_END: NOP; RTS; /-IV

28、G12 HANDLER,-/_SET_RATE:/ 響應(yīng)_SET_RATE,掃描每一個PF是否按下,進行中斷嵌套和響應(yīng)并返回 -SP = RETI; R5 = W P1 ; CC = BITTST (R5, 4);/檢查PF4是否按下,產(chǎn)生中斷,跳轉(zhuǎn)到相應(yīng)頻率設(shè)置 IF CC JUMP SET_RATE_1; CC = BITTST (R5, 5);/檢查PF5是否按下,產(chǎn)生中斷,跳轉(zhuǎn)到相應(yīng)頻率設(shè)置 IF CC JUMP SET_RATE_2; CC = BITTST (R5, 6);/檢查PF6是否按下,產(chǎn)生中斷,跳轉(zhuǎn)到相應(yīng)頻率設(shè)置 IF CC JUMP SET_RATE_3; CC = B

29、ITTST (R5, 7);/檢查PF7是否按下,產(chǎn)生中斷,跳轉(zhuǎn)到相應(yīng)頻率設(shè)置 IF CC JUMP SET_RATE_4;SET_RATE_1: P5.H = 0x0900; P5.L = 0x0000; CSYNC;/內(nèi)核同步指令 RETI=SP+;/ 中斷嵌套,返回地址 RTI;SET_RATE_2: P5.H = 0x0500; P5.L = 0x0000; CSYNC;/內(nèi)核同步指令 RETI=SP+;/ 中斷嵌套,返回地址 RTI;SET_RATE_3: P5.H = 0x0100; P5.L = 0x0000; CSYNC;/內(nèi)核同步指令 RETI=SP+;/ 中斷嵌套,返回地址

30、 RTI;SET_RATE_4: P5.H = 0x0060; P5.L = 0x0000; CSYNC;/內(nèi)核同步指令 RETI=SP+;/ 中斷嵌套,返回地址 RTI;/-IVG11 HANDLER-/_IDLE:W P1 = R1.L;R0.L = 0x0019; WP0 = R0.L; IDLE;SSYNC;/系統(tǒng)同步指令/-/五 問題分析:在本次試驗中遇到的最困惑的問題是:在程序段:Timer0中:P0.H = HI(TIMER0_CONFIG); /定時器設(shè)置寄存器,中斷請求有效(第五位),設(shè)置為周期結(jié)束計數(shù)(第四位) P0.L = LO(TIMER0_CONFIG); R0.L

31、= 0x0019; WP0 = R0.L; /設(shè)置為PWM_OUT模式(第一位和第二位),此時Timer0為輸出管腳 R1.H = 0xa000; R1.L = 0x0000; P0.L = LO(TIMER0_PERIOD_HI); WP0 = R1.H; P0.L = LO(TIMER0_PERIOD_LO); /定時器周期寄存器 WP0 = R1.L; P0.L = LO(TIMER0_WIDTH_HI); /定時器寬度寄存器 WP0 = R2.H; P0.L = LO(TIMER0_WIDTH_LO); WP0 = R2.L; P0.L = LO(TIMER0_STATUS); /定時器狀態(tài)寄存器 R0.L = 0x0100; WP0 =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論