?? main.asm
字號(hào):
//======================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//======================================================================
//======================================================================
// 工程名稱: ex14_asm_IRQ3_EXT1_EXT2
// 功能描述: 《實(shí)驗(yàn)儀實(shí)驗(yàn)指導(dǎo)書》基礎(chǔ)應(yīng)用實(shí)驗(yàn)
// 外部中斷EXT1、EXT2
// 通過(guò)IRQ3外部中斷EXT1、EXT2點(diǎn)亮相應(yīng)的LED
// IDE環(huán)境: SUNPLUS u'nSPTM IDE 2.0.0(or later)
// 涉及的庫(kù): CMacro1016.lib
// 組成文件: main.asm
// 硬件連接: LED_SEG接口的IOA0~7與a~h分別連接
// LED_DIG接口的IOB6與DIG5連接
// IOB2、IOB3分別連接KEYPAD接口的COL3和COL4
// KEYPAD接口的ROW接地
// 維護(hù)記錄: 2005-09-12 v1.0
//
//======================================================================
//======================================================================
// 文件名稱: main.asm
// 功能描述: 通過(guò)IRQ3外部中斷EXT1、EXT2點(diǎn)亮相應(yīng)的LED
// 維護(hù)記錄: 2005-09-12 v1.0
//======================================================================
.DEFINE P_IOA_Data 0x7000
.DEFINE P_IOA_Buffer 0x7001
.DEFINE P_IOA_Dir 0x7002
.DEFINE P_IOA_Attrib 0x7003
.DEFINE P_IOB_Data 0x7005
.DEFINE P_IOB_Buffer 0x7006
.DEFINE P_IOB_Dir 0x7007
.DEFINE P_IOB_Attrib 0x7008
.DEFINE P_INT_Ctrl 0x7010
.DEFINE P_INT_Clear 0x7011
.DEFINE P_Watchdog_Clear 0x7012
.DEFINE C_IRQ3_KEY 0x0080
.DEFINE C_IRQ3_EXT1 0x0100
.DEFINE C_IRQ3_EXT2 0x0200
.RAM
.CODE
//========================================================
// 匯編格式: _main
// C格式: int main(void);
// 實(shí)現(xiàn)功能: 通過(guò)IRQ3外部中斷EXT1、EXT2點(diǎn)亮相應(yīng)的LED
// 入口參數(shù): 無(wú)
// 出口參數(shù): 無(wú)
// 破壞寄存器:r1,r2
//========================================================
.PUBLIC _main
_main:
int off //關(guān)閉中斷
r1 = 0x00ff //設(shè)置IOA0~7為同相輸出
[P_IOA_Dir] = r1
[P_IOA_Attrib] = r1
r1 = 0x0000
[P_IOA_Data] = r1 //初始化IOA0~7輸出為低電平
r1 = 0x0040 //IOB6輸出高電平,IOB2、IOB3上拉輸入
[P_IOB_Dir] = r1
[P_IOB_Attrib] = r1
r1 = 0x004C
[P_IOB_Data] = r1
r1 = C_IRQ3_EXT1 |C_IRQ3_EXT2
[P_INT_Ctrl] = r1 //打開EXT1和EXT2中斷
int irq //打開IRQ總中斷,關(guān)閉FIQ總中斷
?Loop:
r1 = 0x0001
[P_Watchdog_Clear] = r1 //清看門狗
jmp ?Loop
.TEXT
//========================================================
// 匯編格式: _IRQ3
// C格式: 無(wú)
// 實(shí)現(xiàn)功能: IRQ3中斷服務(wù)程序
// 入口參數(shù): 無(wú)
// 出口參數(shù): 無(wú)
// 破壞寄存器:無(wú)
//========================================================
.PUBLIC _IRQ3
_IRQ3:
push r1,r5 to [sp]
r1 = C_IRQ3_EXT1
test r1,[P_INT_Ctrl]
jnz ?L_IRQ3_Ext1 //測(cè)試為EXT1中斷則轉(zhuǎn)向?L_IRQ3_Ext1
r1 = C_IRQ3_EXT2
test r1,[P_INT_Ctrl]
jnz ?L_IRQ3_Ext2 //為EXT2中斷則轉(zhuǎn)向?L_IRQ3_Ext2
?L_IRQ3_Key:
r1 = C_IRQ3_KEY
[P_INT_Clear] = r1 //清中斷標(biāo)志位
pop r1,r5 from [sp]
reti
?L_IRQ3_Ext2:
r1 = 0x00f0
[P_IOA_Data] = r1 //IOA4~7輸出高電平
r1 = C_IRQ3_EXT2
[P_INT_Clear] = r1 //清中斷標(biāo)志
pop r1,r5 from [sp]
reti
?L_IRQ3_Ext1:
r1 = 0x000f
[P_IOA_Data] = r1 //IOA0~3輸出高電平
r1 = C_IRQ3_EXT1
[P_INT_Clear] = r1 //清中斷標(biāo)志
pop r1,r5 from [sp]
reti
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -