📄 main.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 + -