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

📄 keym.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
sck_bell equ p3.4
dr_sn equ p3.2
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
common equ 47h
chushu equ 48h
add_shu equ 49h
ri_inform1 equ 6dh
oo equ 70h
cs equ 71h
cd equ 72h
pl equ 73h
dc equ 74h
degree1 equ 75h
defer equ 76h
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
ok equ 22h.6
stop equ 23h.0
slow_orange equ 23h.1
slow_orange2 equ 23h.2
come_back2 equ 23h.3
yes_sensor equ 23h.4
f2 equ 23h.5
B_J EQU 23H.6
door_sensor2 equ 23h.7
menu equ 24h.0
test_menu equ 24h.1
huo equ 24h.4
SEC EQU 24H.2
set_menu equ 24h.3
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 0a6h,#01eh;启动DOG
     mov 0a6h,#0e1h
     mov sp,#76h
     jnb sck_bell,no_bell
     clr sck_bell
no_bell:clr red
        clr green
        setb relay
        CLR RELAY2
        clr menu
        mov tmod,#20h
        mov th1,#0fdh
        mov tl1,#0fdh
        ;clr p3.2
        setb es
        setb tr1
        clr ri
        clr it0
        clr it1
        clr ok
        clr ri_right
        clr door_sensor2
        mov pcon,#00h
        mov scon,#50h
        mov ip,#0
        setb ex1
        setb ea
        clr fuwei
        clr chushihua
       lcall key_13scan
      jnz main1
      lcall del_10ms
      lcall key_13scan
      jz start_sets  ;;;;;
main1:mov r0,#50h
      mov @r0,#67h
      inc r0
      mov @r0,#56h
      inc r0
      mov @r0,#05h
      inc r0
      mov @r0,#00h
      inc r0
      mov @r0,#67h
      inc r0
      mov @r0,#56h
      inc r0
      mov @r0,#05h
      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
set_up0:setb green
        setb red_blink
        clr orange_blink
        clr green_blink
        setb come_back
        clr red
        clr test_menu
        clr menu
        setb slow_orange
        setb slow_orange2
        mov r0,#50h
        clr key_13
        mov pin_digit,#0
        clr ok
set_up1:lcall key_scan
       cjne a,#13h,set_up2
       clr green
       clr red
       lcall del_10ms
start_sets:jmp start_setset
SET_UPdo1:lcall displaY_error
        jmp start_set
set_up2:cjne a,#11h,set_up3
        MOV A,PIN_DIGIT
        CJNE A,#4,SET_UPdo1;;;;;;;;;;;;;;;;;;;;;;
        mov r7,#4
        mov r5,#2
        mov r0,#50h
        mov r1,#60h
        LCALL DOG ;喂狗62
set_updo:mov a,@r0
        mov @r1,a
        inc r0
        inc r1
        djnz r7,set_updo
        LCALL DOG ;喂狗63
        mov r7,#4
        mov r0,#50h
        djnz r5,set_updo
        clr wp
        mov r0,#60h
        mov addr,#0f0h
        mov r6,addr
        lcall i2c_write
        lcall del_10ms
        lcall del_10ms
        setb wp
        lcall display_right
        jmp start_setset;;;;;;;;;;;;;;
SET_UP3:MOV @R0,A
        INC PIN_DIGIT
        INC R0
        setb key_13
        JMP SET_UP1;;;;;;;;;;;;;;;;
    ;SFDKJIORJDG
start_set:clr red
          clr green
          lcall display_right
start_setset:setb b_j
          clr set_menu
          clr test_menu
           lcall rd_rd
start_1:clr orange_blink
        clr red_blink
        clr green_blink
        clr red
        clr green
        clr come_back
        clr door_sensor2
        mov a,permanent
        cjne a,#6,open_door11
        mov degree,#0
        mov degree1,#0
start0:LCALL DOG ;喂狗58
       mov pin_digit,#0
       clr f2
start01:mov r0,#58h
  jmp start00
open_door11:jmp open_door1;open
start00:setb red
        clr green
        setb orange_blink
        clr red_blink
        clr green_blink
        setb press
        clr come_back
        setb huo
        setb ok
        setb slow_orange
        setb slow_orange2
        clr door_sensor2
        lcall key_scan
       cjne a,#11h,start2_1
       ;setb set_menu
       setb sck_bell
       nop
       nop
       jnb sck_bell,have_bell3
       setb sck_bell
       lcall del_10ms
       lcall del_10ms
       clr sck_bell
       clr slow_orange
       clr slow_orange2
start1_1:jmp start0
have_bell3:mov cs,#3
            mov dc,#35
            mov cd,#50
            mov pl,#154
            call str_bell
            jmp start0
start2_1:cjne a,#15h,start15
        lcall buzzer
        clr bell
        jmp set_setstart
start15:cjne a,#13h,start00
        mov a,bypass
        cjne a,#5,set_1bypass
start1:setb red
       setb green
       clr orange_blink
       clr red_blink
       clr green_blink
       setb press
       setb come_back
       setb huo
       setb ok
       CLR TEST_MENU
       SETB MENU
       SETB slow_orange
       SETB slow_orange2
       lcall key_scan
       cjne a,#13h,start2_11
       lcall buzzer
       clr bell
start_str:jmp start0
set_1bypass:jmp set_bypass
start2_11:cjne a,#11h,start22
           jmp no_on
start22:JMP start2
PASS_DIGITH:lcall buzzer
            clr bell
            clr red
            clr green
            clr slow_orange
            clr slow_orange2
            mov a,pin_row
            jz no_on1
            cjne a,#7,no_ongo
no_on1:jmp no_on
no_ongo:jz no_on1
        mov pin_row1,pin_row
        mov a,pin_digit
        jz start0_on
        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 del_10ms
       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
start0_on:jmp no_on
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
        LCALL DOG ;喂狗59
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
        LCALL DOG ;喂狗60
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
         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:jmp no_on
start2:inc pin_digit
       mov @r0,a
       inc r0
       setb f2
       MOV A,PIN_DIGIT
       CJNE A,PIN_LENGTH,PASS_digit
       mov a,remove
       cjne a,#7,pass_digth1
        lcall del_10ms
       jmp PASS_DIGITh

pass_digth1:lcall display_right
       lcall wiegnd
       lcall del_10ms
       jmp START_SETset
PASS_DIGIT:jmp start1
set_bypass:clr close_bell
open_door:clr press
          clr ok
open_door00:clr relay ;jipo,mditglezurjo  jh;;;
            mov cs,#1
            mov cd,#30
            mov dc,#100
            mov pl,#87
            call str_bell
            clr b_j
          setb ex0
          SETB EX1
          clr door_sensor
          clr press
          ;clr relay
          setb green
          clr red
          clr door_sensor2
          lcall delay_time
          clr ex0
          CLR EX1
          clr door_sensor
          setb relay
          CLR RELAY2
          clr slow_orange
          clr slow_orange2
          lcall del_10ms
          jmp START_SETset
open_door1:cjne a,#0fh,close_door
          clr b_j
           setb green
           clr red
           clr come_back
           clr relay
           jmp door
close_door:setb b_j
           setb red
           clr green
           setb relay
door: clr orange_blink
      clr red_blink
      clr green_blink
      setb press
      clr come_back
      clr slow_orange
      clr slow_orange2
      lcall key_scan
      cjne a,#15h,door
      jmp set_setstart
program_end:clr green
            setb press
            clr red
            mov r2,#4
program1:mov time2,#250
         lcall delay_time1
         djnz r2,program1
         ;clr p3.2
         jmp start_setset
no_on:lcall display_error
      inc degree
       mov a,degree
       cjne a,#5,start000
       jmp program_end
start000:jmp start0
int0_sub:push acc
         setb door_sensor
         LCALL DOG ;喂狗57
         pop acc
         reti
int1_sub:push acc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
         setb door_sensor
         LCALL DOG ;喂狗57
         mov cs,#2
            mov cd,#15  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            mov dc,#3
            mov pl,#232
        call str_bell
         pop acc
         jmp int1_sub;;;;;;;;;;;;;;;;;;;;
        ; reti
set_setstart:clr set_menu
             clr press
             clr red
             clr green
             clr green_blink
             clr red_blink
             clr orange_blink
             setb slow_orange
             setb slow_orange2
             setb come_back
             clr ok
             clr door_sensor2
             clr menu
             clr test_menu
             setb b_j
set_setstart0:LCALL DOG ;喂狗56
              mov r0,#50h
              clr stop

set_setstart1:lcall key_scan
              cjne a,#11h,set_setstart2
              jmp  set_setstart8
set_setstart2:cjne a,#13h,set_setstart3
              
              jmp start_set
set_setstart3:mov @r0,a
              inc r0
              
              cjne r0,#54h,set_setstart1
              mov r0,#60h
              mov addr,#0f0h
              mov r6,addr
set_setstart4:lcall i2c_read
              mov r1,#60h
              mov r0,#50h
              mov r7,#4
              LCALL DOG ;喂狗54
set_setstart5:mov a,@r1
              xrl a,@r0
              jnz set_setstart6
              inc r0
              inc r1
              djnz r7,set_setstart5
              jmp set_setstart7
              mov r1,#64h
              mov r0,#50h
              mov r7,#4
              LCALL DOG ;喂狗55
set_setstart6:mov a,@r1
              xrl a,@r0
              jnz set_setstart08;;;;;;;;;;;;;;;;;;;
              inc r0
              inc r1
              djnz r7,set_setstart6
set_setstart7:lcall display_right
set_up13:setb green_blink
         clr red_blink
         clr orange_blink
         clr green
         clr red
         clr b_j
         setb come_back
         clr menu
         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
         sjmp set_up21
set_setstart08:jmp set_setstart8
set_up15:cjne a,#4,set_up16
         lcall PIN_46DIGIT
         sjmp set_up21
set_up16:cjne a,#5,set_up17
         lcall by_pass
         sjmp set_up21
set_up17:cjne a,#6,set_up18
         lcall permanent_lock
         sjmp set_up21
set_up18:cjne a,#7,set_up20
         lcall remove_door
         sjmp set_up21
set_up20:cjne a,#13h,set_up21
         clr red
         clr green
         clr menu
         jmp waitp   ;;;;;;;;;;;;;;;;;;;;
set_up21:jmp set_up13
set_setstart8:lcall display_error
         inc degree1
         mov a,degree1
             ;setb come_back
              cjne a,#5,set11_setstart1
              jmp program_end
set11_setstart1: jmp start_setset
test:clr red
     clr green
     clr green_blink

⌨️ 快捷键说明

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