⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sen_rec4.asm

📁 此程序为13.56MHz的RFID底层读写卡程序
💻 ASM
字号:
;单片机类别:12分频单片机
;单片机的振荡频率:22.1184MHz
;CARD类型:9600卡
;CARD的振荡频率:3.5795MHz
;CARD的IO管脚:P1.3
;===================================

;1ETU需要的nop数:191.554798156167
;1ETU(实际-现在):=-.445201843832933
;0.5ETU(实际-现在):=-2.22260092191647
;===================================
public _I_send4
public _I_receive4
proc segment code
rseg proc
SAMIO    bit   P2.0    ;by cpu_io pin  //p2.0
Timer00  EQU   93         ;ONEETU=2*Timer00+6
Timer01  EQU   46          ;HALFETU=2*Timer01+3
;======================================================
;1ETU:    AAA--AAA, BBB-BBB,CCC-CCC
;1.5ETU:  DDD--DDD
;======================================================
;======================================================
;c:     unsigned char I_Send(unsigned char ch);
;       input:  ch
;       ret:    ==0 --OK
;               !=0--ERR
;ASM: OCCUPY: R6,R7,A,C
;     INPUT : R7
;     output:--
;     status: r7=0:right
;              <>0:error
_I_Send4:
sb_00:	mov     a,r7
	mov	c,p
	mov	r7,#0ffh
	mov     r6,#0ffh
sb_01:	jb	SAMIO,sb_02 ;
	djnz	r7,sb_01
	mov     r7,#0ffh
	djnz    r6,sb_01
	setb    SAMIO
	mov	R7,#01H     ;timeout=(255*4+1)*255
	ret
sb_02:
	mov	r6,#09h     ;1
	clr	SAMIO       ;1
	NOP                 ;1-------------TEST BIT1
;------------------------------------------AAA1ETU
        mov	r7,#Timer00 ;1
	djnz	r7,$        ;2*#Timer00
        nop                 ;1
        nop                 ;1
;------------------------------------------BBB1ETU
sb_03:	rrc	a           ;1
	mov	SAMIO,c     ;1
	NOP                 ;1-------------TEST BIT2
;------------------------------------------AAA.1ETU
;------------------------------------------CCC1ETU
	mov	r7,#Timer00 ;1
	djnz	r7,$        ;2*#Timer00
	djnz	r6,sb_03    ;2
;------------------------------------------BBB1ETU
	NOP                 ;1
	setb	SAMIO       ;1
	NOP                 ;1-------------TEST BIT3
;------------------------------------------CCC1ETU
	mov	r7,#Timer00 ;1
        djnz    r7,$        ;2*#Timer00
        nop                 ;1
        nop                 ;1
        nop                 ;1
        nop                 ;1
        NOP                 ;1-------------TEST BIT4
;------------------------------------------CCC1ETU
        mov	r7,#Timer00 ;1
        djnz    r7,$        ;2*#Timer00
        nop                 ;1
        NOP                 ;1
        mov     r7,#00h     ;1
        NOP                 ;1-------------TEST BIT5
;------------------------------------------CCC1ETU
	ret                 ;1
;======================================================
;======================================================
;c:     unsigned char I_Receive(unsigned char *ch);
;       input:  *ch
;       putput: *ch
;       ret:    ==0 --OK
;               !=0--ERR
;ASM: OCCUPY: R6,R7,R5,A,C DPTR
;     INPUT : R3--TYPE  R2R1--ADDR
;     output: R3--TYPE  R2R1--ADDR
;     status: r7=0:right
;              =01:no start bit
;              =02:parity bit error
_I_Receive4:
RB_00:	mov	r6,#0FFh
	mov	r7,#0ffh
        MOV     R5,#03h
RB_01:	jnb	SAMIO,RB_02 ;
	djnz	r7,RB_01    ;
	mov	r7,#0ffh
	djnz	r6,RB_01
        djnz    r5,RB_01
	mov	R7,#01H      ;timeout=(4*255+1+2)*255*3
	ret
;------------------------------------------DDD1.5ETU
RB_02:
	NOP                 ;1-------------TEST BIT6
	mov	r6,#08h     ;1
	mov	r7,#Timer00 ;1
	djnz	r7,$        ;#Timer00*2
        NOP                 ;1
        NOP                 ;1
        NOP                 ;1
        mov	r7,#Timer01 ;1
	djnz	r7,$        ;#Timer01*2
        NOP                 ;1
        nop
        nop
;------------------------------------------AAA1ETU
RB_03:	mov	c,SAMIO     ;1
;------------------------------------------DDD1.5ETU
;------------------------------------------BBB1ETU
	NOP                 ;1-------------TEST BIT7
	rrc	a           ;1
	mov	r7,#Timer00 ;1
	djnz	r7,$        ;#Timer00*2
	djnz	r6,RB_03    ;2
;------------------------------------------AAA1ETU
	mov	c,SAMIO     ;1
;------------------------------------------BBB1ETU
;------------------------------------------CCC1ETU
	NOP                 ;1-------------TEST BIT8
	mov	r7,#Timer00 ;1
	djnz	r7,$        ;#Timer00*2
        NOP                 ;1
        NOP                 ;1
        setb    SAMIO 	    ;1
;------------------------------------------CCC1ETU
        NOP                 ;1-------------TEST BIT9
RB_04:	CJNE   R3,#02H,RB_05
	MOV DPH,R2
	MOV DPL,R1
	MOVX @DPTR,A
	MOV R7,#00H
	RET
RB_05:  MOV @R1,A
        mov     r7,#00h
	ret

	end
;======================================================
;======================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -