📄 rf.lis
字号:
02D3 .dbline 269
02D3 ;
02D3 ; //第4页 射频时间和通道冗余
02D3 ; RFRegWrite(RegRxWait, 0x06); //0x06, 设置接收延时
02D3 A606 lda #6
02D5 87 psha
02D6 A621 lda #33
02D8 87 psha
02D9 CD002D jsr _RFRegWrite
02DC A702 ais #2
02DE .dbline 270
02DE ; RFRegWrite(RegChannelRedundancy, 0x2c); //0x2c, TypeB接收冗余校验
02DE A62C lda #44
02E0 87 psha
02E1 A622 lda #34
02E3 87 psha
02E4 CD002D jsr _RFRegWrite
02E7 A702 ais #2
02E9 .dbline 271
02E9 ; RFRegWrite(RegCRCPresetLSB, 0xff); //0xff, CRC预设值
02E9 A6FF lda #-1
02EB 87 psha
02EC A623 lda #35
02EE 87 psha
02EF CD002D jsr _RFRegWrite
02F2 A702 ais #2
02F4 .dbline 272
02F4 ; RFRegWrite(RegCRCPresetMSB, 0xff); //0xff, CRC预设值
02F4 A6FF lda #-1
02F6 87 psha
02F7 A624 lda #36
02F9 87 psha
02FA CD002D jsr _RFRegWrite
02FD A702 ais #2
02FF 95 tsx
0300 .dbline 273
0300 ; }
0300 L49:
0300 .dbline 276
0300 6F01 clr 1,X
0302 7F clr ,X
0303 200A bra L53
0305 L50:
0305 .dbline 276
0305 L51:
0305 .dbline 276
0305 E601 lda 1,X
0307 AB01 add #1
0309 E701 sta 1,X
030B F6 lda ,X
030C A900 adc #0
030E F7 sta ,X
030F L53:
030F .dbline 276
030F ;
030F ; //延时
030F ; for(i = 0; i < 1000; i++);
030F E601 lda 1,X
0311 B700 sta *__r1
0313 F6 lda ,X
0314 B700 sta *__r0
0316 5500 ldhx *__r0
0318 6503E8 cphx #1000
031B 95 tsx
031C 25E7 blo L50
031E .dbline -2
031E L47:
031E A702 ais #2
0320 .dbline 0 ; func end
0320 81 rts
0321 .dbsym l i 0 i
0321 .dbsym l Tagtype 4 c
0321 .dbend
0321 .dbfunc e ReadTag _ReadTag fc
0321 ; flag -> 0,X
0321 ; UID_Buf -> 6,X
0321 ; UIDLen -> 4,X
0321 ; Tagtype -> 3,X
0321 _ReadTag::
0321 .dbline -1
0321 A7FF ais #-1
0323 95 tsx
0324 .dbline 286
0324 ; }
0324 ;
0324 ; //ReadTag-----------------------------------------------------------------*
0324 ; //功 能: 读卡函数 *
0324 ; //参 数: Tagtype - 电子标签类型(0 - ISO14443B; 1 - ISO14443A) *
0324 ; //出 口: UIDLen - UID数据长度, UID_Buf[] - UID数据数组 *
0324 ; //返 回: 1,2,3 - 操作失败;0 - 操作成功 *
0324 ; //------------------------------------------------------------------------*
0324 ; INT8U ReadTag(INT8U Tagtype, INT8U *UIDLen, INT8U UID_Buf[])
0324 ; {
0324 .dbline 289
0324 ; INT8U flag;
0324 ;
0324 ; if(Tagtype)
0324 E603 lda 3,X
0326 2728 beq L55
0328 .dbline 290
0328 ; {
0328 .dbline 292
0328 ; //读取ISO14443A
0328 ; flag = Request_TypeA(); //询卡
0328 CD0389 jsr _Request_TypeA
032B 95 tsx
032C B700 sta *__r1
032E F7 sta ,X
032F .dbline 293
032F ; if(flag) return 1;
032F 2704 beq L57
0331 .dbline 293
0331 A601 lda #1
0333 2051 bra L54
0335 L57:
0335 .dbline 295
0335 ;
0335 ; flag = Get_UID_TypeA(UIDLen, UID_Buf); //读TypeA电子标签UID
0335 E607 lda 7,X
0337 87 psha
0338 E606 lda 6,X
033A 87 psha
033B E605 lda 5,X
033D 87 psha
033E E604 lda 4,X
0340 87 psha
0341 CD03FE jsr _Get_UID_TypeA
0344 A704 ais #4
0346 95 tsx
0347 B700 sta *__r1
0349 F7 sta ,X
034A .dbline 296
034A ; if(flag) return 3;
034A 2739 beq L56
034C .dbline 296
034C A603 lda #3
034E 2036 bra L54
0350 X1:
0350 .dbline 297
0350 ; }
0350 L55:
0350 .dbline 299
0350 ; else
0350 ; {
0350 .dbline 301
0350 ; //读取ISO14443B
0350 ; flag = Request_TypeB(); //询卡
0350 CD04E5 jsr _Request_TypeB
0353 95 tsx
0354 B700 sta *__r1
0356 F7 sta ,X
0357 .dbline 302
0357 ; if(flag) return 1;
0357 2704 beq L61
0359 .dbline 302
0359 A601 lda #1
035B 2029 bra L54
035D L61:
035D .dbline 304
035D ;
035D ; flag = ATTRIB_TypeB(); //选卡
035D CD0553 jsr _ATTRIB_TypeB
0360 95 tsx
0361 B700 sta *__r1
0363 F7 sta ,X
0364 .dbline 305
0364 ; if(flag) return 2;
0364 2704 beq L63
0366 .dbline 305
0366 A602 lda #2
0368 201C bra L54
036A L63:
036A .dbline 307
036A ;
036A ; flag = Get_UID_TypeB(UIDLen, UID_Buf); //读TypeB卡号
036A E607 lda 7,X
036C 87 psha
036D E606 lda 6,X
036F 87 psha
0370 E605 lda 5,X
0372 87 psha
0373 E604 lda 4,X
0375 87 psha
0376 CD05AD jsr _Get_UID_TypeB
0379 A704 ais #4
037B 95 tsx
037C B700 sta *__r1
037E F7 sta ,X
037F .dbline 308
037F ; if(flag) return 3;
037F 2704 beq L65
0381 .dbline 308
0381 A603 lda #3
0383 2001 bra L54
0385 L65:
0385 .dbline 309
0385 ; }
0385 L56:
0385 .dbline 310
0385 ; return 0; //操作成功
0385 4F clra
0386 .dbline -2
0386 L54:
0386 A701 ais #1
0388 .dbline 0 ; func end
0388 81 rts
0389 .dbsym l flag 0 c
0389 .dbsym l UID_Buf 6 pc
0389 .dbsym l UIDLen 4 pc
0389 .dbsym l Tagtype 3 c
0389 .dbend
0389 .dbfunc e Request_TypeA _Request_TypeA fc
0389 ; ReData -> 0,X
0389 ; SndData -> 40,X
0389 ; Len -> 41,X
0389 ; Flag -> 42,X
0389 ; Data -> 43,X
0389 _Request_TypeA::
0389 .dbline -1
0389 A7D4 ais #-44
038B 95 tsx
038C .dbline 324
038C ; }
038C ;
038C ; //------------------------------------------------------------------------*
038C ; //3.1 对ISO14443A电子标签的相关操作 *
038C ; //------------------------------------------------------------------------*
038C ;
038C ;
038C ; //Request_TypeA-----------------------------------------------------------*
038C ; //功 能: 向TypeA卡发送request信号 *
038C ; //参 数: 无 *
038C ; //返 回: 1,2 - request命令执行失败;0 - request命令执行成功 *
038C ; //------------------------------------------------------------------------*
038C ; INT8U Request_TypeA(void)
038C ; {
038C .dbline 332
038C ; INT8U Data;
038C ; INT8U Flag;
038C ; INT8U Len;
038C ; INT8U SndData[1];
038C ; INT8U ReData[40];
038C ;
038C ; //写bitframing寄存器,7bit数据的发送,短帧格式
038C ; RFRegWrite(RegBitFraming, 0x07);
038C A607 lda #7
038E 87 psha
038F A60F lda #15
0391 87 psha
0392 CD002D jsr _RFRegWrite
0395 A702 ais #2
0397 .dbline 335
0397 ;
0397 ; // Bit3=0 加密单元关闭
0397 ; Data = RFRegRead(RegControl);
0397 A609 lda #9
0399 87 psha
039A CD0000 jsr _RFRegRead
039D A701 ais #1
039F 95 tsx
03A0 B700 sta *__r1
03A2 E72B sta 43,X
03A4 .dbline 336
03A4 ; Data &= 0xf7;
03A4 A4F7 and #-9
03A6 E72B sta 43,X
03A8 .dbline 337
03A8 ; RFRegWrite(RegControl, Data);
03A8 87 psha
03A9 A609 lda #9
03AB 87 psha
03AC CD002D jsr _RFRegWrite
03AF A702 ais #2
03B1 .dbline 340
03B1 ;
03B1 ; //TypeA接收冗余校验
03B1 ; RFRegWrite(RegChannelRedundancy, 0x03);
03B1 A603 lda #3
03B3 87 psha
03B4 A622 lda #34
03B6 87 psha
03B7 CD002D jsr _RFRegWrite
03BA A702 ais #2
03BC 95 tsx
03BD .dbline 343
03BD ;
03BD ; //ISO14443-A 询卡指令
03BD ; SndData[0] = 0x26;
03BD A626 lda #38
03BF E728 sta 40,X
03C1 .dbline 344
03C1 ; Flag = Command_Send(SndData, 0x01, PCD_TRANSCEIVE);
03C1 A61E lda #30
03C3 87 psha
03C4 A601 lda #1
03C6 87 psha
03C7 AF28 aix #40
03C9 89 pshx
03CA 8B pshh
03CB CD0057 jsr _Command_Send
03CE A704 ais #4
03D0 95 tsx
03D1 B700 sta *__r1
03D3 E72A sta 42,X
03D5 .dbline 346
03D5 ;
03D5 ; if(Flag)
03D5 270F beq L68
03D7 .dbline 347
03D7 ; {
03D7 .dbline 349
03D7 ; //命令发送失败
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -