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

📄 main.lis

📁 使用RC531读卡芯片读取二代身份证的模块软件设计部分
💻 LIS
字号:
                        .module main.c
                        .area text
 0000                   .dbfile main.c
 0000                   .dbfunc e main _main fV
 0000           ;   JB8_RSTState -> 0,X
 0000           ;         UIDLen -> 1,X
 0000           ;       CardB_OK -> 2,X
 0000           ;       CardA_OK -> 3,X
 0000           ;            UID -> 4,X
 0000           ;              i -> 15,X
 0000           _main::
 0000                   .dbline -1
 0000 A7F0              ais #-16
 0002 95                tsx
 0003                   .dbline 18
 0003           ; //------------------------------------------------------------------------*
 0003           ; //工 程 名:JB8_IO_SPI.prj                                                 *
 0003           ; //硬件连接:读写模块为标准DIP40封装                                        *
 0003           ; //说    明:                                                               *
 0003           ; //      (1)运行指示灯长闪烁3次表示初始化成功                              *
 0003           ; //      (2)运行指示灯短闪烁1次表示读卡成功                                *
 0003           ; //      (3)UID信息存储在内存中的Card_inform[]数组中,首字节表示电子标签类型*
 0003           ; //      (4)外部控制系统通过SPI接口与读写模块通信,每次交互1个字节。读写模  *
 0003           ; //         块作为SPI从机,响应SPI主机的从机选择信号,根据前一次接收的数据, *
 0003           ; //         发送相应的读写模块获取的电子标签UID信息(详见键盘中断处理函数)  *
 0003           ; //------------------------------------------------------------------------*
 0003           ; 
 0003           ; //总头文件
 0003           ; #include "Includes.h"
 0003           ; 
 0003           ; //主函数
 0003           ; void main()
 0003           ; {
 0003                   .dbline 25
 0003           ;     INT8U JB8_RSTState;         //JB8复位状态标志位 0-成功 ,1-失败
 0003           ;     INT8U CardA_OK,CardB_OK;
 0003           ;     INT8U i;
 0003           ;     INT8U UIDLen;
 0003           ;     INT8U UID[11];
 0003           ;     
 0003           ;     JB8_RSTState = 0;
 0003 7F                clr ,X
 0004                   .dbline 28
 0004           ;     
 0004           ;     //初始化
 0004           ;     DisableMCUint();     //禁止总中断    
 0004 9B                SEI
 0005                   .dbline 29
 0005           ;     MCUinit();           //芯片初始化
 0005 CD0000            jsr _MCUinit
 0008                   .dbline 30
 0008           ;     LEDinit();           //运行指示灯初始化
 0008 CD0000            jsr _LEDinit
 000B                   .dbline 31
 000B           ;     SPI0Init();          //SPI0初始化(与NE64通信)模拟从机    
 000B CD0000            jsr _SPI0Init
 000E                   .dbline 32
 000E           ;     Card_inform[0] = 'A';//UID数据数组,Card_inform[0]:“A”-A卡,“B”-B卡 
 000E A641              lda #65
 0010 B700              sta *_Card_inform
 0012                   .dbline 33
 0012           ;     EnableKBint();       //开放键盘中断,响应从机选择   
 0012 1316              bclr #1,0x16
 0014                   .dbline 34
 0014           ;     EnableMCUint();      //开总中断
 0014 9A                CLI
 0015                   .dbline 35
 0015           ;     LED_Spark(3, 'L');   //运行指示灯长闪烁3次,表明初始化成功
 0015 A64C              lda #76
 0017 87                psha
 0018 A603              lda #3
 001A 87                psha
 001B CD0000            jsr _LED_Spark
 001E A702              ais #2
 0020 95                tsx
 0021 CC00FD            jmp L3
 0024           L2:
 0024                   .dbline 39
 0024           ;     
 0024           ;     //总循环
 0024           ;     while (1)
 0024           ;     {
 0024                   .dbline 41
 0024           ;         //复位及初始化RC531
 0024           ;         JB8_RSTState = RFReset();    
 0024 CD0000            jsr _RFReset
 0027 95                tsx
 0028 B700              sta *__r1
 002A F7                sta ,X
 002B                   .dbline 44
 002B           ;               
 002B           ;         //ISO14443A 处理部分
 002B           ;               RC531_14443ABInit(1);                //按ISO14443A标准设置相关寄存器     
 002B A601              lda #1
 002D 87                psha
 002E CD0000            jsr _RC531_14443ABInit
 0031 A701              ais #1
 0033 95                tsx
 0034                   .dbline 45
 0034           ;               CardA_OK = ReadTag(1, &UIDLen, UID); //读TypeA卡
 0034 AF04              aix #4
 0036 89                pshx
 0037 8B                pshh
 0038 95                tsx
 0039 AF03              aix #3
 003B 89                pshx
 003C 8B                pshh
 003D A601              lda #1
 003F 87                psha
 0040 CD0000            jsr _ReadTag
 0043 A705              ais #5
 0045 95                tsx
 0046 B700              sta *__r1
 0048 E703              sta 3,X
 004A                   .dbline 46
 004A           ;               if(CardA_OK == 0)
 004A 2649              bne L5
 004C                   .dbline 47
 004C           ;               {
 004C                   .dbline 49
 004C           ;                   //获取A卡UID成功,并记录UID信息
 004C           ;                   Card_inform[0] = 'A';
 004C A641              lda #65
 004E B700              sta *_Card_inform
 0050                   .dbline 50
 0050           ;                   for(i = 0; i < 5; i++)
 0050 6F0F              clr 15,X
 0052 202F              bra L10
 0054           L7:
 0054                   .dbline 51
 0054 AF04              aix #4
 0056 3500              sthx *__r0
 0058 95                tsx
 0059 3F00              clr *__r2
 005B E60F              lda 15,X
 005D BB00              add *__r1
 005F B700              sta *__r1
 0061 B600              lda *__r2
 0063 B900              adc *__r0
 0065 B700              sta *__r0
 0067 5500              ldhx *__r0
 0069 F6                lda ,x
 006A 95                tsx
 006B B700              sta *__r1
 006D 3F00              clr *__r2
 006F E60F              lda 15,X
 0071 AB01              add #<_Card_inform+1
 0073 B700              sta *__r3
 0075 B600              lda *__r2
 0077 A901              adc #>_Card_inform+1
 0079 B700              sta *__r2
 007B B600              lda *__r1
 007D 5500              ldhx *__r2
 007F F7                sta ,x
 0080 95                tsx
 0081           L8:
 0081                   .dbline 50
 0081 6C0F              inc 15,X
 0083           L10:
 0083                   .dbline 50
 0083 E60F              lda 15,X
 0085 A105              cmp #5
 0087 25CB              blo L7
 0089                   .dbline 52
 0089           ;                       Card_inform[i + 1] = UID[i];
 0089           ;             LED_Spark(1, 'S');               //运行指示灯短闪烁一次,表明读卡成功
 0089 A653              lda #83
 008B 87                psha
 008C A601              lda #1
 008E 87                psha
 008F CD0000            jsr _LED_Spark
 0092 A702              ais #2
 0094 95                tsx
 0095                   .dbline 53
 0095           ;               }
 0095           L5:
 0095                   .dbline 56
 0095           ;               
 0095           ;         //ISO14443B 处理部分      
 0095           ;               RC531_14443ABInit(0);                //按ISO14443B标准设置相关寄存器     
 0095 4F                clra
 0096 87                psha
 0097 CD0000            jsr _RC531_14443ABInit
 009A A701              ais #1
 009C 95                tsx
 009D                   .dbline 57
 009D           ;               CardB_OK = ReadTag(0, &UIDLen, UID); //读TypeB卡                                
 009D AF04              aix #4
 009F 89                pshx
 00A0 8B                pshh
 00A1 95                tsx
 00A2 AF03              aix #3
 00A4 89                pshx
 00A5 8B                pshh
 00A6 4F                clra
 00A7 87                psha
 00A8 CD0000            jsr _ReadTag
 00AB A705              ais #5
 00AD 95                tsx
 00AE B700              sta *__r1
 00B0 E702              sta 2,X
 00B2                   .dbline 58
 00B2           ;               if(CardB_OK == 0)
 00B2 2649              bne L12
 00B4                   .dbline 59
 00B4           ;               {
 00B4                   .dbline 61
 00B4           ;                   //获取B卡卡号成功,并记录UID信息
 00B4           ;                   Card_inform[0] = 'B';
 00B4 A642              lda #66
 00B6 B700              sta *_Card_inform
 00B8                   .dbline 62
 00B8           ;                   for(i = 0; i < 10; i++)
 00B8 6F0F              clr 15,X
 00BA 202F              bra L17
 00BC           L14:
 00BC                   .dbline 63
 00BC AF04              aix #4
 00BE 3500              sthx *__r0
 00C0 95                tsx
 00C1 3F00              clr *__r2
 00C3 E60F              lda 15,X
 00C5 BB00              add *__r1
 00C7 B700              sta *__r1
 00C9 B600              lda *__r2
 00CB B900              adc *__r0
 00CD B700              sta *__r0
 00CF 5500              ldhx *__r0
 00D1 F6                lda ,x
 00D2 95                tsx
 00D3 B700              sta *__r1
 00D5 3F00              clr *__r2
 00D7 E60F              lda 15,X
 00D9 AB01              add #<_Card_inform+1
 00DB B700              sta *__r3
 00DD B600              lda *__r2
 00DF A901              adc #>_Card_inform+1
 00E1 B700              sta *__r2
 00E3 B600              lda *__r1
 00E5 5500              ldhx *__r2
 00E7 F7                sta ,x
 00E8 95                tsx
 00E9           L15:
 00E9                   .dbline 62
 00E9 6C0F              inc 15,X
 00EB           L17:
 00EB                   .dbline 62
 00EB E60F              lda 15,X
 00ED A10A              cmp #10
 00EF 25CB              blo L14
 00F1                   .dbline 64
 00F1           ;                       Card_inform[i + 1] = UID[i];
 00F1           ;             LED_Spark(1, 'S');               //运行指示灯短闪烁一次,表明读卡成功
 00F1 A653              lda #83
 00F3 87                psha
 00F4 A601              lda #1
 00F6 87                psha
 00F7 CD0000            jsr _LED_Spark
 00FA A702              ais #2
 00FC 95                tsx
 00FD                   .dbline 65
 00FD           ;               }                                       
 00FD           L12:
 00FD                   .dbline 66
 00FD           L3:
 00FD                   .dbline 38
 00FD CC0024            jmp L2
 0100           X0:
 0100                   .dbline -2
 0100           L1:
 0100 A710              ais #16
 0102                   .dbline 0 ; func end
 0102 81                rts
 0103                   .dbsym l JB8_RSTState 0 c
 0103                   .dbsym l UIDLen 1 c
 0103                   .dbsym l CardB_OK 2 c
 0103                   .dbsym l CardA_OK 3 c
 0103                   .dbsym l UID 4 A[11:11]c
 0103                   .dbsym l i 15 c
 0103                   .dbend
                        .area bss
 0000                   .dbfile main.c
 0000           _Card_inform::
 0000                   .blkb 11
 000B                   .dbfile D:\项目\RC531读写模块\03软件设计\0508\JB8\JB8_NE64_RC531/Includes.h
 000B                   .dbsym e Card_inform _Card_inform A[11:11]c

⌨️ 快捷键说明

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