⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vectors08.lis

📁 飞思卡尔的键盘中断源代码,C语言写的,很不错的
💻 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 + -