?? irq.asm
字號:
//======================================================
// 文件名稱: PWM.asm
// 功能描述: PWM設(shè)置服務(wù)
// 完成日期: 2003-8-13
//======================================================
.define P_INT_CTRL 0x7010;
.define P_INT_CLEAR 0x7011;
.EXTERNAL _F_PwmIRQ3
.RAM
//TimeA: 頻率設(shè)置值,PWM:占空比設(shè)置值
.VAR TimeA=0x0020,PWM=0x0000
.text
//======================================================
// 函數(shù)名稱: IRQ3
// 實現(xiàn)功能: 外部中斷服務(wù)
// 入口參數(shù): 無
// 出口參數(shù): 無
// 破壞寄存器: r1,r2
//======================================================
.public _IRQ3
_IRQ3:
push r1,r5 to [sp] //壓棧保護(hù)
r1=0x0100
test r1,[P_INT_CTRL] //比較是否為IRQ3_EXT1
jnz irq3_ext1 //是,則轉(zhuǎn)至對應(yīng)程序段;
r1=0x0200
test r1,[P_INT_CTRL] //否,則比較是否為IRQ3_EXT2
jnz irq3_ext2 //是,則轉(zhuǎn)至對應(yīng)程序段;
r1=0x0200
irq3_key: //否,則進(jìn)入鍵喚醒中斷
r1=0x0080
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
irq3_ext2:
r1=[TimeA]
r1+=0xf0
[TimeA]=r1
r2=[PWM]
call _F_PwmIRQ3; //重設(shè)pwm,來自于pwm.asm
r1=0x0200
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
irq3_ext1:
r1=[PWM]
r1+=0x0030
r2=0x0ff0
cmp r2,r1
jb ReturnLoop
[PWM]=r1
r1=[TimeA]
r2=[PWM]
call _F_PwmIRQ3; //重設(shè)pwm,來自于pwm.asm
r1=0x0100
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
ReturnLoop:
r1=0x0000
[PWM]=r1
r1=[TimeA]
r2=[PWM]
call _F_PwmIRQ3; //重設(shè)pwm,來自于pwm.asm
r1=0x0100
[P_INT_CLEAR]=r1
pop r1,r5 from [sp]
reti
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -