📄 rf_sub.s43
字号:
;;++++++++++++++++锁定位0+++++++++++++++++
bic.b #rf_write_bit,&P1OUT
call #rf_write0_delay
bis.b #rf_write_bit,&P1OUT
call #rf_snap_delay
ret
RF_data_write
;;++++++++++++++++数据写+++++++++++++++++
mov #20h,bit_counter_R7
write_next_bit
rlc com_data_R6
rlc com_data_R5
bit #c_bit,SR
jnz rf_write_1
rf_write_0
bic.b #rf_write_bit,&P1OUT
call #rf_write0_delay
jmp snap_next_bit
rf_write_1
bic.b #rf_write_bit,&P1OUT
call #rf_write1_delay
snap_next_bit
bis.b #rf_write_bit,&P1OUT
call #rf_snap_delay
dec bit_counter_R7
jnz write_next_bit
ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;++++++++++++++++地址码+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RF_address_code
mov #3h,bit_counter_R7
write_address_bit
rlc address_R4
bit #c_bit,SR
jnz rf_write_address_1
bic.b #rf_write_bit,&P1OUT
call #rf_write0_delay
jmp address_snap_bit
rf_write_address_1
bic.b #rf_write_bit,&P1OUT
call #rf_write1_delay
address_snap_bit
bis.b #rf_write_bit,&P1OUT
call #rf_snap_delay
dec bit_counter_R7
jnz write_address_bit
ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;+++++++++++++++++停止模式++++++++++++++++++++++++++++++++++++++++++++++++++++++++
RF_stop
bic.b #rf_write_bit,&P1OUT
mov.b #015h,&counter
rf_stop_delay
call #rf_write1_delay
call #rf_snap_delay
dec.b &counter
jnz rf_stop_delay
ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;++++++++++++++++延时程序1,写"1"时的延时,写"0"时的延时,空隙延时++++++++++++++++++++++
rf_write1_delay
mov #50,R9 ;大约52-59
call #rf_write_delay
ret
rf_write0_delay
mov #16,R9 ;大约22-26
call #rf_write_delay
ret
rf_snap_delay
mov #10,R9 ;大约120us
call #rf_write_delay
ret
rf_write_delay
nop
nop
nop
nop
nop
dec R9
jnz rf_write_delay
ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;+++++++++++++++++清射频卡数据保存区+++++++++++++++++++++++++++++++++++++++++++++++++
rf_ram_clr
clr.b rf_capture_data(R8)
inc R8
cmp #20h,R8
jnz rf_ram_clr
ret
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;+++++++++++++++++射频卡操作子程序+++++++++++++++++++++++++++++++++++++++++++++++++++++
rf_card_deal
;;-------读卡的初始化处理。
bis.b #rf_read_bit,&P1SEL
bic.b #rf_read_bit,&P1DIR
clr R8
call #rf_ram_clr
bis.b #read_rf_first_bit+read_rf_syn_bit,&rf_flag_byte
bic.b #read_rf_stop_bit,&rf_flag_byte
mov #20h,bit_counter_R7
mov #0D900h,&CCTL0
mov #0224h,&TACTL
clr &CCR0
clr R8
clr R13
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;+++++++++++++++等待读完射频卡。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
wait_rf_deal_end
dec R13
jz read_rf_error
bit #01h,&CCTL0
jnz RF_read_test
bit.b #read_rf_stop_bit,&rf_flag_byte
jz wait_rf_deal_end
clr &CCTL0
clr &TACTL
;MOV.W #0x0, R12
mov.b #0x01, is_RF_data_ok;
ret
read_rf_error
clr com_data_R5
clr com_data_R6
clr &CCTL0
clr &TACTL
;MOV.W #0x1, R12
mov.b #0x02, is_RF_data_ok;
ret
RF_read_test
mov #0224h,&TACTL
mov &CCR0,R9
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;++++++++++++读射频卡测试+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; mov R9,rf_capture_data(R8)
; incd R8
; cmp #140,R8
; jhs ISR_CCIFG2_end
; bic #01h,&CCTL0
; jmp wait_rf_deal_end
;ISR_CCIFG2_end
; jmp $
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;+++++++++++以下查找同步最关键,可以用以上小段程序测试++++++++++++++++++++++++++++++++++
bit.b #read_rf_first_bit,&rf_flag_byte
jz RF_read_normal
bit.b #read_rf_syn_bit,&rf_flag_byte
jz RF_read_first
;;-------射频卡的同步处理。
cmp #300,R9 ;288
jlo search_rf_synchronization
cmp #390,R9 ;368
jhs search_rf_synchronization
bic.b #read_rf_syn_bit,&rf_flag_byte
search_rf_synchronization
bic #01h,&CCTL0
jmp wait_rf_deal_end
RF_read_first
cmp #150,R9 ;如果小于, 忽略掉随后的一个捕获
jlo search_rf_synchronization
cmp #300,R9 ;如果大于300, 则是一个大捕获
jhs find_rf_synchronization
bic.b #read_rf_first_bit,&rf_flag_byte
mov.b #1h,&wait_half_counter
jmp search_rf_synchronization
find_rf_synchronization
clr.b &wait_half_counter
bic.b #read_rf_first_bit,&rf_flag_byte
jmp decide_this_bit
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;++++++++++++++++++++正常的读卡操作+++++++++++++++++++++++++++++++++++++++++++++++++++++
RF_read_normal
cmp #90,R9 ;小于,则错误
jlo rf_bit_error
cmp #300,R9 ;大于则错误
jhs rf_bit_error
cmp #150,R9
jlo wait_half_bit
jmp decide_this_bit
rf_bit_error
clr R8
call #rf_ram_clr
bis.b #read_rf_first_bit+read_rf_syn_bit,&rf_flag_byte
bic.b #read_rf_stop_bit,&rf_flag_byte
mov #20h,bit_counter_R7
mov #0D900h,&CCTL0
mov #0224h,&TACTL
clr &CCR0
clr R8
bic #01h,&CCTL0
jmp wait_rf_deal_end
wait_half_bit
inc.b &wait_half_counter
cmp.b #2h,&wait_half_counter
jhs decide_this_bit
bic #01h,&CCTL0
jmp wait_rf_deal_end
decide_this_bit
clr.b &wait_half_counter
bit #CCI_bit,&CCTL0
jz this_bit_0
jmp this_bit_1
bic #01h,&CCTL0
jmp wait_rf_deal_end
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;+++++++++++++++++处理数据块、数据字节、和每位之间的关系+++++++++++++++++++++++++++++++
this_bit_0
setc
rlc com_data_R6
rlc com_data_R5
jmp rf_data_counter
this_bit_1
clrc
rlc com_data_R6
rlc com_data_R5
rf_data_counter
dec bit_counter_R7
jz RF_read_normal_end
bic #01h,&CCTL0
jmp wait_rf_deal_end
RF_read_normal_end
mov com_data_R5,rf_capture_data(R8)
incd R8 ;2,6,a,e
mov com_data_R6,rf_capture_data(R8)
incd R8
cmp #28,R8
jhs rf_end
mov #20h,bit_counter_R7
bic #01h,&CCTL0
jmp wait_rf_deal_end
rf_end
bis.b #read_rf_stop_bit,&rf_flag_byte
bic #01h,&CCTL0
jmp wait_rf_deal_end
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -