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

📄 weigenshuchu.asm

📁 单片机用汇编编的韦根三十二韦根输出子程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
wp equ p1.0
I2C_scl equ p1.1
I2C_sda equ p1.2
relay equ p1.3
RELAY2 EQU P2.7
red equ p1.4
green equ p1.5
bell equ p1.6
press_open equ p1.7
WIE_A0 EQU P3.6
WIE_A1 EQU P3.7
time equ 30h
addr equ 31h
data8 equ 32h
pin_length equ 33h
pin_row equ 34h
pin_digit equ 35h ;JIA4/6
ADDRS EQU 36H
PIN_ROW1 EQU 37H
BYPASS EQU 38H
permanent  equ 39h
remove equ 3ah
initialize equ 3bh
master_pin equ 3ch
degree equ 3dh
time1 equ 3eh
mpin equ 3fh
time2 equ 40h
time3 equ 41h
pin_row3 equ 42h
pin_row2 equ 43h
wr_digit equ 44h
addrw equ 45h
e equ 46h
oo equ 70h
common equ 47h
chushu equ 48h
add_shu equ 49h
ri_inform1 equ 71h
ri_right equ 22h.5
RED_FLASH EQU 20H.0
GREEN_FLASH EQU 20H.1
RED_BLINK EQU 20H.2
GREEN_blink equ 20h.3
orange_blink equ 20h.4
orange_flash equ 20h.5
come_back equ 20h.6
door_sensor equ 20h.7
press equ 21h.0
close_bell equ 21h.1
ma_pin equ 21h.2
ad_pin equ 21h.3
dis_pin equ 21h.4
key_13 equ 21h.5
ji_ou equ 21h.6
read_two equ 21h.7
judge equ 22h.0
fuwei equ 22h.1
chushihua equ 22h.2
jishu equ 22h.3
pin equ 22h.4
ri_right2 EQU 22H.5
       org 0
     jmp main
       org 003h
     jmp int0_sub
       org 0013h
     jmp int1_sub
       org 0023h
     jmp ri_sub
       org 0030h
main:nop
     mov p1,#0ffh
     mov p3,#0ffh
     mov p2,#0ffh
     clr a
     mov r0,#02h
     mov r7,#0fdh
  t1:mov @r0,a
     inc r0
     djnz r7,t1
     mov sp,#71h
     mov 0a6h,#01eh ;启动WATCHDOG
     mov 0a6h,#0e1h
     clr red
     clr green
     clr relay
     CLR RELAY2
     mov tmod,#20h
     mov th1,#0fdh
     mov tl1,#0fdh
     setb es
     setb tr1
     clr ri
     clr it0
     CLR IT1
     clr ri_right
     mov pcon,#00h
     mov scon,#50h
     mov ip,#0
     setb ea
     clr fuwei
     clr chushihua
     lcall key_13scan
     jnz str1
     lcall del_10ms
     lcall key_13scan
     jz start_setSET   ;;;;;;
 str1:lcall rd_rd
      mov a,initialize
      cjne a,#08h,wait_main1
      jmp start1_set
wait_main1:mov a,62h
      anl a,#0fh
      mov initialize,a
wait_goon:mov a,initialize
      cjne a,#08h,main1
      jmp start1_set
main1:mov initialize,#08h
      lcall start_in
      mov r0,#50h
      mov @r0,#62h
      inc r0
      mov @r0,#56h
      inc r0
      mov @r0,#78h
      inc r0
      mov @r0,#00h
      inc r0
      mov @r0,#62h
      inc r0
      mov @r0,#56h
      inc r0
      mov @r0,#78h
      inc r0
      mov @r0,#00h
      clr wp
      mov addr,#0f8h
      mov r6,addr
      mov r0,#50h
      mov wr_digit,#8
      lcall i2c_write
      lcall del_10ms
      lcall del_10ms
      setb wp
      lcall rd_rd
start1_set:mov degree,#0
set_up:mov a,degree
       cjne a,#5,set_up0
start_setSET:jmp start_set      ;;;;;;;;;;;
set_up0:setb green
       clr red_flash
       clr red_blink
       clr orange_blink
       clr orange_flash
       clr green_blink
       clr green_flash
       clr come_back
       mov r0,#50h
       clr key_13
       mov pin_digit,#0
set_up1:lcall key_scan
       cjne a,#13h,set_up2
       jbc key_13,set_up   ;;;;;;;;;;;;;
       clr red
       clr green
       mov time1,#5
       lcall delay_time
       jmp start_set      ;;;;;;;;;;;
set_up2:cjne a,#11h,set_up3
       jnb key_13,set_up0
       clr key_13
       MOV A,PIN_DIGIT
       CJNE A,#4,SET_UP4
       mov time1,#1
       lcall delay_time
       mov r0,#60h
       mov addr,#0f0h
       mov r6,addr
set_up5:lcall i2c_read
       mov r7,#4
       mov r0,#50h
       mov r1,#60h
       mov r7,#4
set_upr:mov a,@r1
       xrl a,@r0
       jnz set_up4
       inc r0
       inc r1
       djnz r7,set_upr
       jmp set_up6
set_up4:mov r0,#50h
       mov r1,#64h
       mov r7,#4
set_1upr1:mov a,@r1
       xrl a,@r0
       jnz set_4up4
       inc r0
       inc r1
       djnz r7,set_1upr1
       jmp set_up6
set_4up4:inc degree
       setb red
       clr green
       mov time1,#1
       lcall delay_time
       clr green
       clr red
       lcall delay_time
       jmp set_up
SET_UP3:MOV @R0,A
       INC PIN_DIGIT
       INC R0
       setb key_13
       JMP SET_UP1
set_up6:clr green
       mov time,#250
       lcall del_ms
       setb green
       lcall del_ms
       clr green
;set_6up:clr green
       ;clr red
       ;setb orange_blink
       ;clr  orange_flash
       ;clr red_flash
       ;clr green_flash
       ;clr red_blink
       ;clr green_blink
       ;setb come_back
;set_up7:lcall key_scan
        ;mov r0,#50h
        ;clr come_back
        ;cjne a,#11h,set_up27
;set_up8:setb green
        ;clr red
        ;clr orange_blink
        ;setb  orange_flash
        ;clr red_flash
        ;clr green_flash
        ;clr red_blink
        ;clr green_blink
        ;lcall key_scan
        ;cjne a,#11h,set_up9
        ;jmp set_up8
 ;set_up27:cjne a,#13h,set_up7
        ;jmp set_6up   ;;;;;;;;;;;;
;set_up9:cjne a,#13h,set_up10
        ;jmp set_6up   ;;;;;;;;;
;set_up10:mov @r0,a
         ;inc r0
         ;cjne r0,#54h,set_up8
         ;mov r0,#60h
         ;mov addr,#0f0h
         ;mov r6,addr
 ;set_up11:lcall i2c_read
         ;mov r1,#60h
        ; mov r0,#50h
         ;mov r7,#4
  ;set_upr1:mov a,@r1
         ;xrl a,@r0
         ;jnz set_upr2
         ;inc r0
         ;inc r1
         ;djnz r7,set_upr1
         ;mov r1,#64h
         ;mov r0,#50h
         ;mov r7,#4
  ;set_upr2:mov a,@r1
         ;xrl a,@r0
         ;jnz set_6up
         ;inc r0
         ;inc r1
         ;djnz r7,set_upr2
set_up13:clr red
         clr green
         ;mov time1,#1
        ; lcall delay_time
         setb green_blink
         clr red_blink
         clr orange_blink
         clr  green_flash
         clr red_flash
         clr orange_flash
         clr red
         lcall key_SCAN
         jnz set_0up
         lcall test
 set_0up:cjne a,#1,set_up12
         setb pin
         LCALL ADD_PIN0
set_up12:cjne a,#2,set_up14
         setb pin
         lcall sub_pin0
set_up14:cjne a,#3,set_up15
         lcall time_delay
         jmp set_up21
set_up15:cjne a,#4,set_up16
         lcall PIN_46DIGIT
         jmp set_up21
set_up16:cjne a,#5,set_up17
         lcall by_pass
         jmp set_up21
set_up17:cjne a,#6,set_up18
         lcall permanent_lock
         jmp set_up21
set_up18:cjne a,#7,set_up19
         lcall remove_door
         jmp set_up21
set_up19:cjne a,#8,set_up20
         lcall master
set_up20:cjne a,#13h,set_up21
         clr red
         clr green
         lcall waitp

         mov time1,#20
         lcall delay_time
         jmp start_set
set_up21:jmp set_up13
; mov 0a6h,#01eh
; mov oa6h,#0e1h
start_set:lcall rd_rd
begin_str:mov a,permanent
          cjne a,#6,open_door11
          ;mov a,remove
          ;cjne a,#7,WIEGAND_11
          mov a,bypass
          cjne a,#5,set_bypass1
          mov a,pin_row
          jnz  program_s
          mov pin_row,63h
          jz program_end1
program_s:cjne a,#21,begin
pro_end1:mov pin_row,#0
         jmp program_end1
;WIEGAND_11:JMP WIEGAND
     begin:jnc pro_end1
          mov degree,#0
          mov a,pin_length
start_1:setb orange_flash
      clr red_flash
      clr green_flash
      clr orange_blink
      clr red_blink
      clr green_blink
      mov pin_digit,#0
      mov r0,#58h
      mov a,degree
      cjne a,#5,start0
program_end1:jmp program_end
open_door11:jmp open_door1
set_bypass1:jmp set_bypass
start0:setb press
      lcall key_scan
      cjne a,#13h,start1
      sjmp start_1
start2_1:jmp start2
  start1:cjne a,#11h,start2_1
PASS_DIGITH:clr red
      clr green
      mov pin_row1,pin_row
      mov a,pin_digit
      jz start_1
      cjne a,pin_length,start3_3
      cjne a,#4,start7
      mov @r0,#0fh
      inc r0
      mov @r0,#0fh
start7:mov addr,#0
      mov addrs,#0
start77:mov r1,#58h
start5:mov r0,#60h
      mov r6,addr
      lcall i2c_read
      mov r0,#60h
      mov r1,#58h
      mov r7,#6
startr:mov a,@r1
      xrl a,@r0
      jnz start4
      inc r0
      inc r1
      djnz r7,startr
      jmp open_door
start3_3:jmp start3
start4:inc addrs
      mov a,addrs
      mov b,#8 ;;;;;;;;;;
      mul ab
      mov addr,a
      dec pin_row1
      mov a,pin_row1
      jnz start77
      mov pin_row2,pin_row
      mov pin_row3,#0
      mov addr,#0a0h
      mov addrs,#0a0h
st_two4:mov r6,addr
      mov r0,#60h
      lcall i2c_read
      mov r0,#60h
      mov r1,#58h
      mov r2,#3
st_two2:mov a,@r0
      swap a
      anl a,#0fh
      xrl a,@r1
      jnz st_two1
      mov a,@r0
      anl a,#0fh
      inc r1
      xrl a,@r1
      jnz st_two1
      inc r0
      inc r1
      djnz r2,st_two2
      clr wp
      mov a,pin_row3
      mov b,#8
      mul ab
      mov r6,a
      mov r0,#58h
      lcall i2c_write
      lcall del_10ms
      lcall del_10ms
      setb wp
      jmp open_door
st_two1:inc pin_row3
      dec pin_row2
      mov a,pin_row2
      jz start3
      mov r0,#63h
      mov r1,#58h
      mov r2,#3
st_two3:mov a,@r0
      swap a
      anl a,#0fh
      xrl a,@r1
      jnz st_two6
      mov a,@r0
      anl a,#0fh
      inc r1
      xrl a,@r1
      jnz st_two6
      inc r0
      inc r1
      djnz r2,st_two2  ;;hj;;;
      clr wp
      mov a,pin_row3
      mov b,#8
      mul ab
      mov r6,a
      mov r0,#58h
      lcall i2c_write
      lcall del_10ms
      lcall del_10ms
      setb wp
      jmp open_door
st_two6:inc pin_row3
      dec pin_row2
      mov a,pin_row2
      jz start3
      mov a,addr
      add a,#8
      mov addr,a
      jmp st_two4
start3:inc degree
         setb  red
         clr green
         mov time1,#3
         lcall delay_time
         clr red
         lcall delay_time
      jmp start_1
start2:inc pin_digit
      mov @r0,a
      inc r0
      MOV A,PIN_DIGIT
      CJNE A,PIN_LENGTH,PASS_digit
      jmp PASS_DIGITh
PASS_DIGIT:jmp start0
set_bypass:lcall del_10ms
      clr red
      clr green
      clr red_flash
      clr red_blink
      setb orange_blink
      clr orange_flash
      clr green_blink
      clr green_flash
      setb press
      setb close_bell
      lcall key_scan
      clr close_bell
      cjne a,#13h,set_bypass
      lcall buzzer
      lcall buzzer
      lcall buzzer
      clr bell
      clr close_bell
       sjmp open_door3
open_door:mov a,remove
      cjne a,#7,WIEGAND_11
open_door3:clr press
      setb relay
      SETB RELAY2
      setb green
      clr red
      ;mov a,permanent
      ;cjne a,#6,open_door1
      mov a,time2
      cjne a,#1,time_del3
      mov time3,#8
      sjmp time_del
WIEGAND_11:jmp WIEGAND
time_del3:cjne a,#2,time_del5
      mov time3,#15
      sjmp time_del
time_del5:cjne a,#3,time_del10
      mov time3,#28
      sjmp time_del
time_del10:mov time3,#50
time_del:mov time1,time3
      setb ex0
      SETB EX1
      clr door_sensor
      lcall delay_time
      clr ex0
      CLR EX1
      clr door_sensor
      clr relay
      CLR RELAY2
     ;LCALL RD_RD
     ;mov time1,#5
     ;lcall delay_time
      jmp START_SET
open_door1:setb relay
      SETB RELAY2
      setb green
open_door2:lcall del_10ms
      sjmp open_door2
WIEGAND:lcall buzzer
        lcall buzzer
        lcall buzzer
        clr bell
wiegand4:mov a,5ch
  cjne a,#0fh,wiegand1
  mov a,5dh
  cjne a,#0fh,wiegand1
   mov r1,#60h
   mov r0,#58h
   mov r7,#4
   mov @r1,#0
   inc r1
   mov @r1,#0
   inc r1
wiegnd2:mov a,@r0
   mov @r1,a
   inc r0
   inc r1
   djnz r7,wiegnd2
   mov r7,#6
   mov r0,#58h
   mov r1,#60h
wiegand3: mov a,@R1
   mov @r0,a
   inc r0
   inc r1
   djnz r7,wiegand3
wiegand1:mov add_shu,#0
        lcall change_str
        lcall output_32
        mov time1,#40
        lcall delay_time
        jmp start_set
program_end:clr green;休眠
        clr red
        mov r2,#4
program1:mov time1,#250
        lcall delay_time
        djnz r2,program1
        jmp start_set
int0_sub:push acc
          push dph
          push dpl
          push 03h
          push 04h
          push 05h
          setb door_sensor
          pop 05h
          pop 04h
          pop 03h
          pop dpl
          pop dph
          pop acc
          reti
INT1_SUB:push acc
          push dph
          push dpl
          push 03h
          push 04h
          push 05h
          setb door_sensor
          pop 05h
          pop 04h
          pop 03h
          pop dpl
          pop dph
          pop acc
          reti
ri_sub:push acc
       push dph
       push dpl
       push 6dh
       jnb ri,$
       clr ri
       mov a,sbuf
       clr ri_right
       mov ri_inform1,a
       xrl a,#0eah
       jnz ri_eer
       setb ri_right
       SETB RI_RIGHT2
ri_eer:pop 6dh
       pop dpl
       pop dph
       pop acc
       reti
 test:clr red
      setb green
      clr green_blink
      clr red_blink
      clr orange_blink
      clr orange_flash

⌨️ 快捷键说明

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