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

📄 wm-01tc源程序.txt

📁 射频卡读卡程序,射频IC卡识别技术
💻 TXT
字号:
;2003.07.08,use 89c52




UART_RX_BIT     BIT P2.5              ; 接收卡号,接模块TTL232 发送端
ICNUM_IN        BIT P3.2              ; 读卡中断,接int0

TimeCount1      EQU     30H  ;120US
TimeCount2      EQU     31H  ;60US
;TimeCount3     EQU     32H  ;60US

UARTData        EQU     33H  ;卡号缓冲
CardDataCount   EQU     34H  ;卡号长度8字节
UARTBitCount    EQU     35H  ;IC卡字节长度为8

DataBuff1       EQU     0F8H ;卡号存放F5H-FFH

;======================================
		   ORG	 0000H
		   LJMP  START
		   ORG	 0003H
                   LJMP  ICREAD
;=======================================
		   ORG	 0100H

;--------------------------------------------------------------------
; 开始正常运行
;--------------------------------------------------------------------


START:             NOP


;--------------------------------------------------------------------
;ic读卡中断子程序
;--------------------------------------------------------------------

ICREAD:

ICREAD01:          LCALL WATCHDOG
                   PUSH  Acc
                   PUSH  B
                   PUSH  PSW
                   PUSH  DPH
                   PUSH  DPL
                   ;CLR   RS1                      ;第二区
                   ;SETB  RS0
;--------------------------------------------------------------------
YANSHI:            JB    ICNUM_IN,ICREADRET  ;p3.2高电平返回
                   JB    UART_RX_BIT,YANSHI
;--------------------------------------------------------------------
; ReadCard
                   LCALL   ReadCard
ICREADRET:         POP   DPL
                   POP   DPH
                   POP   PSW
                   POP   B
                   POP   Acc
                   RETI
;====================================================================

;--------------------------------------------------------------------
; % SUBROUTINE for SoftUART
;--------------------------------------------------------------------
ReadCard:
        CLR P1.5   ;读卡过程LED显示
        JB      UART_RX_BIT,$
        MOV     CardDataCount,#8
        MOV     R1,#DataBuff1
ReadCardLoop2:
        LCALL   SoftUART_GetByte
        MOV     @R1,UARTData
        INC     R1
        DJNZ    CardDataCount,ReadCardLoop2
        SETB P1.5;读卡完毕关闭LED显示
        NOP
        NOP
YYRETT: RET
;--------------------------------------------------------------------
; FUNCTION: Init_SoftUART
; INPUT:
; OUTPUT:
;--------------------------------------------------------------------

Init_SoftUART:
        SETB    UART_RX_BIT
        RET

;--------------------------------------------------------------------
; FUNCTION: SoftUART_GetByte
; INPUT:
; OUTPUT:   UARTData
; USE:      A,C
;--------------------------------------------------------------------

SoftUART_GetByte:

; Wait for START bit
; 增加超时处理: 未连接/未上电/通讯错误等


YYIC:   NOP
        ;LCALL WATCHDOG
YYRETT1:JB      UART_RX_BIT,YYIC
        LCALL   Delay_120us_NOP
        LCALL   Delay_60us_NOP
; Get DATA bit
        MOV     UARTBitCount,#08H
SoftUART_GetByteLoop:
        MOV     C,UART_RX_BIT
        RRC     A
        LCALL   Delay_120us_NOP
        DJNZ    UARTBitCount,SoftUART_GetByteLoop
        MOV     UARTData,A
ICERR:  RET

;-------------------------------------------------------------------
; FUNCTION: Delay_120us_NOP
; INPUT:
; OUTPUT:
;--------------------------------------------------------------------
Delay_120us_NOP:
        MOV     TimeCount1,#28
Delay_120usLoop:
        NOP
        DJNZ    TimeCount1,Delay_120usLoop
        RET
;--------------------------------------------------------------------
; FUNCTION: Delay_60us_NOP
; INPUT:
; OUTPUT:
Delay_60us_NOP:
        MOV     TimeCount2,#14
Delay_60usLoop:
        NOP
        DJNZ    TimeCount2,Delay_60usLoop
        RET

;--------------------------------------------------------------------
                   END

⌨️ 快捷键说明

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