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

📄 em4001门禁卡解码程序.txt

📁 本例是一个用PIC16F73编写的门禁读卡器解码并显示的源程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
               BCF           T1CON,TMR1ON  ;关闭TMR1
               CLRF          TMR1L         ;清TMR1寄存器
               CLRF          TMR1H
               BSF           T1CON,TMR1ON  ;启动TMR1

               BTFSC         PIR1,TMR1IF   ;如TMR1计数溢出则是错误接收
               GOTO          SHUJU_WAN
               BTFSS         PORTB,7
               GOTO          $-3
               BSF           STATUS,C      ;将数据"1"压入数据寄存器
               RLF           TEMP_GE,1
               RLF           TEMP_SHI,1
               RLF           TEMP_BAI,1
               RLF           TEMP_QIAN,1
               DECFSZ        COUNT_WG,1    ;判断26位数据是否接收完毕
               GOTO          SHUJU_JSH     ;未接收完毕则转向测高电平脉宽
               GOTO          SHUJU_BZ      ;数据接收完毕则置刷新标志位
;--------------测高电平脉宽
SHUJU_JSH  
               BCF           T1CON,TMR1ON  ;关闭TMR1
               CLRF          TMR1L         ;清TMR1寄存器
               CLRF          TMR1H
               BSF           T1CON,TMR1ON  ;启动TMR1
SHUJU_JSH_1
               BTFSC         PIR1,TMR1IF   ;如TMR1计数溢出则是错误接收
               GOTO          SHUJU_WAN
               BTFSS         PORTB,6
               GOTO          SHUJU_JS0L
               BTFSS         PORTB,7
               GOTO          SHUJU_JS1L
               GOTO          SHUJU_JSH_1
;--------------
SHUJU_BZ       BSF           BZ_TEMP,0     ;置数制转换标志位 
SHUJU_WAN      RETURN
;--------------二进制转十六进制码---------------------------------------
BINZHEX
               BCF           BZ_TEMP,0     ;清数制转换标志位
               MOVLW         03H           ;取TEMP_QIAN的低二位存入DATE_7
               ANDWF         TEMP_QIAN,0
               MOVWF         DATE_7
;-------------
               MOVLW         0F0H          ;取TEMP_BAI的高四位存入DATA_6
               ANDWF         TEMP_BAI,0
               MOVWF         DATE_6
               SWAPF         DATE_6,1
               MOVLW         0FH           ;取TEMP_BAI的低四位存入DATE_5
               ANDWF         TEMP_BAI,0
               MOVWF         DATE_5
;--------------
               MOVLW         0F0H          ;取TEMP_SHI的高四位存入DATA_4
               ANDWF         TEMP_SHI,0
               MOVWF         DATE_4
               SWAPF         DATE_4,1
               MOVLW         0FH           ;取TEMP_SHI的低四位存入DATE_3
               ANDWF         TEMP_SHI,0
               MOVWF         DATE_3
;---------------
               MOVLW         0F0H          ;取TEMP_GE的高四位存入DATA_2
               ANDWF         TEMP_GE,0
               MOVWF         DATE_2
               SWAPF         DATE_2,1
               MOVLW         0FH           ;取TEMP_GE的低四位存入DATE_1
               ANDWF         TEMP_GE,0
               MOVWF         DATE_1
;---------------  
               MOVF          DATE_7,0
               MOVWF         QIAN
               MOVF          DATE_6,0
               MOVWF         BAI
               MOVF          DATE_5,0
               MOVWF         SHI
               MOVF          DATE_4,0
               MOVWF         GE
;-------------- 
BINZHEX_WAN           
               BSF           BZ_TEMP,1   ;置刷新标志位
               RETURN
;=============移位显示子程序=================================
AJYW           CALL          DELAY20MS   ;延时判断按键的有效性     
               BTFSC         PORTB,1
               GOTO          AJYW_WAN    ;是干扰则返回主程序
               BTFSS         PORTB,1     ;判断按键是否松开
               GOTO          $-1
               MOVF          QIAN,0      ;进行移位操作
               MOVWF         TEMP_YIWEI
               MOVF          BAI,0
               MOVWF         QIAN
               MOVF          SHI,0
               MOVWF         BAI
               MOVF          GE,0
               MOVWF         SHI
               MOVF          TEMP_YIWEI,0
               MOVWF         GE
               BSF           BZ_TEMP,1    ;置刷新标志位
 AJYW_WAN      RETURN  
;==============显示转换子程序==============================
XSZH           CALL          DELAY20MS   ;延时判断按键的有效性     
               BTFSC         PORTB,2
               GOTO          XSZH_WAN    ;是干扰则返回主程序
               BTFSS         PORTB,2     ;判断按键是否松开
               GOTO          $-1
;--------------
               BTFSC         BZ_TEMP,2   ;判断韦根显示标志位
               GOTO          XSZH_1
;--------------显示韦根数据的低三位
               BSF           BZ_TEMP,2   ;韦根显示标志位取反                      
               MOVF          DATE_1,0
               MOVWF         GE
               MOVF          DATE_2,0
               MOVWF         SHI
               MOVF          DATE_3,0
               MOVWF         BAI
               MOVLW         10H
               MOVWF         QIAN
               GOTO          XSZH_2
;------------- 显示韦根数据的高四位
XSZH_1         
               BCF           BZ_TEMP,2   ;韦根显示标志位取反 
               MOVF          DATE_7,0
               MOVWF         QIAN
               MOVF          DATE_6,0
               MOVWF         BAI
               MOVF          DATE_5,0
               MOVWF         SHI
               MOVF          DATE_4,0
               MOVWF         GE
;--------------
XSZH_2         BSF           BZ_TEMP,1   ;置刷新标志位
XSZH_WAN       RETURN            
;==============显示子程序==================================
XIANSHI        BCF           BZ_TEMP,1    ;清刷新标志位
               MOVLW         28H
               MOVWF         TEMP_JZ
XIANSHI_1      BTFSC         TEMP_JZ,2
               GOTO          XIANSHI_WAN
               MOVF          TEMP_JZ,0
               MOVWF         FSR
               MOVF          00H,0
               CALL          TB
               MOVWF         DATE_ZJ
               CALL          FSBCD
               INCF          TEMP_JZ,1
               GOTO          XIANSHI_1          
XIANSHI_WAN    RETURN
;**************BCD码发送子程序****************************
FSBCD          MOVLW        08H           ;发送循环次数
               MOVWF        COUNT_FMBCD
               BCF          ENABLE164     ;关显示
               BCF          STATUS,0
FSBCD_1        BCF          CLK164
               RLF          DATE_ZJ,1
               BTFSS        STATUS,0
               GOTO         FSBCD_2
               BSF          DATE164
               GOTO         FSBCD_3
FSBCD_2        BCF          DATE164
               NOP
FSBCD_3        BSF          CLK164        ;产生时钟上升沿
               DECFSZ       COUNT_FMBCD,1 ;发送完毕否?   
               GOTO         FSBCD_1
               BSF          ENABLE164     ;开显示
               RETURN       
;=============延时20MS子程序===============================
DELAY20MS     MOVLW         28H      
              MOVWF         COUNT0_DELAY
DELAY20MS_1   MOVLW         5DH
              MOVWF         COUNT1_DELAY
              DECFSZ        COUNT1_DELAY,1
              GOTO          $-1
              DECFSZ        COUNT0_DELAY,1
              GOTO          DELAY20MS_1
              RETURN
;---------------------------------------------------------
               END

⌨️ 快捷键说明

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