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

📄 keym.asm

📁 单片机设计的行列键盘扫描子程序一点点拉没有了
💻 ASM
📖 第 1 页 / 共 3 页
字号:
     setb red_blink
     clr orange_blink
     setb slow_orange
     setb slow_orange2
     setb come_back
     clr test_menu
     setb menu
     clr b_j
test0:call key_scan
test1:cjne a,#1,test2
     clr red
     setb green
     clr green_blink
     setb red_blink
     clr orange_blink
     setb slow_orange
     setb slow_orange2
     setb come_back
     setb test_menu
     clr menu
      setb b_j
      clr press
test3:lcall key_scan
      cjne a,#13h,test3
       clr b_j
      jmp test
test2:cjne a,#3,test5
      setb red
      clr green
      clr green_blink
      clr red_blink
      clr orange_blink
      setb test_menu
      clr menu

test7:lcall key_scan
      cjne a,#13h,text6
      jmp test
text6:clr red
      mov time,#50
      lcall del_ms
      setb red
      jmp test7
test5:cjne a,#2,test8
      clr red
      setb green
      clr green_blink
      clr red_blink
      clr orange_blink
      setb test_menu
      clr menu
      mov r7,#20 ;10s
       LCALL DOG ;喂狗51
       clr relay
text1:mov time,#250
      lcall del_ms
      djnz r7,text1
       setb relay
       jmp test
test99:jmp test9
test8:cjne a,#4,test99
     mov r0,#60h
     mov addr,#0f0h
     mov r6,addr
lcall i2c_read
lcall del_10ms
     clr red
     clr green ;;;;;;;;;;
     clr wp
     mov r6,#0
     MOV R3,#0
     MOV E,#0
TT:  MOV R0,#50H
     MOV R4,#8
     LCALL DOG ;喂狗49
AA:  MOV @R0,E
     INC R0
    ;INC E
    DJNZ R4,AA
    MOV R0,#50H
    LCALL I2C_WRITE
    INC R3
    MOV A,R3
    MOV B,#8
    MUL AB
    MOV R6,A
    LCALL DEL_10MS
    lcall del_10ms
    JNZ TT
    SETB WP   ;;;;;;;;;
    lcall del_10ms
    lcall del_10ms
    mov r6,#00h
    MOV R4,#0
    MOV OO,#0
TT1:mov r0,#50h
    lcall i2c_read
    mov r1,#50h
    mov r5,#8
    LCALL DOG ;喂狗50
ff: mov a,OO
    ;mov a,@r0
    XRL A,@R1
    JNZ text11
   ;INC OO
    inc r1
    djnz r5,ff
    inc r4
    mov a,r4
    MOV B,#8
    MUL AB
    MOV R3,A
    MOV R6,A
    JNZ TT1
    clr wp
    mov pin_row,#0
    mov addr,#0f0h
      mov r6,addr
      mov r0,#60h
      mov wr_digit,#8
      lcall i2c_write
       lcall del_10ms
       lcall del_10ms
    setb wp
    lcall display_right
    jmp test
text11:lcall display_error
test13:jmp test
test9:cjne a,#13h,test13
      clr test_menu
      jmp set_up13        ;;;;;;;;;;;;;;;
ADD_PIN0:clr green_blink
         clr red_blink
         clr orange_blink
         setb slow_orange
         setb slow_orange2
         clr red
         clr test_menu
         setb menu
         setb come_back
         setb green
         mov r0,#50h
         mov pin_digit,#0
         clr ad_pin
add_pin1:lcall key_scan
         cjne a,#13h,add_pin2
         clr green
         mov time,#100
         lcall del_ms
         jbc ad_pin,add_pin0
         jmp set_up13;;;;;;;;;;;;;;;;;;
add_pin2:cjne a,#11h,add_3pin
         clr ad_pin
         MOV A,PIN_LENGTH ;;;;;JIA
         cjne a,pin_digit,add_pin4
         MOV A,PIN_DIGIT
         CJNE A,#4,ADD_5PIN
         MOV @R0,#0FH
         INC R0
         MOV @R0,#0FH
ADD_5PIN:mov a,pin_row
         cjne a,#20,add_pin5
         jmp add_pin4
ADD_3PIN:JMP ADD_PIN3
add_pin5:jc add_pin6
         mov pin_row,#0
add_pin6:LCALL READD_PIN
ADD_6PIN:mov a,pin_row
         mov b,#8
         mul ab
         mov addr,a
         mov r0,#50H
         ;MOV R7,#6
ADD_PIN7:CLR RED
         CLR GREEN
         clr wp
         mov r6,addr
         mov wr_digit,#8
         lcall i2c_write
         lcall del_10ms
         lcall del_10ms
         setb wp
ADD_PIN8:INC PIN_ROW
         lcall del_10ms
add_pin10:lcall display_right
         jmp add_pin0
add_pin4:lcall display_error
         jmp add_pin0
add_pin3:mov @r0,a
         inc pin_digit
         inc r0
         setb ad_pin
         jmp add_pin1
READD_PIN:MOV PIN_ROW1,PIN_ROW
          MOV ADDR,#0
          MOV ADDRS,#0
READD_PIN0:MOV R0,#50H
           MOV A,PIN_ROW1
           JZ ADD_6PIN
READD_PIN1:mov r0,#60h
           mov r6,addr
          lcall i2c_read
          mov r1,#60h
          mov r0,#50h
          mov r7,#6
          LCALL DOG ;喂狗47
READD_PINr:mov a,@r1
          XRL A,@R0
          JNZ READD_PIN2
          INC R0
          INC r1
          DJNZ R7,READD_PINr
          JMP ADD_PIN4
READD_PIN2:INC ADDRS
           MOV A,ADDRS
           MOV B,#8
           MUL AB
           MOV ADDR,A
           DEC PIN_ROW1
           LCALL DOG ;喂狗48
           JMP READD_PIN0

sub_pin0:clr green_blink
         clr red_blink
         clr orange_blink
         clr green
         setb red
         clr test_menu
         setb menu
         setb come_back
         setb slow_orange
         setb slow_orange2
         clr dis_pin
         mov r0,#50h
         mov pin_digit,#0
sub_pin1:lcall key_scan
         cjne a,#13h,sub_pin2
          clr green
         mov time,#100
         lcall del_ms
         jbc dis_pin,sub_pin0
         jmp set_up13
sub_pin2:cjne a,#11h,sub_pin3
         clr dis_pin
         mov a,pin_lengTH
         cjne a,pin_digit,sub_pin4
         MOV A,PIN_DIGIT
         CJNE A,#4,sub_5PIN
         MOV @R0,#0FH
         INC R0
         MOV @R0,#0FH
sub_5PIN:mov a,pin_row
         jz sub_pin4
         cjne a,#20,sub_pin5
         jmp sub_pin6
sub_pin5:jc sub_pin6
         mov pin_row,#0
         jmp sub_pin4
sub_pin6:MOV PIN_ROW1,PIN_ROW
         mov addr,#0
         mov addrs,#0
sub_pin10:mov r0,#50h
         mov a,pin_row1
         jz sub_pin4
sub_pin8:mov r0,#60h
         mov r6,addr
         lcall i2c_read
         mov r0,#60h
         mov r1,#50h
         mov r7,#6
         LCALL DOG ;喂狗46
sub_pinr:mov a,@r1
         xrl a,@r0
         jnz sub_pin7
         inc r0
         inc r1
         djnz r7,sub_pinr
         jmp sub_pin9
sub_pin7:inc addrs
         MOV A,ADDRS
         MOV B,#8
         MUL AB
         MOV ADDR,A
         DEC PIN_ROW1
         JMP sub_PIN10
sub_pin4:lcall display_error
         jmp sub_pin0
sub_pin3:inc pin_digit
         mov @r0,a
         inc r0
         setb dis_pin
         jmp sub_pin1
sub_pin9:clr red
         clr green
sub_PIN11:dec pin_row1
sub_pin14:mov a,pin_row1
          jz sub_pin12
          mov a,addr
          add a,#8
          mov addr,a
          mov r0,#60h
sub_11pin:mov r6,addr
         lcall i2c_read
         mov r1,#50h
         mov r0,#60h
         LCALL DOG ;喂狗46
sub_11pinr:mov a,@r0
         mov @r1,a
         inc r0
         inc r1
         djnz r7,sub_11pinr
         mov a,addr
         subb a,#8
         mov addr,a
sub_pin13:clr wp;;;;;;;;;;;;;
         mov r6,addr
         mov r0,#50h
         mov wr_digit,#8
         lcall i2c_write
         lcall del_10ms
         lcall del_10ms
         setb wp
         dec pin_row1
         mov a,addr
         add a,#8
         mov addr,a
         jmp sub_pin14
sub_pin12:dec pin_row
          lcall display_right
          jmp sub_pin0

time_delay:setb red
           setb green
           setb slow_orange
           setb slow_orange2
           clr green_blink
           clr red_blink
           clr orange_blink
           clr test_menu
           setb menu
           setb come_back
           CLR SEC
KEY_TIME:lcall key_SCAN
         CJNE A,#13H,KEY_TIME1
         ret
KEY_TIME1:CJNE A,#11H,KEy_TIME2
          jmp key_time4
KEy_TIME2:jbc sec,KEy_TIME3
   mov b,#10
   mul ab
          mov b,a
          setb sec
          jmp KEY_TIME
KEY_TIME3:add a,b
           clr sec
          jz key_time4
          mov time3,a
          lcall display_right
          ret
key_time4:lcall display_error
          ret
PIN_46DIGIT:CLR RED
          CLR GREEN
          LCALL DOG ;喂狗40
          MOV a,pin_length
          CJNE A,#6,PIN_46DIGIT1
          MOV PIN_LENGTH,#4
          lcall display_orange
          ret
PIN_46DIGIT1:MOV PIN_LENGTH,#6
            lcall display_red
             RET

BY_PASS:CLR RED
        CLR GREEN
        LCALL DOG ;喂狗39
        mov a,bypass
        CJNE A,#5,BY_PASS1
        MOV bypass,#0FH
        lcall display_orange
        RET
BY_PASS1:MOV BYPASS,#5
         lcall display_red
         RET

permanent_lock:CLR RED
          CLR GREEN
          LCALL DOG ;喂狗38
          mov a,permanent
          CJNE A,#06h,permanent_lock1
          MOV permanent,#0fH
          clr relay
          lcall display_green
          RET
permanent_lock1:CJNE A,#0fh,permanent_lock2
          MOV permanent,#03H
          setb relay
          lcall display_red
          ret
permanent_lock2:MOV permanent,#06H
          setb relay
          lcall display_orange
          ret
remove_door:CLR RED
           CLR GREEN
           LCALL DOG ;喂狗37
           mov a,remove
           CJNE A,#7,remove_door1
           MOV remove,#0FH
           lcall display_orange
           RET
remove_door1:MOV remove,#7
             lcall display_red
             RET
display_orange: MOV TIME,#250
          CLR RED
          CLR GREEN
          LCALL DEL_MS
          LCALL DEL_MS
          setb RED
          SETB GREEN
          LCALL DEL_MS
          LCALL DEL_MS
          LCALL DEL_MS
          CLR RED
          CLR GREEN
          LCALL DEL_MS
          lcall del_ms
          RET
display_red:MOV TIME,#250
            CLR RED
            CLR GREEN
            lcall del_ms
            LCALL DEL_MS
            SETB RED
            CLR GREEN
            LCALL DEL_MS
            LCALL DEL_MS
            LCALL DEL_MS
            CLR RED
            CLR GREEN
            lcall del_ms
            RET
display_green:MOV TIME,#250
            CLR RED
            CLR GREEN
            lcall del_ms
            LCALL DEL_MS
            clr RED
            setb GREEN
            LCALL DEL_MS
            LCALL DEL_MS
            LCALL DEL_MS
            CLR RED
            CLR GREEN
            lcall del_ms
            RET
waitp:LCALL DOG ;喂狗31
      mov r0,#50h
      mov a,pin_length
      swap a
       orl a,remove
       mov @r0,a     ;1
       inc r0
       mov a,bypass
       swap a
       orl a,permanent
       mov @r0,a    ;2
       inc r0
       mov a,time3
       mov @r0,a      ;3
       inc r0
       mov @r0,pin_row   ;4
       inc r0
       mov a,pin_length
       swap a
       orl a,remove
       mov @r0,a         ;5
       inc r0
       mov a,bypass
       swap a
       orl a,permanent
       mov @r0,a         ;6
       inc r0
       mov a,time3
       mov @r0,a         ;7
       inc r0
       mov @r0,pin_row     ;8
       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
       jnb pin,wait_w1
       clr pin
       mov addr,#0
       mov addrs,#0
       mov addrw,#098h
       clr ji_ou
       clr jishu
       mov pin_row1,pin_row
       mov a,pin_row
 wait_r:LCALL DOG ;喂狗32
        jbc jishu,wait_w1
        jz wait_w
        mov r6,addr
        mov r2,#3
        mov r0,#60h
        lcall i2c_read
        mov r1,#60h
        mov r0,#50h
        LCALL DOG ;喂狗35
        jnb ji_ou,ww
        mov r0,#53h
    ww: mov a,@r1
        swap a
        inc r1
        orl a,@r1
        mov @r0,a
        inc r0
        inc r1
        djnz r2,ww
        jb ji_ou,wait_bao
        setb ji_ou
  wait_r1:LCALL DOG ;喂狗34
         inc addrs
        mov a,addrs
        mov b,#8
        mul ab
        mov addr,a
        dec pin_row1
        mov a,pin_row1
        jmp wait_r
wait_bao:LCALL DOG ;喂狗33
         clr ji_ou
         mov r0,#50h
         mov a,addrw
         add a,#8
         mov addrw,a
         mov r6,addrw
         mov wr_digit,#8
         lcall i2c_write
        lcall del_10ms
        lcall del_10ms
        lcall del_10ms
        ;dec pin_row1
        ;mov a,pin_row1
        jmp wait_r1
wait_w:setb jishu
       jb ji_ou,wait_bao
wait_w1:setb wp
        jmp START_SET

rd_rd:mov addr,#0f8h
      mov r0,#60h
      mov r6,addr
      lcall i2c_read
      mov r0,#60h
      clr a
      xchd a,@r0
      anl a,#0fh
      mov remove,a
      mov a,@R0
      swap a
      anl a,#0fh
      mov pin_length,a
      inc r0
      clr a
      xchd a,@r0
      anl a,#0fh
      mov permanent,a
      mov a,@R0
      swap a
      anl a,#0fh
      mov bypass,a
      inc r0
      mov time3,@r0
      inc r0
      mov pin_row,@r0 ;;;;;;;
      inc r0
      clr a
      xchd a,@r0
      anl a,#0fh
      mov common,a
      xrl a,remove
      LCALL DOG ;喂狗24
      jz t_t1
      mov remove,common
 t_t1:mov a,@R0
      swap a
      anl a,#0fh
      mov common,a
      xrl a,pin_length
       LCALL DOG ;喂狗25
      jz s_pin
      mov pin_length,common
s_pin:inc r0
      clr a
      xchd a,@r0
      anl a,#0fh
      mov common,a
      xrl a,permanent
      LCALL DOG ;喂狗26
      jz s_per
      mov permanent,common
s_per:mov a,@R0
      swap a
     anl a,#0fh
     mov common,a
     xrl a,bypass
     LCALL DOG ;喂狗27
     jz s_by
     mov bypass,common
s_by:inc r0
     mov a,@R0
     mov common,a
     xrl a,time3
     jz s_pr
      mov time3,common
s_rem:inc r0
     mov a,@R0

⌨️ 快捷键说明

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