在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 混合信號(hào)嵌入式設(shè)計(jì)實(shí)驗(yàn)指南-數(shù)字實(shí)驗(yàn)之:實(shí)驗(yàn)2—中斷

            混合信號(hào)嵌入式設(shè)計(jì)實(shí)驗(yàn)指南-數(shù)字實(shí)驗(yàn)之:實(shí)驗(yàn)2—中斷

            作者: 時(shí)間:2013-12-26 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/256987.htm

            下面給出了代碼的例子(也可用于Lab2C)

            #include m8c.h> // part specific constants and macros

            #include PSoCAPI.h // PSoC API definitions for all User Modules

            extern unsigned char bShadow=0; void main(void)

            {

            PRT1DR=0;

            INT_MSK0|=0x40;

            M8C_EnableGInt;

            while(1)

            {

            M8C_Sleep; //sleep commandbShadow++; PRT1DR=bShadow;

            }
            }

            1.2.4 實(shí)驗(yàn)2D—匯編器服務(wù)例程

            步驟1:創(chuàng)建新的工程。?復(fù)制Lab2C,將其命名為L(zhǎng)ab2D。

            所有參數(shù)和跳線連接保持一樣。重新生成應(yīng)用。

            步驟2:修改代碼。創(chuàng)建新的名字為SleepTimerRoutines.asm 的匯編文件。打開該文件,并按照?qǐng)D1.16 所示添加代碼。

            圖1.16 SleepTimer 服務(wù)程序

            需要注意這個(gè)工程中的一些條目:

            保存累加器的值,以后從堆棧中恢復(fù)。硬件只保護(hù)程序計(jì)數(shù)器和標(biāo)志寄存器,這是一個(gè)中斷服務(wù)程序的最小要求。其他主程序使用的寄存器也需要保護(hù)。這通常是通過將它們暫存在堆棧中實(shí)現(xiàn)的。

            bShadow 是一個(gè)在main.c 中聲明的全局變量。當(dāng)使用匯編語言時(shí),必須在這個(gè)變量前加一個(gè)下劃線。反之,任何一個(gè)在匯編文件中定義的全局變量,必須以下劃線開頭,為了讓C 例程能找到它。

            例程以reti 結(jié)尾。—打開boot.asm 文件,在休眠定時(shí)器向量位置放置如下代碼:ljmp SleepTimerISR 練習(xí)2D-1 :這個(gè)指令要求多少個(gè)字節(jié)?

            重新生成工程。

            打開boot.asm ,并且驗(yàn)證剛才輸入的代碼消失了,這是因?yàn)楫?dāng)每次重新生成工程時(shí),每次都重寫boot.asm 。對(duì)于這個(gè)地方的代碼,必須輸入到用于生成boot.asm 的模板文件。

            打開boot.tpl ,將下面的代碼放到休眠定時(shí)器向量位置。

            ljmp SleepTimerISR

            重新生成工程。

            打開boot.asm ,驗(yàn)證代碼現(xiàn)在駐留在正確的向量位置。

            打開main.c 文件,刪除控制循環(huán)內(nèi)的所有代碼。程序始終處于這個(gè)循環(huán),一直等到在休眠定時(shí)器中斷服務(wù)程序中為休眠定時(shí)器服務(wù)為止。

            重新建立工程,下載到Eval1 板子,并運(yùn)行。

            像前面一樣驗(yàn)證程序。

            1.2.5 實(shí)驗(yàn)2E—C 語言中斷服務(wù)例程

            步驟1:創(chuàng)建新的工程。

            復(fù)制Lab2D,將其命名為L(zhǎng)ab2E。

            所有參數(shù)和跳線連接保持一樣。

            重新生成應(yīng)用。

            步驟2:修改代碼。

            刪除名字為SleepTimerRoutines.asm 的匯編文件。

            打開main.c 文件,并按照?qǐng)D1.17 所示添加代碼。

            圖1.17 Lab2C 控制軟件

            需要注意這個(gè)工程中的一些條目:

            Pragma 允許一個(gè)函數(shù)被用做一個(gè)中斷句柄。編譯器將自動(dòng)添加必要的代碼來保護(hù)它所使用的任何寄存器。它被用做一個(gè)也添加reti。?當(dāng)然,這樣一個(gè)函數(shù)不能接受參數(shù)和返回一個(gè)結(jié)果。

            練習(xí)2E-1:為什么?

            將必要的代碼添加到該函數(shù)中,實(shí)現(xiàn)前面的匯編中斷服務(wù)程序。打開boot.tpl ,轉(zhuǎn)到休眠定時(shí)器向量,在SleepTimerISR 前面添加下劃線。注意:對(duì)于在C 中聲明的函數(shù)和變量,添加下劃線。如果在C 中聲明了一個(gè)變量

            CVar ,則在匯編例程中作為_iCVar 使用,在C 中作為iCVar 使用。如果_iAsmVar 在匯編語言中聲明為一個(gè)變量,則它在匯編例程中作為_iASmVar 使用,在C 例程中作為iCVar 使用。iAsmVar 是一個(gè)在匯編語言中聲明的變量,它可以在匯編例程中作為iASmVar 使用,但在C 中不可使用。

            重新生成應(yīng)用,重新建立工程,下載到Eval1 板子,運(yùn)行;像前面一樣驗(yàn)證程序。



            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉