標(biāo)題: 單片機(jī)匯編語(yǔ)言密碼鎖Proteus仿真程序 [打印本頁(yè)]

作者: aaasym    時(shí)間: 2019-6-2 06:29
標(biāo)題: 單片機(jī)匯編語(yǔ)言密碼鎖Proteus仿真程序


單片機(jī)源程序如下:
  1. ;R3——輸入錯(cuò)誤次數(shù)
  2. ;R4——密碼個(gè)數(shù)
  3. ;R7——輸入密碼暫存
  4. ;R2——鍵值暫存
  5. ;R6——延時(shí)參數(shù)
  6.                 ORG                00H
  7.                 SJMP        START
  8.                 ORG                0BH
  9. START:       
  10.                                         ;設(shè)置初始密碼
  11. PASSWORD:
  12.                 MOV                R4,#08H                                ;密碼個(gè)數(shù)8個(gè)
  13.                 MOV                R0,#40H                                ;密碼暫存區(qū)
  14.                 MOV                A,#00H                                ;初始密碼0,1,2,3,4,5,6,7
  15. PASSNEXT:
  16.                 MOV                @R0,A
  17.                 INC                R0
  18.                 INC                A
  19.                 DJNZ        R4,PASSNEXT
  20. MLOOP:
  21.                 CLR                P3.0                                ;鎖合
  22.                 SETB        P3.1                                ;鎖開(kāi)
  23.                 SETB        P3.2                                ;鍵有效
  24.                 SETB        P3.3                                ;錯(cuò)誤
  25.                 SETB        P3.4                                ;報(bào)警
  26.                 MOV                R3,#03H                                ;錯(cuò)誤次數(shù)3次
  27.                                                    ;輸入密碼
  28. GETPW:        MOV                R4,#08H                                ;密碼個(gè)數(shù)
  29.                 MOV                R0,#30H                                ;輸入密碼暫存區(qū)
  30. AGAIN:        ACALL        KEY                                        ;輸入密碼
  31.                 CJNE        A,#0AH,CONTIUE                  ;按確認(rèn)鍵無(wú)效
  32.                 SJMP        AGAIN
  33. CONTIUE:
  34.                 MOV                @R0,A
  35.                 ACALL        DISPLED                                ;按鍵有效顯示
  36.                 INC        R0
  37.                 DJNZ        R4,AGAIN
  38. AGAIN1:        ACALL        KEY                                        ;按確認(rèn)鍵
  39.                 CJNE        A,#0AH,AGAIN1
  40.                 ACALL        DISPLED                                 ;按確認(rèn)鍵有效顯示
  41.                 ACALL        COMP                                ;比較密碼
  42.                 SETB        P3.0                                ;息鎖合
  43.                 CLR                P3.1                                ;開(kāi)鎖
  44. WAIT:        MOV                C,P3.5                                ;是否重新上鎖
  45.                 JNC                MLOOP                                ;主循環(huán)
  46.                 ACALL        TestKey                                ;是否有鍵按下,是否修改密碼
  47.                 JZ                WAIT                                ;累加器的內(nèi)容為0,則轉(zhuǎn)移;否則執(zhí)行下一條指令
  48.                 ACALL        CHPSW                                ;修改密碼子程序
  49.                 SJMP        WAIT
  50. COMP:        MOV                R4,#08H
  51.                 MOV                R0,#30H
  52. AGAI:        MOV                50H,@R0                                ;取輸入密碼到50H
  53.                 MOV                A,R0
  54.                 ADD                A,#010H                                ;40H
  55.                 MOV                R0,A
  56.                 MOV                A,@R0                                ;取密碼
  57.                 MOV                B,A
  58.                 MOV                A,R0
  59.                 SUBB        A,#010H                                ;30H
  60.                 MOV                R0,A
  61.                 MOV                A,B
  62.                 CJNE        A,50H,ONCEMORE                   ;比較
  63.                 INC                R0
  64.                 DJNZ        R4,AGAI
  65.                 RET                                                        ;正確返回
  66. ONCEMORE:
  67.                 CLR                P3.3                                ;輸入錯(cuò)誤
  68.                 MOV                R6,#0FFH
  69.                 ACALL        DELAY
  70.                 MOV                R6,#0FFH
  71.                 ACALL        DELAY
  72.                 SETB        P3.3
  73.                 DJNZ        R3,GETPW                        ;3次錯(cuò)誤輸入
  74.                 CLR                P3.4                                ;聲報(bào)警
  75.                 CLR                P3.3                                ;光報(bào)警
  76. W:                SJMP        W
  77.                                                  ;修改密碼子程序
  78. CHPSW:        MOV                R4,#07H
  79.                 MOV                R0,#48H
  80.                 ACALL        KEY
  81.                 CJNE        A,#0AH,CONTIUE2                  ;按確認(rèn)鍵無(wú)效
  82.                 LJMP        WAIT                                ;返回
  83. CONTIUE2:
  84.                 MOV                @R0,A
  85.                 INC                R0
  86.                 ACALL        DISPLED                                ;按鍵有效顯示
  87. ANOTHER:
  88.                 ACALL        KEY
  89.                 CJNE        A,#0AH,CONTIUE3                 ;按確認(rèn)鍵無(wú)效
  90.                 SJMP        ANOTHER
  91. CONTIUE3:
  92.                 MOV                @R0,A
  93.                 INC                R0
  94.                 ACALL        DISPLED                                ;按鍵有效顯示
  95.                 DJNZ        R4,ANOTHER
  96. AGAIN2:        ACALL        KEY                                        ;按確認(rèn)鍵
  97.                 CJNE        A,#0AH,AGAIN2
  98.                 ACALL        DISPLED                                ;按確認(rèn)鍵有效顯示
  99.                 MOV                R4,#08H
  100.                 MOV                R0,#40H
  101.                 MOV                R1,#48H
  102. CHANGE:                                                                ;確認(rèn)后修改密碼
  103.                 MOV                A,@R1
  104.                 MOV                @R0,A
  105.                 INC                R0
  106.                 INC                R1
  107.                 DJNZ        R4,CHANGE
  108.                 RET
  109.                                                        ;按鍵有效顯示
  110. DISPLED:
  111.                 CLR                P3.2                                ;按鍵有效顯示
  112.                 MOV                R6,#80H
  113.                 ACALL        DELAY
  114.                 SETB        P3.2
  115.                 RET
  116. TestKey:MOV                P1,#0FH
  117.                 MOV                A,P1                                ;讀入鍵狀態(tài)
  118.                 CPL                A                                        ;累加器取
  119.                 ANL                A,#0F0H
  120.                 RET
  121.                                                   ;取鍵值子程序,陣列式鍵盤(pán)
  122. KEY:        MOV                P1,#0F0H
  123.                 MOV                A,P1
  124.                 CJNE        A,#0F0H,K11
  125. K10:        AJMP        KEY
  126. K11:        MOV                R6,#02H
  127.                 ACALL        DELAY
  128.                 MOV                P1,#0F0H
  129.                 MOV                A,P1
  130.                 CJNE        A,0F0H,K12
  131.                 SJMP        K10
  132. K12:        MOV                B,A
  133.                 MOV                P1,#0FH
  134.                 MOV                A,P1
  135.                 CJNE        A,#0FH,K122
  136. K121:        AJMP        KEY
  137. K122:        MOV                R6,#02H
  138.                 ACALL        DELAY
  139.                 MOV                P1,#0FH
  140.                 MOV                A,P1
  141.                 CJNE        A,0FH,K13
  142.                 AJMP        K10
  143. K13:       
  144.                 ANL                A,B
  145.                 MOV                B,A
  146.                 MOV                R1,#11
  147.                 MOV                R2,#0
  148.                 MOV                DPTR,#K1TAB
  149. K14:        MOV                A,R2
  150.                 MOVC        A,@A+DPTR
  151.                 CJNE        A,B,K16
  152.                 MOV                P1,#0FH
  153. K15:        MOV                A,P1
  154.                 CJNE        A,#0FH,K15
  155.                 MOV                R6,#02H
  156.                 ACALL        DELAY
  157.                 MOV                A,R2
  158.                 RET
  159. K16:        INC                R2
  160.                 DJNZ        R1,K14
  161.                 AJMP        K10
  162.                                                             ;鍵碼表
  163. K1TAB:        DB                81H,41H,21H,11H
  164.                 DB                82H,42H,22H,12H
  165.                 DB                84H,44H,24H
  166.                                                 ;延時(shí)子程序
  167. DELAY:        MOV                R6,#80H
  168. AA1:        MOV                R5,#0F8H
  169. AA:                NOP
  170.                 NOP
  171.                 DJNZ        R5,AA
  172.                 DJNZ        R6,AA1
  173.                 RET
  174.                 END
復(fù)制代碼

所有資料51hei提供下載:
222222.rar (41.37 KB, 下載次數(shù): 54)


作者: 15165429873    時(shí)間: 2019-6-17 14:18
你好,你照著你這個(gè)自己做了一個(gè),為什么51單片機(jī)輸出全是高電平呀




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1