?? ic01.asm
字號:
RC500RST BIT P3.1
;第0頁,命令和狀態
PAGE_REG EQU 00H
Command EQU 01H ;開始(停止)命令的執行
FIFOData EQU 02H ;64字節FIFO的輸入輸出
PrimaryStatus EQU 03H ;接收器/傳送器/FIFO的狀態標志
FIFOLength EQU 04H ;FIFO中存儲數據的字節數
SecondaryStatus EQU 05H ;不同的狀態標志
InterruptEn EQU 06H ;使能請求中斷傳送的控制位
InterruptRq EQU 07H ;中斷請求標志
;第1頁,控制和狀態
Control EQU 09H ;不同的控制標志,例如:定時、功耗等
ErrorFlag EQU 0AH ;顯示最后一次執行的命令的錯誤狀態的標志
CollPos EQU 0BH ;在RF接口檢測到的第一個沖突位的位置
TimerValue EQU 0CH ;定時器的實際值
CRCResultLSB EQU 0DH ;CRC協處理器寄存器的最低有效字節
CRCResultMSB EQU 0EH ;CRC協處理器寄存器的最高有效字節
BitFraming EQU 0FH ;調整位定向幀
;第2頁,傳送器和編碼控制
TxControl EQU 11H ;控制天線驅動引腳Tx1、Tx2的邏輯行為
CWConductance EQU 12H ;選擇天線驅動引腳Tx1、Tx2的電導
PreSet13 EQU 13H ;這些值不可以改變
PreSet14 EQU 14H ;這些值不可以改變
ModWidth EQU 15H ;選擇調制脈沖的寬度
PreSet16 EQU 16H ;這些值不可以改變
PreSet17 EQU 17H ;這些值不可以改變
;第3頁,接收器及解碼控制
RxControl1 EQU 19H ;控制接收器行為
DecoderControl EQU 1AH ;控制解碼器行為
BitPhase EQU 1BH ;選擇接收器和傳送器時鐘間的位相
RxThreshold EQU 1CH ;選擇位解碼器的閾值
PreSet1D EQU 1DH ;這些值不可以改變
RxControl2 EQU 1EH ;控制解碼器行為并定義接收器的輸入源
ClockQControl EQU 1FH ;控制時鐘產生
;第4頁,射頻時間和通道冗余
RxWait EQU 21H ;選擇在傳送之后,接收器工作之前的時間間隔
ChannelRedundancy EQU 22H ;選擇驗證RF通道數據完整性得類型和模式
CRCPresetLSB EQU 23H ;CRC寄存器預置值的最低有效字節
CRCPresetMSB EQU 24H ;CRC寄存器預置值的最高有效字節
PreSet25 EQU 25H ;這些值不可以改變
MFOUTSelect EQU 26H ;選擇應用到MFOUT引腳的內部信號
PreSet27 EQU 27H ;這些值不可以改變
;第5頁,FIFO、定時器及中斷引腳配置
FIFOLevel EQU 29H ;定義FIFO的大小,是
TimerClock EQU 2AH ;選擇時鐘的分頻
TimerControl EQU 2BH ;選擇定時器的開始和結束條件
TimerReload EQU 2CH ;定義定時器的預置值
IRQPinConfig EQU 2DH ;配置引腳IRQ的輸出狀態
PreSet2E EQU 2EH ;這些值不可以改變
PreSet2F EQU 2FH ;這些值不可以改變
;第6頁,預留
CryptoSelect EQU 31H ;論證模式選擇,可選擇飛利蒲標準和上海標準
REG62 EQU 32H ;預留未來使用
REG63 EQU 33H ;預留未來使用
REG64 EQU 34H ;預留未來使用
REG65 EQU 35H ;預留未來使用
REG66 EQU 36H ;預留未來使用
REG67 EQU 37H ;預留未來使用
;第7頁,測試控制
REG71 EQU 39H ;預留未來使用
REG72 EQU 3AH ;預留未來使用
REG73 EQU 3BH ;預留未來使用
REG74 EQU 3CH ;預留未來使用
REG75 EQU 3DH ;預留未來使用
REG76 EQU 3EH ;預留未來使用
REG77 EQU 3FH ;預留未來使用
ORG 0000H
START:MOV P1,#0FFH
START1:
LCALL PCD_RST ;復位PCD
MOV R7,#00H
LCALL READ_REG
MOV R7,#00H
MOV R6,#80H
LCALL WRITE_REG
LCALL READE2_PCD_SNR
LCALL DELAY_1MS
MOV R7,#FIFOLength
LCALL READ_REG
MOV R0,#39H
MOV R7,#FIFOData
PCD_SNR:
LCALL READ_REG
MOV @R0,A
INC R0
CJNE R0,#3DH,PCD_SNR
LCALL PCD_CONFIG
REQ:
SETB P1.0
LCALL REQ_STD
LCALL DELAY_1MS
MOV R7,#ErrorFlag
LCALL READ_REG
MOV R7,FIFOLength
LCALL READ_REG
CJNE A,#02H,REQ
CLR P1.0
;****************************SUB PROGRAM*********************************
;****************CLR_RAM 清30H到5FH單元***************
CLR_RAM:
MOV R0,#30H
CLR_RAM_1:
MOV @R0,#0FFH
INC R0
CJNE R0,#60H,CLR_RAM_1
MOV R0,#00H
RET
;*************start config***************
PCD_CONFIG:
MOV R7,#ClockQControl
MOV R6,#00H
LCALL WRITE_REG
MOV R6,#40H
LCALL WRITE_REG
LCALL DELAY_50us
LCALL DELAY_50us
LCALL CLRB_REG
MOV R7,#BitPhase
MOV R6,#0ADH
LCALL WRITE_REG
MOV R7,#RxThreshold
MOV R6,#0FFH
LCALL WRITE_REG
MOV R7,#RxControl2
MOV R6,#01H
LCALL WRITE_REG
MOV R7,#FIFOLevel
MOV R6,#04H
LCALL WRITE_REG
MOV R7,#TimerControl
MOV R6,#02H
LCALL WRITE_REG
MOV R7,#TimerClock
MOV R6,#07H
LCALL WRITE_REG
MOV R7,#TimerReload
MOV R6,#6AH
LCALL WRITE_REG
MOV R7,#IRqPinConfig
MOV R6,#03H
LCALL WRITE_REG
MOV R7,#TxControl
LCALL READ_REG
NOP ;設斷點,觀察A,或R6
MOV R6,#03H
LCALL CLRB_REG
LCALL DELAY_1ms
MOV R6,#03H
LCALL SETB_REG
LCALL READ_REG
NOP ;設斷點,觀察A,或R6
RET
;***************end config*********************
;******************PCD_RST 讀卡芯片復位***********************
PCD_RST:
CLR RC500RST
mov R5,#20
delay_20ms:
lcall DELAY_10ms
DJNZ R5,DELAY_20ms
SETB RC500RST
lcall delay_10ms
lcall delay_10ms
lcall delay_10ms
CLR RC500RST
WAIT_IDLE:
LCALL DELAY_10MS
MOV R7,#COMMAND
LCALL READ_REG
CJNE A,#00H,WAIT_IDLE
NOP
RET
;RC500RST BIT P3.1 P3.1口接開發板上的REST
;*******************READ_REG 讀寄存器**********************
;R7保存寄存器序號,R6為讀取的值
READ_REG:MOV A,R7
RR A ;寄存器序號除以8即為頁號
RR A
RR A
ANL A,#07H
ORL A,#80H
MOV DPTR,#PAGES ;選頁
MOVX @DPTR,A
MOV A,R7
ANL A,#07H ;得到頁內地址
MOV DPTR,#PAGES ;基地址
ORL DPL,A ;加上偏移地址
MOVX A,@DPTR ;讀寄存器
MOV R6,A
NOP
RET
;*************** READE2_PCD_SNR *****************
READE2_PCD_SNR:
MOV R7,#InterruptEn
MOV R6,#7FH ;chsin此控制字將關閉所有中斷
LCALL WRITE_REG
MOV R7,#InterruptRq
MOV R6,#7FH
LCALL WRITE_REG
MOV R7,#Command
MOV R6,#PCD_IDLE
LCALL WRITE_REG
MOV R7,#Control ;清除內部FIFO緩沖區的讀/寫指針和FIFOOvfl標志
MOV R6,#01H
LCALL SETB_REG
MOV R7,#FIFOData
MOV R6,#08H
LCALL WRITE_REG
MOV R6,#00H
LCALL WRITE_REG
MOV R6,#04H
LCALL WRITE_REG
MOV R7,#InterruptEn ;necessary interrupts are enabled
MOV R6,#0A7H
LCALL WRITE_REG
MOV R7,#COMMAND
MOV R6,#03H ;
LCALL WRITE_REG
RET
;******************* REQ_STD ****************************
REQ_STD:
MOV R7,#ChannelRedundancy
MOV R6,#03H
LCALL WRITE_REG
MOV R7,#Control
MOV R6,#08H
LCALL CLRB_REG
MOV R7,#BitFraming
MOV R6,#07H
LCALL WRITE_REG
MOV R7,#TxControl
MOV R6,#03H
LCALL SETB_REG
MOV R7,#TxControl
LCALL READ_REG
MOV R7,#Control ;清除內部FIFO緩沖區的讀/寫指針和FIFOOvfl標志
MOV R6,#01H
LCALL SETB_REG
MOV R7,#FIFOData
MOV R6,#26H
LCALL WRITE_REG
MOV R7,#InterruptEn ;necessary interrupts are enabled
MOV R6,#0BDH
LCALL WRITE_REG
MOV R7,#COMMAND
MOV R6,#1EH ;
LCALL WRITE_REG
MOV R7,#FIFOLength
LCALL READ_REG
NOP
RET
;*******************WRITE_REG 寫寄存器**********************
;R7保存寄存器序號,R6為操作值
WRITE_REG:MOV A,R7
RR A ;寄存器序號除以8即為頁號
RR A
RR A
ANL A,#07H
ORL A,#80H
MOV DPTR,#PAGES ;選頁
MOVX @DPTR,A
MOV A,R7
ANL A,#07H ;得到頁內地址
MOV DPTR,#PAGES ;基地址
ORL DPL,A ;加上偏移地址
MOV A,R6
MOVX @DPTR,A ;操作數送寄存器
NOP
RET
;******************* DELAY_1ms **************************
DELAY_1ms:
MOV 3FH,#10
DLY1_1ms:
MOV 3EH,#23
DLY2_1ms:
DJNZ 3EH,DLY2_1ms
DJNZ 3FH,DLY1_1ms
RET
;******************* DELAY_50us *************************
DELAY_50us:
MOV 3FH,#11
NOP
DLY_50us:
DJNZ 3FH,DLY_50us
RET
;********************CLRB_REG 清除寄存器位****************************
;R7,保存寄存器序號,R6為操作值
CLRB_REG:
MOV A,R7
RR A ;寄存器序號除以8即為頁號
RR A
RR A
ANL A,#07H
ORL A,#80H
MOV DPTR,#PAGES ;選頁
MOVX @DPTR,A
MOV A,R7
ANL A,#07H ;得到頁內地址
MOV DPTR,#PAGES ;基地址
ORL DPL,A ;加上偏移地址
MOV A,R6
XRL A,#0FFH
MOV R6,A
MOVX A,@DPTR
ANL A,R6
MOVX @DPTR,A ;操作數送寄存器
NOP
RET
;********************SETB_REG 置位寄存器位****************************
;R7,保存寄存器序號,R6為操作值
SETB_REG:
MOV A,R7
RR A ;寄存器序號除以8即為頁號
RR A
RR A
ANL A,#07H
ORL A,#80H
MOV DPTR,#PAGES ;選頁
MOVX @DPTR,A
MOV A,R7
ANL A,#07H ;得到頁內地址
MOV DPTR,#PAGES ;基地址
ORL DPL,A ;加上偏移地址
MOVX A,@DPTR
ORL A,R6
MOVX @DPTR,A ;操作數送寄存器
NOP
RET
;******************* DELAY_10ms **************************
DELAY_10ms:
MOV 3FH,#10
DLY1_10ms:
MOV 3EH,#248
DLY2_10ms:
DJNZ 3EH,DLY2_10ms
DJNZ 3FH,DLY1_10ms
RET
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -