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

📄 vectors08.lis

📁 使用RC531读卡芯片读取二代身份证的模块软件设计部分
💻 LIS
字号:
                        .module vectors08.c
                        .area text
 0000                   .dbfile vectors08.c
 0000                   .dbfunc e isrKeyBoard _isrKeyBoard fV
 0000           _isrKeyBoard::
 0000                   .dbline -1
 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                   .dbline 33
 002B           ; //[vectors08.c]用于定义中断矢量表------------------------------------------*
 002B           ; //本文件包含:                                                              *
 002B           ; //    (1)isrKeyBoard   : 键盘中断处理函数(SPI从机选择)                     *
 002B           ; //    (2)isrDummy      : 未定义的中断处理函数                              *
 002B           ; //    (3)中断矢量表                                                        *
 002B           ; //-------------------------------------------------------------------------*
 002B           ; //[头文件]
 002B           ; #include "JB8C.H"        //JB8映像寄存器名定义
 002B           ; #include "SPI.h"         //SPI函数头文件
 002B           ; #include "Type.h"        //类型别名定义
 002B           ; #include "EnDisInt.h"    //开放或禁止MCU各模块中断的宏定义
 002B           ; #include "LED.h"         //该头文件中包含了LED驱动函数声明
 002B           ; 
 002B           ; //变量
 002B           ; INT8U i;
 002B           ; INT8U SPI0redata ;       //SPI0模块当前接收数据    
 002B           ; INT8U SPI0snddata;       //SPI0模块当前发送数据
 002B           ; //外部变量
 002B           ; extern   INT8U Card_inform[11];    //存储电子标签UID信息
 002B           ;  
 002B           ; //isrKeyBoard:键盘中断处理函数---------------------------------------------*
 002B           ; //功能:响应SPI主机的从机选择信号,根据前一次接收的数据,发送相应的读写模块 *
 002B           ; //     获取的电子标签UID信息                                               *
 002B           ; //调用函数:                                                                *
 002B           ; //    (1)DisableMCUint : 关总中断                                          *
 002B           ; //    (2)DisableKBint  : 屏蔽键盘中断                                      *
 002B           ; //    (3)SPI0SLAVECOM  : SPI0从机通信子函数                                *
 002B           ; //    (4)EnableKBint   : 开放键盘中断                                      *
 002B           ; //    (5)EnableMCUint  : 开总中断                                          *
 002B           ; //-------------------------------------------------------------------------*
 002B           ; #pragma interrupt_handler isrKeyBoard
 002B           ; void isrKeyBoard(void)  
 002B           ; {
 002B                   .dbline 38
 002B           ;     //static INT8U SPI0redata ;    //SPI0模块当前接收数据    
 002B           ;     //static INT8U SPI0snddata;    //SPI0模块当前发送数据
 002B           ;     
 002B           ;     
 002B           ;     DisableMCUint();    //关总中断
 002B 9B                SEI
 002C                   .dbline 39
 002C           ;     DisableKBint() ;    //屏蔽键盘中断
 002C 1216              bset #1,0x16
 002E                   .dbline 43
 002E           ; 
 002E           ;     //调用SPI0从机通信函数
 002E           ;     //接收的数据为下次要发送的Card_inform数组下标值
 002E           ;     SPI0redata = SPI0SLAVECOM(SPI0snddata);
 002E B600              lda *_SPI0snddata
 0030 87                psha
 0031 CD0000            jsr _SPI0SLAVECOM
 0034 A701              ais #1
 0036 95                tsx
 0037 B701              sta *_SPI0redata
 0039                   .dbline 44
 0039           ;     if((SPI0redata >= 0) && (SPI0redata < 11))
 0039 B601              lda *_SPI0redata
 003B A100              cmp #0
 003D 251C              blo L2
 003F B601              lda *_SPI0redata
 0041 A10B              cmp #11
 0043 2416              bhs L2
 0045                   .dbline 45
 0045           ;     {
 0045                   .dbline 46
 0045           ;         SPI0snddata = Card_inform[SPI0redata];
 0045 3F00              clr *__r0
 0047 B601              lda *_SPI0redata
 0049 AB00              add #<_Card_inform
 004B B700              sta *__r1
 004D B600              lda *__r0
 004F A900              adc #>_Card_inform
 0051 B700              sta *__r0
 0053 5500              ldhx *__r0
 0055 F6                lda ,x
 0056 95                tsx
 0057 B700              sta *_SPI0snddata
 0059                   .dbline 47
 0059           ;     }
 0059 203F              bra L3
 005B           L2:
 005B                   .dbline 48
 005B           ;     else if(SPI0redata == 11)
 005B B601              lda *_SPI0redata
 005D A10B              cmp #11
 005F 2636              bne L4
 0061                   .dbline 49
 0061           ;     {
 0061                   .dbline 50
 0061           ;         LED_Spark(2, 'S');               //运行指示灯短闪烁一次,表明读卡成功
 0061 A653              lda #83
 0063 87                psha
 0064 A602              lda #2
 0066 87                psha
 0067 CD0000            jsr _LED_Spark
 006A A702              ais #2
 006C 95                tsx
 006D                   .dbline 52
 006D           ;        
 006D           ;         Card_inform[0]='A';
 006D A641              lda #65
 006F B700              sta *_Card_inform
 0071                   .dbline 53
 0071           ;         for(i = 1; i < 11; i++)
 0071 A601              lda #1
 0073 B702              sta *_i
 0075 2015              bra L9
 0077           L6:
 0077                   .dbline 54
 0077 3F00              clr *__r0
 0079 B602              lda *_i
 007B AB00              add #<_Card_inform
 007D B700              sta *__r1
 007F B600              lda *__r0
 0081 A900              adc #>_Card_inform
 0083 B700              sta *__r0
 0085 4F                clra
 0086 5500              ldhx *__r0
 0088 F7                sta ,x
 0089 95                tsx
 008A           L7:
 008A                   .dbline 53
 008A 3C02              inc *_i
 008C           L9:
 008C                   .dbline 53
 008C B602              lda *_i
 008E A10B              cmp #11
 0090 25E5              blo L6
 0092                   .dbline 56
 0092           ;             Card_inform[i] = 0;
 0092           ;         
 0092           ;         SPI0snddata = Card_inform[0];
 0092 4E0000            mov *_Card_inform,*_SPI0snddata
 0095                   .dbline 57
 0095           ;     }else
 0095 2003              bra L5
 0097           L4:
 0097                   .dbline 58
 0097           ;     {
 0097                   .dbline 59
 0097           ;         SPI0snddata = Card_inform[0];
 0097 4E0000            mov *_Card_inform,*_SPI0snddata
 009A                   .dbline 60
 009A           ;     }
 009A           L5:
 009A           L3:
 009A                   .dbline 62
 009A           ;     
 009A           ;     KBSCR |= (1 << 2);  //清除键盘中断请求(ACKK = 1)
 009A 1416              bset #2,0x16
 009C                   .dbline 64
 009C           ;  
 009C           ;     EnableKBint() ;     //开放键盘中断
 009C 1316              bclr #1,0x16
 009E                   .dbline 65
 009E           ;     EnableMCUint();     //开总中断
 009E 9A                CLI
 009F                   .dbline -2
 009F           L1:
 009F                   .dbline 0 ; func end
 009F 86                pula
 00A0 B700              sta *__rlo
 00A2 86                pula
 00A3 B700              sta *__rhi
 00A5 86                pula
 00A6 B700              sta *__r11
 00A8 86                pula
 00A9 B700              sta *__r10
 00AB 86                pula
 00AC B700              sta *__r9
 00AE 86                pula
 00AF B700              sta *__r8
 00B1 86                pula
 00B2 B700              sta *__r7
 00B4 86                pula
 00B5 B700              sta *__r6
 00B7 86                pula
 00B8 B700              sta *__r5
 00BA 86                pula
 00BB B700              sta *__r4
 00BD 86                pula
 00BE B700              sta *__r3
 00C0 86                pula
 00C1 B700              sta *__r2
 00C3 86                pula
 00C4 B700              sta *__r1
 00C6 86                pula
 00C7 B700              sta *__r0
 00C9 8A                pulh
 00CA 80                rti
 00CB                   .dbend
 00CB                   .dbfunc e isrDummy _isrDummy fV
 00CB           _isrDummy::
 00CB                   .dbline -1
 00CB 8B                pshh
 00CC                   .dbline 71
 00CC           ; }
 00CC           ; 
 00CC           ; //未定义的中断处理函数,本函数不能删除
 00CC           ; #pragma interrupt_handler isrDummy  
 00CC           ; void isrDummy(void) 
 00CC           ; {
 00CC                   .dbline -2
 00CC           L10:
 00CC                   .dbline 0 ; func end
 00CC 8A                pulh
 00CD 80                rti
 00CE                   .dbend
                        .area memory(abs)
                        .org 0xfff0
 FFF0                   .dbfile vectors08.c
 FFF0           __vectab::
 FFF0 0000              .word _isrKeyBoard
 FFF2 00CB              .word _isrDummy
 FFF4 00CB              .word _isrDummy
 FFF6 00CB              .word _isrDummy
 FFF8 00CB              .word _isrDummy
 FFFA 00CB              .word _isrDummy
 FFFC 00CB              .word _isrDummy
 FFFE                   .dbsym e _vectab __vectab A[14:7]pfV
                        .area lit
                        .area bss
 0000                   .dbfile vectors08.c
 0000           _SPI0snddata::
 0000                   .blkb 1
 0001                   .dbsym e SPI0snddata _SPI0snddata c
 0001           _SPI0redata::
 0001                   .blkb 1
 0002                   .dbsym e SPI0redata _SPI0redata c
 0002           _i::
 0002                   .blkb 1
 0003                   .dbsym e i _i c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -