📄 vectors08.lis
字号:
.module vectors08.c
.area text
; KB_valve -> 0,X
0000 _isrKBI::
0000 8B pshh
0001 B600 lda *__r0
0003 87 psha
0004 B600 lda *__r1
0006 87 psha
0007 B600 lda *__r2
0009 87 psha
000A B600 lda *__r3
000C 87 psha
000D B600 lda *__r4
000F 87 psha
0010 B600 lda *__r5
0012 87 psha
0013 B600 lda *__r6
0015 87 psha
0016 B600 lda *__r7
0018 87 psha
0019 B600 lda *__r8
001B 87 psha
001C B600 lda *__r9
001E 87 psha
001F B600 lda *__r10
0021 87 psha
0022 B600 lda *__r11
0024 87 psha
0025 B600 lda *__rhi
0027 87 psha
0028 B600 lda *__rlo
002A 87 psha
002B A7FF ais #-1
002D 95 tsx
002E ; /*-----------------------------------------------------*
002E ; *文件名:vectors08.c *
002E ; *功 能:用于定义中断矢量表 *
002E ; *-----------------------------------------------------*/
002E ; /*[头文件]*/
002E ; #include "GP32C.H"
002E ; #include "KB.h"
002E ; #include "SCI.h"
002E ; /*键盘中断处理函数------------------------------------*/
002E ; #pragma interrupt_handler isrKBI
002E ; void isrKBI(void)
002E ; {
002E ; unsigned char KB_valve;
002E ; asm("SEI"); //关总中断
002E 9B SEI
002F ; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
002F 121A bset #1,0x1a
0031 ; KB_valve=KB_Scan(); //扫描键值
0031 CD0000 jsr _KB_Scan
0034 95 tsx
0035 B700 sta *__r1
0037 F7 sta ,X
0038 ;
0038 ; if(KB_valve==0xE7||KB_valve==0xD7)
0038 A1E7 cmp #-25
003A 2704 beq L4
003C A1D7 cmp #-41
003E 260A bne L2
0040 L4:
0040 ; {
0040 ; KB_doubleInit();
0040 CD0000 jsr _KB_doubleInit
0043 ; KB_valve=KB_doubleScan();
0043 CD0000 jsr _KB_doubleScan
0046 95 tsx
0047 B700 sta *__r1
0049 F7 sta ,X
004A ; }
004A L2:
004A ;
004A ; SCISend1(KB_valve);
004A F6 lda ,X
004B 87 psha
004C CD0000 jsr _SCISend1
004F A701 ais #1
0051 95 tsx
0052 ; KB_valve=KB_Def(KB_valve); //键值转化为定义值
0052 F6 lda ,X
0053 87 psha
0054 CD0000 jsr _KB_Def
0057 A701 ais #1
0059 95 tsx
005A B700 sta *__r1
005C F7 sta ,X
005D ; SCISend1(KB_valve);
005D 87 psha
005E CD0000 jsr _SCISend1
0061 A701 ais #1
0063 ; KB_Init(); //重新初始化键盘
0063 CD0000 jsr _KB_Init
0066 95 tsx
0067 ; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
0067 131A bclr #1,0x1a
0069 ; asm("CLI"); //开总中断
0069 9A CLI
006A L1:
006A A701 ais #1
006C .dbline 0 ; func end
006C 86 pula
006D B700 sta *__rlo
006F 86 pula
0070 B700 sta *__rhi
0072 86 pula
0073 B700 sta *__r11
0075 86 pula
0076 B700 sta *__r10
0078 86 pula
0079 B700 sta *__r9
007B 86 pula
007C B700 sta *__r8
007E 86 pula
007F B700 sta *__r7
0081 86 pula
0082 B700 sta *__r6
0084 86 pula
0085 B700 sta *__r5
0087 86 pula
0088 B700 sta *__r4
008A 86 pula
008B B700 sta *__r3
008D 86 pula
008E B700 sta *__r2
0090 86 pula
0091 B700 sta *__r1
0093 86 pula
0094 B700 sta *__r0
0096 8A pulh
0097 80 rti
0098 _isrDummy::
0098 8B pshh
0099 ; }
0099 ;
0099 ; //未定义的中断处理函数,本函数不能删除
0099 ; #pragma interrupt_handler isrDummy
0099 ; void isrDummy(void)
0099 ; {
0099 L5:
0099 .dbline 0 ; func end
0099 8A pulh
009A 80 rti
.area memory(abs)
.org 0xffdc
FFDC __vectab::
FFDC 0098 .word _isrDummy
FFDE 0098 .word _isrDummy
FFE0 0000 .word _isrKBI
FFE2 0098 .word _isrDummy
FFE4 0098 .word _isrDummy
FFE6 0098 .word _isrDummy
FFE8 0098 .word _isrDummy
FFEA 0098 .word _isrDummy
FFEC 0098 .word _isrDummy
FFEE 0098 .word _isrDummy
FFF0 0098 .word _isrDummy
FFF2 0098 .word _isrDummy
FFF4 0098 .word _isrDummy
FFF6 0098 .word _isrDummy
FFF8 0098 .word _isrDummy
FFFA 0098 .word _isrDummy
FFFC 0098 .word _isrDummy
.area lit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -