新聞中心

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

混合信號嵌入式設(shè)計實驗指南-數(shù)字實驗之:實驗2—中斷

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

本文引用地址:http://butianyuan.cn/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 實驗2D—匯編器服務(wù)例程

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

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

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

圖1.16 SleepTimer 服務(wù)程序

需要注意這個工程中的一些條目:

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

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

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

重新生成工程。

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

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

ljmp SleepTimerISR

重新生成工程。

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

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

重新建立工程,下載到Eval1 板子,并運行。

像前面一樣驗證程序。

1.2.5 實驗2E—C 語言中斷服務(wù)例程

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

復(fù)制Lab2D,將其命名為Lab2E。

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

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

步驟2:修改代碼。

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

打開main.c 文件,并按照圖1.17 所示添加代碼。

圖1.17 Lab2C 控制軟件

需要注意這個工程中的一些條目:

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

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

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

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

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



評論


相關(guān)推薦

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

關(guān)閉