<strike id="tpvd9"><dfn id="tpvd9"></dfn></strike>

        <em id="tpvd9"></em>

          <address id="tpvd9"></address>
            <dfn id="tpvd9"><sub id="tpvd9"></sub></dfn>

            <thead id="tpvd9"><noframes id="tpvd9">
            <ruby id="tpvd9"></ruby>

                  <thead id="tpvd9"></thead>
                  歡迎您訪(fǎng)問(wèn)鄭州興邦電子股份有限公司官方網(wǎng)站!
                  阿里巴巴誠信通企業(yè)
                  全國咨詢(xún)熱線(xiàn):40000-63966
                  興邦電子,中國水控機第一品牌

                  聯(lián)系興邦電子

                  全國咨詢(xún)熱線(xiàn):40000-63966

                  售后:0371-55132951/55132952

                  工廠(chǎng):河南省 鄭州市 高新區蓮花街電子電器產(chǎn)業(yè)園

                  ID卡讀卡器源程序

                  文章出處:http://psychicreadingswithdeb.com 作者:謝中業(yè)&nbsp;&nbsp; 人氣: 發(fā)表時(shí)間:2011年10月24日

                  [文章內容簡(jiǎn)介]:ID卡讀卡器源程序

                  ;程序說(shuō)明:本程序為讀寫(xiě)器程序。
                  ;下面將本程序所用變量及含義定義如下:
                  ;定義SBUF(N)為串行通訊的緩沖區。
                  ;定義CBUF(N)為讀卡卡號的緩沖區。
                  ;

                  ;通訊緩沖區定義
                  BEGIN_FLAG EQU 20H
                  END_FLAG EQU 21H
                  NUM_ADD EQU 22H
                  JISHU EQU 23H
                  CARD_FLAG EQU 24H

                  FIRST_HAND EQU 25H ;第一次握手標志,為FF為有握手,為00表示無(wú)。
                  SECOND_HAND EQU 26H ;第二次握手標志,為FF為有握手,為00表示無(wú)。
                  COMMAND_FLAG EQU 27H ;命令標志,表示什么命令。
                  S_DATA EQU P3.2
                  RESET_K4 EQU P1.7
                  RED_LED EQU P1.6
                  GREEN_LED EQU P1.5
                  BEEP EQU P1.4


                  SBUF1 EQU 40H
                  SBUF2 EQU 41H
                  SBUF3 EQU 42H
                  SBUF4 EQU 43H
                  SBUF5 EQU 44H
                  SBUF6 EQU 45H
                  SBUF7 EQU 46H
                  SBUF8 EQU 47H
                  SBUF9 EQU 48H
                  SBUF10 EQU 49H
                  SBUF11 EQU 4AH
                  SBUF12 EQU 4BH
                  SBUF13 EQU 4CH
                  SBUF14 EQU 4DH
                  SBUF15 EQU 4EH
                  SBUF16 EQU 4FH



                  ;讀卡緩沖區定義
                  CBUF1 EQU 50H
                  CBUF2 EQU 51H
                  CBUF3 EQU 52H
                  CBUF4 EQU 53H
                  CBUF5 EQU 54H
                  CBUF6 EQU 55H
                  CBUF7 EQU 56H
                  CBUF8 EQU 57H
                  CBUF9 EQU 58H
                  CBUF10 EQU 59H
                  CBUF11 EQU 5AH
                  CBUF12 EQU 5BH
                  CBUF13 EQU 5CH
                  CBUF14 EQU 5DH
                  CBUF15 EQU 5EH
                  CBUF16 EQU 5FH

                  ;----------------
                  ORG 0000H
                  LJMP START
                  ORG 0003H ;INT0入口地址
                  LJMP INT_0
                  ORG 000BH ;T0入口地址
                  LJMP TIME0
                  ORG 0013H ;INT1入口地址
                  LJMP START
                  ORG 001BH ;T1入口地址
                  LJMP START
                  ORG 0023H ;串行中斷S入口地址
                  LJMP SERIAL

                  START:
                  CLR BEEP
                  lcall dh150ms
                  SETB RED_LED
                  mov p1,#0ffh
                  MOV SP,#05FH ;設置堆棧為高64字節
                  CLR EA ;關(guān)閉所有中斷
                  MOV PCON,#00H ;電源控制寄存器設初值
                  MOV TCON, #00H ;定時(shí)寄存器設初值
                  MOV TMOD,#21H ;定時(shí)方式寄存器設初值
                  MOV TH1,#0FDH ;設置波特率:9600bps
                  MOV TL1,#0FDH
                  MOV TH0,#0FFH
                  MOV TL0,#0FFH
                  MOV SCON,#0F0H ;設置串行中斷工作在方式2狀態(tài)。當SM2=1時(shí),只接收地址信息,
                  MOV NUM_ADD,#31H
                  MOV IE,#0F3H
                  SETB ES
                  SETB EA
                  SETB ET0
                  SETB ET1
                  SETB TR0
                  MOV IP, #03H
                  SETB SM2
                  SETB BEEP
                  CLR GREEN_LED
                  MOV JISHU,#50H ;為緩沖區設置初始值。
                  MOV CARD_FLAG,#00H ;無(wú)卡標志置0。
                  LCALL DH150MS
                  CLR EX0
                  MOV IE,#00H
                  SETB TR1
                  SETB ET0
                  ; CLR ET0
                  SETB ES
                  SETB EA
                  MAIN:
                  LCALL DH70MS
                  ; LCALL READ_CARD
                  ; LCALL DH70MS
                  ; LCALL TIME0
                  LJMP MAIN



                   

                  ; JB S_DATA,MAIN ;有卡,S_DATA變低。
                  ; AJMP MAIN
                  ; LCALL GET_CHAR ;讀一字節卡數據。
                  READ_CARD:
                  LCALL RESET ;對MTP-K4進(jìn)行復位。
                  LCALL CLEAR ;首先對讀卡空間和卡標志初始化.
                  SETB EX0
                  LCALL DH70MS ;等待70MS從INT0接收數據
                  CLR EX0
                  MOV A,50H
                  CJNE A,#02,NO_BEGIN ;如果接收到02,表示有開(kāi)始位
                  MOV A,5CH
                  CJNE A,#03,NO_END ;如果接收到03,表示有結束位
                  MOV CARD_FLAG,#0FFH ;標志有卡。

                  MOV JISHU,#50H
                  LJMP READ_END

                  NO_BEGIN:
                  MOV CARD_FLAG,#00H
                  MOV JISHU,#50H
                  ; LCALL CLEAR ;首先對讀卡空間和卡標志初始化.
                  LJMP READ_END
                  NO_END:
                  MOV CARD_FLAG,#00H
                  MOV JISHU,#50H
                  ; LCALL CLEAR ;首先對讀卡空間和卡標志初始化.
                  LJMP READ_END
                  READ_END:
                  RET

                  ;--------------------------
                  CLEAR:
                  MOV R1,#5CH
                  CLR_1: MOV A,#0FFH
                  MOV @R1,A
                  DEC R1
                  MOV A,R1
                  CJNE A,#49H,CLR_1
                  RET
                  ;======================================
                  ;得到字節子程序
                  GET_CARD_CHAR:
                  PUSH 01H;R1入棧
                  PUSH 02H;R2入棧
                  ; JB S_DATA,$
                  LCALL DH10US
                  LCALL DH10US
                  MOV R2,#08
                  LOOP:
                  LCALL DH104US
                  MOV C,S_DATA
                  RRC A
                  DJNZ R2,LOOP
                  ; LCALL DH104US
                  POP 02H
                  POP 01H
                  RET
                  ;=====================================
                  ;中斷讀卡程序
                  INT_0:
                  PUSH ACC
                  LCALL GET_CARD_CHAR ;讀一字節卡數據在A(yíng)中。
                  MOV R0,JISHU
                  MOV @R0,A
                  INC R0
                  MOV JISHU,R0
                  POP ACC

                  ; CLR BEEP ;蜂鳴器發(fā)聲
                  ; SETB GREEN_LED ;綠色LED發(fā)光。
                  ; LCALL DH150MS
                  ; CLR GREEN_LED
                  ; SETB BEEP
                  ; CLR RESET_K4 ;對MTP-K4進(jìn)行復位操作。
                  ; SETB RESET_K4


                  RETI
                  ;======================================
                  ;串口得到字符程序,所得字符在A(yíng)中,并清除串行中斷。
                  COM_GET_CHAR:
                  MOV A,SBUF
                  CLR RI
                  RET
                  ;------------------------
                  ;串口發(fā)送字符程序,所發(fā)字符在A(yíng)中,并等待發(fā)送完成。
                  COM_SEND_CHAR:
                  MOV SBUF,A
                  JNB TI,$
                  CLR TI
                  RET
                  ;-------------------------
                  COM_CARD:
                   
                  RET

                  SOUND_1:
                  CLR BEEP
                  LCALL DH70MS
                  SETB BEEP
                  LCALL DH70MS
                  RET
                  ;======================================
                  ;串行中斷子程序
                  SERIAL:
                  ; SETB GREEN_LED
                  CLR RI
                  PUSH ACC
                  MOV A,SBUF
                  CJNE A,#00,COMMAND_01;指令為與讀寫(xiě)器連接
                  MOV A,#00H
                  LCALL COM_SEND_CHAR
                  POP ACC
                  RETI
                  COMMAND_01:
                  CJNE A,#01,COMMAND_02;指令為讀模塊版本號。
                  MOV A,#56H
                  LCALL COM_SEND_CHAR
                  MOV A,#31H
                  LCALL COM_SEND_CHAR
                  MOV A,#2EH
                  LCALL COM_SEND_CHAR
                  MOV A,#30H
                  LCALL COM_SEND_CHAR
                  MOV A,#32H
                  LCALL COM_SEND_CHAR
                  POP ACC
                  CLR GREEN_LED
                  RETI
                  COMMAND_02:
                  CJNE A,#02H,COMMAND_03
                  LCALL READ_CARD
                  MOV A,CARD_FLAG
                  CJNE A,#0FFH,COMMAND_02_ERR
                  MOV A,51H
                  LCALL COM_SEND_CHAR
                  MOV A,52H
                  LCALL COM_SEND_CHAR
                  MOV A,53H
                  LCALL COM_SEND_CHAR
                  MOV A,54H
                  LCALL COM_SEND_CHAR
                  MOV A,55H
                  LCALL COM_SEND_CHAR
                  MOV A,56H
                  LCALL COM_SEND_CHAR
                  MOV A,57H
                  LCALL COM_SEND_CHAR
                  MOV A,58H
                  LCALL COM_SEND_CHAR
                  MOV A,59H
                  LCALL COM_SEND_CHAR
                  MOV A,5AH
                  LCALL COM_SEND_CHAR
                  MOV A,5BH
                  LCALL COM_SEND_CHAR
                  POP ACC
                  RETI
                  COMMAND_02_ERR:
                  MOV A,#02H
                  LCALL COM_SEND_CHAR
                  POP ACC
                  RETI
                  COMMAND_03:
                  CJNE A,#03H,COMMAND_11
                  POP ACC
                  RETI
                  COMMAND_11:
                  CJNE A,#011H,COMMAND_12
                  MOV A,#011H
                  LCALL COM_SEND_CHAR
                  LCALL SOUND_1
                  POP ACC
                  RETI
                  COMMAND_12:
                  CJNE A,#012H,COMMAND_13
                  MOV A,#012H
                  LCALL COM_SEND_CHAR
                  LCALL SOUND_1
                  LCALL SOUND_1
                  POP ACC
                  RETI
                  COMMAND_13:
                  CJNE A,#013H,COMMAND_21
                  MOV A,#013H
                  LCALL COM_SEND_CHAR
                  LCALL SOUND_1
                  LCALL SOUND_1
                  LCALL SOUND_1
                  POP ACC
                  RETI
                  COMMAND_21:
                  CJNE A,#0B1H,COMMAND_22
                  MOV A,#0B1H
                  LCALL COM_SEND_CHAR
                  SETB GREEN_LED
                  LCALL DH70MS
                  CLR GREEN_LED
                  POP ACC
                  RETI
                  COMMAND_22:
                  POP ACC
                  RETI


                  ;SERIAL:
                  ; PUSH ACC
                  ; LCALL COM_GET_CHAR
                  ; CJNE A,#23H,NO_FIRST_HAND;如果等于23H為第一次握手信號,否則不是。
                  ; MOV A,#45H
                  ; LCALL COM_SEND_CHAR
                  ; MOV FIRST_HAND,#0FFH;第一次握手標志,成功。
                  ; MOV COMMAND_FLAG,#00H;清除命令標志。
                  ; LJMP SER_END
                  ;NO_FIRST_HAND:
                  ; CJNE A,#0AAH,NO_READ_ID;AA為取ID卡號命令。
                  ; MOV COMMAND_FLAG,#0AAH
                  ; MOV A,#67H
                  ; LCALL COM_SEND_CHAR
                  ; LJMP SER_END
                  ;NO_READ_ID:
                  ; CJNE A,#89H,NO_SECOND_HAND
                  ; MOV A,COMMAND_FLAG
                  ; CJNE A,#0AAH,NEXT_COMMAND;如果為AA指令,發(fā)送卡號。并清除指令。
                  ; LCALL COM_SEND_ID
                  ;
                  ;NEXT_COMMAND:
                  ; MOV COMMAND_FLAG,#00H ;命令出錯,清除所有標志。
                  ; MOV FIRST_HAND,#00H
                  ; MOV SECOND_HAND,#00H
                  ; LJMP SER_END

                  ;SER_END:
                  ; POP ACC
                  ; RETI
                  ;=======================================
                  RESET:
                  CLR RESET_K4
                  ; NOP
                  SETB RESET_K4
                  RET

                  ;=======================================
                  DH104US:
                  MOV R1,#47
                  DJNZ R1,$
                  RET

                  DH10US:
                  MOV R1,#04
                  DJNZ R1,$
                  RET
                  ;------------------
                  DH70MS:
                  MOV R1,#09FH
                  D10: MOV R2,#0FFH
                  DJNZ R2,$
                  DJNZ R1,D10
                  RET
                  ;------------------

                  DH150MS:
                  MOV R1,#0FFH
                  DH2: MOV R2,#0FFH
                  DJNZ R2,$
                  DJNZ R1,DH2
                  RET
                  ;-----------------------
                  ;未用
                  TIME0:
                  CPL RED_LED
                  ; PUSH ACC
                  ; MOV A,CARD_FLAG
                  ; CJNE A,#00H,LED_L
                  ; CLR GREEN_LED
                  ; setb beep
                  ; POP ACC
                  ; RETI
                  ;LED_L: SETB GREEN_LED
                  ; clr beep
                  ; POP ACC
                  RETI



                  END

                  本文關(guān)鍵詞:ID卡讀卡器源程序
                  回到頂部
                  99久热只有精品视频在线17_精品一区二区三区自拍图片_最新国产v亚洲_久久综合九色综合久
                  <strike id="tpvd9"><dfn id="tpvd9"></dfn></strike>

                        <em id="tpvd9"></em>

                          <address id="tpvd9"></address>
                            <dfn id="tpvd9"><sub id="tpvd9"></sub></dfn>

                            <thead id="tpvd9"><noframes id="tpvd9">
                            <ruby id="tpvd9"></ruby>

                                  <thead id="tpvd9"></thead>