?? jb8_io~1.lst
字號:
E0D1 F7 stA 0,X
E0D2 95 tSX
E0D3 6C 01 inc 1,X
E0D5 E6 01 ldA 1,X
E0D7 F1 cmp 0,X
E0D8 25 DA bcs 0xE0B4
(0147) return Length;
E0DA F6 ldA 0,X
E0DB A7 02 aiS #2
E0DD 81 rts
_Write_FIFO:
i --> X+0
Length --> X+5
Send_Buf --> X+3
E0DE A7 FF aiS #-1
E0E0 95 tSX
(0148) }
(0149)
(0150) //Write_FIFO--------------------------------------------------------------*
(0151) //功 能: 讀RC531的FIFO寄存器 *
(0152) //參 數: Length: 要寫入的字節數 *
(0153) // Send_Buf: 待發送數據應放在Send_Buf緩沖區中 *
(0154) //返 回: 無 *
(0155) //------------------------------------------------------------------------*
(0156) void Write_FIFO(INT8U *Send_Buf, INT8U Length)
(0157) {
E0E1 7F clr 0,X
E0E2 20 1B bra 0xE0FF
(0158) INT8U i;
(0159)
(0160) //寫入
(0161) for (i = 0; i < Length; i++)
(0162) RFRegWrite(RegFIFOData, Send_Buf[i]);
E0E4 3F 40 clr *__r0
E0E6 F6 ldA 0,X
E0E7 EB 04 add 4,X
E0E9 B7 41 stA *__r1
E0EB B6 40 ldA *__r0
E0ED E9 03 adc 3,X
E0EF B7 40 stA *__r0
E0F1 55 40 ldHX *__r0
E0F3 F6 ldA 0,X
E0F4 87 pshA
E0F5 A6 02 ldA #2
E0F7 87 pshA
E0F8 CD DFDA jsr _RFRegWrite
E0FB A7 02 aiS #2
E0FD 95 tSX
E0FE 7C inc 0,X
E0FF F6 ldA 0,X
E100 E1 05 cmp 5,X
E102 25 E0 bcs 0xE0E4
E104 A7 01 aiS #1
E106 81 rts
_RFReset:
data --> X+0
i --> X+1
E107 A7 FE aiS #-2
E109 95 tSX
(0163) }
(0164)
(0165) //------------------------------------------------------------------------*
(0166) //2.RC531的復位及初始化 *
(0167) //------------------------------------------------------------------------*
(0168)
(0169) //RFReset-----------------------------------------------------------------*
(0170) //功 能: 端口設置和射頻芯片復位 *
(0171) //參 數: 無 *
(0172) //返 回: 0 - 初始化成功 ;1 - 初始化失敗 *
(0173) //------------------------------------------------------------------------*
(0174) INT8U RFReset(void)
(0175) {
E10A 14 07 Bset 2,0x07
(0176) INT8U i;
(0177) INT8U data;
(0178)
(0179) //控制端口設置
(0180) RF_CTL_D |= (1 << RF_RST); //設置RF_RST為輸出
(0181) RF_CTL_D &= ~(1 << RF_IRQ); //設置RF_IRQ為輸入
E10C 17 07 Bclr 3,0x07
(0182) SPI1Init(); //SPI1初始化(與RC531通信)模擬主機
E10E CD DF31 jsr _SPI1Init
E111 95 tSX
(0183)
(0184) //RF復位,下降沿復位
(0185) RF_CTL_D |= 1 << RF_RST; //高電平復位
E112 14 07 Bset 2,0x07
(0186) for(i = 0; i < 200; i++); //延時,等待高電平穩定
E114 6F 01 clr 1,X
E116 20 02 bra 0xE11A
E118 6C 01 inc 1,X
E11A E6 01 ldA 1,X
E11C A1 C8 cmp #-56
E11E 25 F8 bcs 0xE118
(0187) RF_CTL_D &= ~(1 << RF_RST); //初始化RF_RST為低
E120 15 07 Bclr 2,0x07
(0188) for(i = 0; i < 5000; i++); //復位后等待一定的時間,必須!
E122 6F 01 clr 1,X
E124 20 02 bra 0xE128
E126 6C 01 inc 1,X
E128 E6 01 ldA 1,X
E12A A1 88 cmp #-120
E12C 25 F8 bcs 0xE126
(0189)
(0190) //驗證初始化是否成功
(0191) RFRegWrite(RegPage, 0); //線性地址模式
E12E 4F clrA
E12F 87 pshA
E130 87 pshA
E131 CD DFDA jsr _RFRegWrite
E134 A7 02 aiS #2
(0192) RFRegWrite(0x29, 0x20); //寫$20到寄存器FIFOLevel($29)
E136 A6 20 ldA #32
E138 87 pshA
E139 A6 29 ldA #41
E13B 87 pshA
E13C CD DFDA jsr _RFRegWrite
E13F A7 02 aiS #2
(0193) data = RFRegRead(0x29); //讀寄存器FIFOLevel($29),驗證寫入是否正確
E141 A6 29 ldA #41
E143 87 pshA
E144 CD DFAD jsr _RFRegRead
E147 A7 01 aiS #1
E149 95 tSX
E14A B7 41 stA *__r1
E14C F7 stA 0,X
(0194) if (data == 0x20)
E14D A1 20 cmp #32
E14F 26 03 bne 0xE154
(0195) return 0; //初始化成功
E151 4F clrA
E152 20 02 bra 0xE156
(0196) else
(0197) return 1; //初始化失敗
E154 A6 01 ldA #1
E156 A7 02 aiS #2
E158 81 rts
(0198) }
(0199)
(0200) //RC531_Init--------------------------------------------------------------*
(0201) //功 能: 禁止中斷及清除中斷標志 *
(0202) //參 數: 無 *
(0203) //返 回: 無 *
(0204) //------------------------------------------------------------------------*
(0205) void RC531_Init(void)
(0206) {
_RC531_Init:
E159 4F clrA
E15A 87 pshA
E15B 87 pshA
E15C CD DFDA jsr _RFRegWrite
E15F A7 02 aiS #2
(0207) RFRegWrite(RegPage, 0x00); //線性地址模式
(0208) RFRegWrite(RegInterruptEn, 0x7f); //禁止所有中斷
E161 A6 7F ldA #127
E163 87 pshA
E164 A6 06 ldA #6
E166 87 pshA
E167 CD DFDA jsr _RFRegWrite
E16A A7 02 aiS #2
(0209) RFRegWrite(RegInterruptRq, 0x7f); //中斷標識清零
E16C A6 7F ldA #127
E16E 87 pshA
E16F A6 07 ldA #7
E171 87 pshA
E172 CD DFDA jsr _RFRegWrite
E175 A7 02 aiS #2
E177 95 tSX
E178 81 rts
_RC531_14443ABInit:
i --> X+0
Tagtype --> X+4
E179 A7 FE aiS #-2
E17B 95 tSX
(0210) }
(0211)
(0212) //------------------------------------------------------------------------*
(0213) //3.RC531的讀卡操作 *
(0214) //------------------------------------------------------------------------*
(0215)
(0216) //RC531_14443ABInit-------------------------------------------------------*
(0217) //功 能: 初始化RC531各相關寄存器 *
(0218) //參 數: Tagtype - 電子標簽類型 *
(0219) // 0 - ISO14443B; 1 - ISO14443A *
(0220) //返 回: 無 *
(0221) //------------------------------------------------------------------------*
(0222) void RC531_14443ABInit(INT8U Tagtype)
(0223) {
E17C 4F clrA
E17D 87 pshA
E17E 87 pshA
E17F CD DFDA jsr _RFRegWrite
E182 A7 02 aiS #2
E184 95 tSX
(0224) INT16U i;
(0225)
(0226) //設置線性地址模式
(0227) RFRegWrite(RegPage, 0x00);
(0228)
(0229) //根據電子標簽類型進行相應的RC531寄存器初始化
(0230) if(Tagtype)
E185 E6 04 ldA 4,X
E187 26 03 bne 0xE18C
E189 CC E21D jmp 0xE21D
(0231) {
E18C A6 5B ldA #91
E18E 87 pshA
E18F A6 11 ldA #17
E191 87 pshA
E192 CD DFDA jsr _RFRegWrite
E195 A7 02 aiS #2
(0232) //ISO14443A電子標簽
(0233) //第2頁 傳送器與編碼器控制
(0234) RFRegWrite(RegTxControl, 0x5b); //0x5b, 幅移鍵控ASk 100%
(0235) RFRegWrite(RegCwConductance, 0x3f); //0x3f, 設置輸出驅動的電導系數
E197 A6 3F ldA #63
E199 87 pshA
E19A A6 12 ldA #18
E19C 87 pshA
E19D CD DFDA jsr _RFRegWrite
E1A0 A7 02 aiS #2
(0236) RFRegWrite(RegModConductance, 0x3f); //0x3f, 調制比 100%
E1A2 A6 3F ldA #63
E1A4 87 pshA
E1A5 A6 13 ldA #19
E1A7 87 pshA
E1A8 CD DFDA jsr _RFRegWrite
E1AB A7 02 aiS #2
(0237) RFRegWrite(RegCoderControl, 0x19); //0x19, TypeA模式,波特率106kbps,米勒編碼
E1AD A6 19 ldA #25
E1AF 87 pshA
E1B0 A6 14 ldA #20
E1B2 87 pshA
E1B3 CD DFDA jsr _RFRegWrite
E1B6 A7 02 aiS #2
(0238) RFRegWrite(RegTypeBFraming, 0x00); //0x00, EGT=0
E1B8 4F clrA
E1B9 87 pshA
E1BA A6 17 ldA #23
E1BC 87 pshA
E1BD CD DFDA jsr _RFRegWrite
E1C0 A7 02 aiS #2
(0239)
(0240) //第3頁 接收器與解碼器控制
(0241) RFRegWrite(RegDecoderControl, 0x08); //0x08, ISO14443A幀,曼徹斯特編碼
E1C2 A6 08 ldA #8
E1C4 87 pshA
E1C5 A6 1A ldA #26
E1C7 87 pshA
E1C8 CD DFDA jsr _RFRegWrite
E1CB A7 02 aiS #2
(0242) RFRegWrite(RegRxThreshold, 0xff); //0xff, 可接收的最小信號強度
E1CD A6 FF ldA #-1
E1CF 87 pshA
E1D0 A6 1C ldA #28
E1D2 87 pshA
E1D3 CD DFDA jsr _RFRegWrite
E1D6 A7 02 aiS #2
(0243) RFRegWrite(RegBPSKDemControl, 0x1e); //0x00, 忽略EOF,打開高通濾波
E1D8 A6 1E ldA #30
E1DA 87 pshA
E1DB A6 1D ldA #29
E1DD 87 pshA
E1DE CD DFDA jsr _RFRegWrite
E1E1 A7 02 aiS #2
(0244) RFRegWrite(RegClockQControl, 0x00); //0x3f, Q時鐘控制
E1E3 4F clrA
E1E4 87 pshA
E1E5 A6 1F ldA #31
E1E7 87 pshA
E1E8 CD DFDA jsr _RFRegWrite
E1EB A7 02 aiS #2
(0245)
(0246) //第4頁 射頻時間和通道冗余
(0247) RFRegWrite(RegRxWait, 0x06); //0x06, 設置接收延時
E1ED A6 06 ldA #6
E1EF 87 pshA
E1F0 A6 21 ldA #33
E1F2 87 pshA
E1F3 CD DFDA jsr _RFRegWrite
E1F6 A7 02 aiS #2
(0248) RFRegWrite(RegChannelRedundancy, 0x03); //0x03, TypeA接收冗余校驗
E1F8 A6 03 ldA #3
E1FA 87 pshA
E1FB A6 22 ldA #34
E1FD 87 pshA
E1FE CD DFDA jsr _RFRegWrite
E201 A7 02 aiS #2
(0249) RFRegWrite(RegCRCPresetLSB, 0x63); //0x63, CRC預設值
E203 A6 63 ldA #99
E205 87 pshA
E206 A6 23 ldA #35
E208 87 pshA
E209 CD DFDA jsr _RFRegWrite
E20C A7 02 aiS #2
(0250) RFRegWrite(RegCRCPresetMSB, 0x63); //0x63, CRC預設值
E20E A6 63 ldA #99
E210 87 pshA
E211 A6 24 ldA #36
E213 87 pshA
E214 CD DFDA jsr _RFRegWrite
E217 A7 02 aiS #2
E219 95 tSX
(0251) }
E21A CC E2AD jmp 0xE2AD
(0252) else
(0253) {
E21D A6 4B ldA #75
E21F 87 pshA
E220 A6 11 ldA #17
E222 87 pshA
E223 CD DFDA jsr _RFRegWrite
E226 A7 02 aiS #2
(0254) //ISO14443B電子標簽
(0255) //第2頁 傳送器與編碼器控制
(0256) RFRegWrite(RegTxControl, 0x4b); //0x4b, 13.56MHz
(0257) RFRegWrite(RegCwConductance, 0x3f); //0x3f, 設置輸出驅動的電導系數
E228 A6 3F ldA #63
E22A 87 pshA
E22B A6 12 ldA #18
E22D 87 pshA
E22E CD DFDA jsr _RFRegWrite
E231 A7 02 aiS #2
(0258) RFRegWrite(RegModConductance, 0x06); //0x06, 幅移鍵控ASk 12%
E233 A6 06 ldA #6
E235 87 pshA
E236 A6 13 ldA #19
E238 87 pshA
E239 CD DFDA jsr _RFRegWrite
E23C A7 02 aiS #2
(0259) RFRegWrite(RegCoderControl, 0x20); //0x20, TypeB,波特率106kbps, NRZ編碼
E23E A6 20 ldA #32
E240 87 p
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -