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

📄 超市存物箱模拟装置程序下载.txt

📁 这是一个超市存物箱模拟装置程序
💻 TXT
字号:
本超市存物箱模拟装置汇编语言程序    
    ORG 0000H  
 MAIN:MOV P0,#0FFH
     MOV P1,#0FFH
     MOV P2,#0FFH
     MOV P3,#0FFH
     MOV 41H,#88H
     MOV 42H,#88H
     MOV 40H,P2
     MOV 45H,#00H
;=======主程序=======
 START:CLR P0.5
      JB P0.0,N1 
      LCALL D1
      JB P0.0,N1
      LCALL RING 
      SETB P0.0 
      SETB P0.5
      AJMP ADMIN 
   N1:SETB P0.5
      CLR P0.7
      JB P0.3,N2
      LCALL D1
      JB P0.3,N2
      LCALL RING
      SETB P0.3
      SETB P0.7
      LJMP SAVE
   N2:MOV 60H,A
      MOV A,40H 
      CJNE A,#0FFH,G1 
      MOV A,60H
      SJMP N3
    G1:MOV A,60H
      JB P0.1,N3
      LCALL D1
      JB P0.1,N3
      LCALL RING
      SETB P0.1
      SETB P0.7
      LJMP TAKE
   N3:SETB P0.7
      INC 10H 
      MOV A,10H
      JNB ACC.5,G2 
      INC 11H  
   G2:SJMP START
;======管理员程序=====
 ADMIN:MOV R0,#00H
      MOV P1,#40H 
      CLR P3.4
;======键盘查询======
 KEY: CLR P0.4 
      JB P0.3,N4 
      LCALL D1
      JB P0.3,N4
      LCALL RING
      SETB P0.3
      SETB P0.4
      AJMP K1  
   N4:JB P0.2,N5
      LCALL D1
      JB P0.2,N5
      LCALL RING
      SETB P0.2
      SETB P0.4
      AJMP K2
   N5:JB P0.1,N6
      LCALL D1
      JB P0.1,N6
      LCALL RING
      SETB P0.1
      SETB P0.4
      AJMP K3
   N6:SETB P0.4
      CLR P0.5
      JB P0.3,N7
      LCALL D1
      JB P0.3,N7
      LCALL RING
      SETB P0.3
      SETB P0.5
      AJMP K4
   N7:JB P0.2,N8
      LCALL D1
      JB P0.2,N8
      LCALL RING
      SETB P0.2
      SETB P0.5
      AJMP K5
   N8:JB P0.1,N9
      LCALL D1
      JB P0.1,N9
      LCALL RING
      SETB P0.1
      SETB P0.5
      AJMP K6
   N9:JB P0.0,N10
      LCALL D1
      JB P0.0,N10
      LCALL RING
      SETB P0.0
      SETB P0.5
      AJMP START
   N10:SETB P0.5
      CLR P0.6
      JB P0.3,N11
      LCALL D1
      JB P0.3,N11
      LCALL RING
      SETB P0.3
      SETB P0.6
      AJMP K7
  N11:JB P0.2,N12
      LCALL D1
      JB P0.2,N12
      LCALL RING
      SETB P0.2
      SETB P0.6
      AJMP K8
  N12:CJNE R2,#03H,G3
      JB P0.1,N13
      LCALL D1
      JB P0.1,N13
      LCALL RING
      SETB P0.1
      SETB P0.6
      AJMP K9
  N13:SETB P0.6
      CLR P0.7
      JB P0.2,G3
      LCALL D1
      JB P0.2,G3
      LCALL RING
      SETB P0.2
      SETB P0.7
      AJMP K0
   G3:SETB P0.7
      CLR P0.5
      JB P0.0,N14
      LCALL D1
      JB P0.0,N14
      LCALL RING
      SETB P0.0
      SETB P0.5
      AJMP START
  N14:SETB P0.5
      AJMP KEY
   K1:MOV 50H,#10H 
      MOV 51H,#01H
      CJNE R1,#05H,N15 
      AJMP JUD2
  N15:CJNE R2,#08H,N16
      SETB P2.0
      LJMP CLOSE1
  N16:AJMP JUD1
   K2:MOV 50H,#20H
      MOV 51H,#02H
      CJNE R1,#05H,N17
      AJMP JUD2
  N17:CJNE R2,#08H,N18
      SETB P2.1
      LJMP CLOSE1
  N18:AJMP JUD1
   K3:MOV 50H,#30H
      MOV 51H,#03H
      CJNE R1,#05H,N19
      AJMP JUD2
  N19:CJNE R2,#08H,N20
      SETB P2.2
      LJMP CLOSE1
  N20:AJMP JUD1
   K4:MOV 50H,#40H
      MOV 51H,#04H
      CJNE R1,#05H,N21
      AJMP JUD2
  N21:CJNE R2,#08H,N22
      SETB P2.3
      LJMP CLOSE1
  N22:AJMP JUD1
   K5:MOV 50H,#50H
      MOV 51H,#05H
      CJNE R1,#05H,N23
      AJMP JUD2
  N23:CJNE R2,#08H,N24
      SETB P2.4
      LJMP CLOSE1
  N24:AJMP JUD1
   K6:MOV 50H,#60H
      MOV 51H,#06H
      CJNE R1,#05H,N25
      AJMP JUD2
  N25:CJNE R2,#08H,N26
      SETB P2.5
      LJMP CLOSE1
  N26:AJMP JUD1
   K7:MOV 50H,#70H
      MOV 51H,#07H
      CJNE R1,#05H,N27
      AJMP JUD2
  N27:CJNE R2,#08H,N28
      SETB P2.6
      LJMP CLOSE1
  N28:AJMP JUD1
   K8:MOV 50H,#80H
      MOV 51H,#08H
      CJNE R1,#05H,N29
      AJMP JUD2
  N29:CJNE R2,#08H,N30
      SETB P2.7
      LJMP CLOSE1
  N30:AJMP JUD1
   K9:MOV 50H,#90H
      MOV 51H,#09H
      CJNE R1,#05H,N31
      AJMP JUD2
  N31:AJMP JUD1
  K0:MOV 50H,#00H
     MOV 51H,#00H
     CJNE R1,#05H,N32
     AJMP JUD2
N32:AJMP JUD1
;====4位密码位数判断==
 JUD1: INC 45H 
      CLR CY
      MOV A,45H
      SUBB A,#01H
      JZ T11
      CLR CY
      MOV A,45H
      SUBB A,#02H
      JZ T12
      CLR CY
      MOV A,45H
      SUBB A,#03H
      JZ T13
      CLR CY
      MOV A,45H
      SUBB A,#04H
      JZ T14
;===四位密码存入单元===
 T11:CLR P3.3  
      CJNE R0,#00H,A11
      MOV 43H,50H
      AJMP KEY
  A11:MOV 30H,50H
      AJMP KEY
T12:CLR P3.2
      CJNE R0,#00H,A12
      MOV A,43H
      ORL A,51H
      MOV 43H,A
      AJMP KEY
  A12:MOV A,30H
      ORL A,51H
      MOV 30H,A
      AJMP KEY
  T13:CLR P3.1 
      CJNE R0,#00H,A13
      MOV 44H,50H
      AJMP KEY
  A13:MOV 31H,50H
      AJMP KEY
  T14:MOV 45H,#00H 
      CLR P3.0
      CJNE R0,#00H,A14
      MOV A,44H
      ORL A,51H
      MOV 44H,A
      AJMP TEXT1 
  A14:MOV A,31H
      ORL A,51H
      MOV 31H,A
      AJMP TEXT2
;====管理员密码校验===
 TEXT1:MOV A,41H
      CLR CY
      SUBB A,43H
      JZ RIGHT1 
      AJMP WRONG1
RIGHT1:CLR CY
      MOV A,42H
      SUBB A,44H
      JZ RIGHT2
WRONG1:SETB P3.4
      CLR P3.5
      LCALL D2
      ORL P3,#0FH
      SETB P3.5
      AJMP START
RIGHT2:LCALL D2
      MOV P1,#3FH 
      LCALL D2
      SETB P3.4
      ORL P3,#0FH
;====管理员功能选择===
 CHOOSE:CLR P0.6 
      JB P0.0,N33
      LCALL D1
      JB P0.0,N33
      LCALL RING
      SETB P0.6
      SETB P0.0
      MOV R2,#08H
      AJMP KEY
  N33:SETB P0.6
      CLR P0.7
      JB P0.0,N34
      LCALL D1
      JB P0.0,N34
      LCALL RING
      SETB P0.7
      SETB P0.0
      MOV R1,#05H
      AJMP KEY
  N34:SETB P0.7
      CLR P0.5
      JB P0.0,N35 
      LCALL D1
      JB P0.0,N35
      LCALL RING
      SETB P0.5
      SETB P0.0
      MOV R0,#01H
      AJMP START
  N35:SETB P0.5
      AJMP CHOOSE
;===8位密码位数判断===
 JUD2: INC 45H
     CLR CY
     MOV A,45H
     SUBB A,#01H
     JZ T21
     CLR CY
     MOV A,45H
     SUBB A,#02H
     JZ T22
     CLR CY
     MOV A,45H
     SUBB A,#03H
     JZ T23
     CLR CY
     MOV A,45H
     SUBB A,#04H
     JZ T24
     CLR CY
     MOV A,45H
     SUBB A,#05H
     JZ T25
     CLR CY
     MOV A,45H
     SUBB A,#06H
     JZ T26
     CLR CY
     MOV A,45H
     SUBB A,#07H
     JZ T27
     CLR CY
     MOV A,45H
     SUBB A,#08H
     JZ T28
;===新密码存入单元===
  T21:CLR P3.3
      MOV 33H,50H
      AJMP KEY
  T22:CLR P3.2
      MOV A,33H
      ORL A,51H
      MOV 33H,A
      AJMP KEY
  T23:CLR P3.1
      MOV 34H,50H
      AJMP KEY
  T24:CLR P3.0
      MOV A,34H
      ORL A,51H
      MOV 34H,A
      SETB P3.4
      MOV P1,#3FH
      LCALL D2
      ORL P3,#0FH
      CLR P3.4
      AJMP KEY
  T25:CLR P3.3
      MOV 35H,50H
      AJMP KEY
  T26:CLR P3.2
      MOV A,35H
      ORL A,51H
      MOV 35H,A
      AJMP KEY
  T27:CLR P3.1
      MOV 36H,50H
      AJMP KEY
  T28:CLR  P3.0
      MOV A,36H
      ORL A,51H
      MOV 36H,A
      SETB P3.4
      MOV 45H,#00H
      AJMP TEXT3
;=====修改新密码校验===
 TEXT3:MOV A,33H
      SUBB A,35H
      JZ RIGHT3
      AJMP WRONG2
RIGHT3:MOV A,34H
      CLR CY
      SUBB A,36H
      JZ RIGHT4
WRONG2:CLR P3.5
      LCALL D3
      SETB P3.5
      MOV R1,#00H
      AJMP CHOOSE
RIGHT4:MOV 41H,33H
      MOV 42H,34H
      SETB P3.4
      MOV P1,#3FH  
      LCALL D2
      ORL P3,#0FH
      MOV R1,#00H
      AJMP CHOOSE
;======存物程序======
 SAVE: MOV 52H,10H
     MOV A,52H
     ANL A,#0F0H
     SWAP A
     LCALL CHAGE
     MOV 54H,A

     MOV A,52H
     ANL A,#0FH
     LCALL CHAGE
     MOV 55H,A

     MOV 53H,11H
     MOV A,53H
     ANL A,#0F0H
     SWAP A
     LCALL CHAGE
     MOV 56H,A

     MOV A,53H
     ANL A,#0FH
     LCALL CHAGE
     MOV 57H,A
;===10H\11H赋修正值===
MOV A,54H 
     SWAP A
     ORL A,55H
     MOV 62H,A
     MOV A,56H
     SWAP A
     ORL A,57H
     MOV 63H,A
     MOV 10H,62H
     MOV 11H,63H
;===查询密码是否存在==
G4:MOV 12H,R0
   MOV 13H,R1
   MOV R0,#20H
   MOV R1,#08H
G5:MOV A,10H
   SUBB A,@R0
   JZ G6
   INC R0
   INC R0
   DJNZ R1,G5
   MOV R0,12H
   MOV R1,13H
   AJMP G7
G6:MOV A,10H
RL A
   INC A
   MOV 10H,A
   SJMP SAVE
;===判断密码是否都为0==
G7:MOV A,54H 
     CLR CY
     CJNEA,#00H,DISP
     MOV A,55H
     CLR CY
     CJNE A,#00H,DISP
     MOV A,56H
     CLR CY
     CJNE A,#00H,DISP
     MOV A,57H
     CLR CY
     CJNE A,#00H,DISP
     MOV 10H,#50H 
     MOV 11H,#21H
     AJMP SAVE
;=====密码显示=======
 DISPLAY:MOV R3,#150 
 DIS:MOV A,54H
     LCALL TABLE
     CLR P3.3
     MOV P1,A
     LCALL D0
     SETB P3.3
     MOV A,55H
     LCALL TABLE
     CLR P3.2
     MOV P1,A
     LCALL D0
     SETB P3.2
     MOV A,56H
     LCALL TABLE
     CLR P3.1
     MOV P1,A
     LCALL D0
     SETB P3.1
     MOV A,57H
     LCALL TABLE
     CLR P3.0
     MOV P1,A
     LCALL D0
     SETB P3.0
  DJNZ R3,DIS
   ;====寻找空箱======
     ORL P3,#0FH 
     MOV A,40H
     JB ACC.0,NO_1
     JB ACC.1,NO_2
     JB ACC.2,NO_3
     JB ACC.3,NO_4
     JB ACC.4,NO_5
     JB ACC.5,NO_6
     JB ACC.6,NO_7
     JB ACC.7,NO_8
 NO_1:MOV 20H,62H 
      MOV 21H,63H
      CLR P2.0
      AJMP CLOSE2
 NO_2:MOV 22H,62H
      MOV 23H,63H
      CLR P2.1
      AJMP CLOSE2
 NO_3:MOV 24H,62H
      MOV 25H,63H
      CLR P2.2
      AJMP CLOSE2
 NO_4:MOV 26H,62H
      MOV 27H,63H
      CLR P2.3
      AJMP CLOSE2
 NO_5:MOV 28H,62H
      MOV 29H,63H
      CLR P2.4
      AJMP CLOSE2
 NO_6:MOV 2AH,62H
      MOV 2BH,63H
      CLR P2.5
      AJMP CLOSE2
 NO_7:MOV 2CH,62H
      MOV 2DH,63H
      CLR P2.6
      AJMP CLOSE2
 NO_8:MOV 2EH,62H
      MOV 2FH,63H
      CLR P2.7
      AJMP CLOSE2
;======开关箱1======
 CLOSE1:MOV R4,#6 
       MOV 32H,40H
  CLOS1:LCALL D2
      MOV 40H,P2
      MOV P2,32H
      LCALL D2
      MOV P2,40H
    DJNZ R4,CLOS1
      LJMP CHOOSE
;=====开关箱2=======
 CLOSE2:MOV R4,#6
       MOV 32H,40H
 CLO2:LCALL D2
      MOV 40H,P2
      MOV P2,32H
      LCALL D2
      MOV P2,40H
    DJNZ R4,CLO2
      MOV A,40H
      CLR CY
      SUBB A,#00H
      JZ FULL
      LJMP START
;======箱满提醒======
 FULL:SETB P0.7
     SETB P0.1
;=====显示FULL====
     CLR P3.3
     MOV P1,#71H 
     LCALL D0
     SETB P3.3
     CLR P3.2
     MOV P1,#3EH 
     LCALL D0
     SETB P3.2
     CLR P3.1
     MOV P1,#38H 
     LCALL D0
     SETB P3.1
     CLR P3.0
     MOV P1,#38H 
     LCALL D0
     SETB P3.0
;===查询“管”,“取”==
     CLR P0.5
     JB P0.0,N36
     LCALL D1
     JB P0.0,N36
     LCALL RING
     SETB P0.0
     SETB P1.5
     ORL P3,#0FH
     LJMP ADMIN
  N36:SETB P0.5
     CLR P0.7
     JB P0.1,FULL
     LCALL D1
     JB P0.1,FULL
     LCALL RING
     SETB P0.1
     SETB P0.7
     ORL P3,#0FH
     LJMP TAKE
;=======取物程序=====
 TAKE:MOV R0,#03H
     MOV R1,#03H
     MOV R2,#03H
     MOV P1,#40H 
     CLR P3.4
     LJMP KEY
;===用户取物密码校验===
 TEXT2:MOV A,30H  
     CLR CY
     CJNE A,#00H,G18
     MOV 31H,A
     CLR CY
     CJNE A,#00H,G18
     LJMP WRONG1
  G18:CLR CY
     MOV A,30H
     CJNE A,20H,N37
     CLR CY
     MOV A ,31H
     CJNE A,21H,N37
     SETB P2.0
     AJMP OPEN
  N37:CLR CY
     MOV A,30H
     CJNE A,22H,N38
     CLR CY
     MOV A ,31H
     CJNE A,23H,N38
     SETB P2.1
     AJMP OPEN
  N38:CLR CY
     MOV A,30H
     CJNE A,24H,N39
     CLR CY
     MOV A ,31H
     CJNE A,25H,N39
     SETB P2.2
     AJMP OPEN
  N39:CLR CY
     MOV A,30H
     CJNE A,26H,N40
     CLR CY
     MOV A ,31H
     CJNE A,27H,N40
     SETB P2.3
     AJMP OPEN
  N40:CLR CY
     MOV A,30H
     CJNE A,28H,N41
     CLR CY
     MOV A ,31H
     CJNE A,29H,N41
     SETB P2.4
     AJMP OPEN
  N41:CLR CY
     MOV A,30H
     CJNE A,2AH,N42
     CLR CY
     MOV A ,31H
     CJNE A,2BH,N42
     SETB P2.5
     AJMP OPEN
  N42:CLR CY
     MOV A,30H
     CJNE A,2CH,N43
     CLR CY
     MOV A ,31H
     CJNE A,2DH,N43
     SETB P2.6
AJMP OPEN
  N43:CLR CY
     MOV A,30H
     CJNE A,2EH,N44
     CLR CY
     MOV A ,31H
     CJNE A,2FH,N44
     SETB P2.7
     AJMP OPEN
  N44:CLR P3.5
      LCALL D3
      LJMP START
;======开关箱程序=====
 OPEN:MOV R4,#6  
     MOV 32H,40H
OPE1:LCALL D2
     MOV 40H,P2
     MOV P2,32H
     LCALL D2
     MOV P2,40H
   DJNZ R4,OPE1
     LJMP START

;====延时5ms子程序====
 D0:MOV R5,#5    
  D01:MOV R6,#7DH
  D00:NOP
      NOP
      DJNZ R6,D00
      DJNZ R5,D01
   RET
;===延时10ms子程序===
 D1:MOV R5,#10 
  D11:MOV R6,#7DH
  D10:NOP
      NOP
      DJNZ R6,D10
      DJNZ R5,D11
   RET
;====延时0.5s子程序====
 D2:MOV R5,#50 
  D22:MOV R6,#20
D21:MOV R7,#7DH
  D20:NOP
      NOP
      DJNZ R7,D20
      DJNZ R6,D21
      DJNZ R5,D22
   RET
 ;====延时2s子程序====
 D3:MOV R5,#200   
  D32:MOV R6,#20
  D31:MOV R7,#7DH
  D30:NOP
      NOP
      DJNZ R7,D30
DJNZ R6,D31 
DJNZ R5,D32
RET
;====按键提示音程序==
RING:CLR P3.6 
     LCALL D2
     SETB P3.6
   RET
;=====数值修正程序====
 CHAGE:MOV 61H,A  
     CJNE A,#09H,Q1
 SJMP Q2 
Q1:JNC Q3
     SJMP Q2
Q3:CLR CY
     SUBB A,#0AH
     SJMP Q4
Q2:MOV A,61H
  Q4:NOP
    RET
;======查表程序=====
TABLE:MOV DPTR,#TAB
    MOVC A,@A+DPTR
   RET
;=======数据表======
TAB:DB 3FH,06H,5BH
DB 4FH,66H
DB 6DH,7DH,07H
DB 7FH,6FH
END

=*=*=*=>>说明<<=*=*=*=
在程序流程图及实施细则中对该制作算法的阐述已经很清楚了,所以程序中就不再加以解释说明。
======◆程序部分说明◆=====
 

⌨️ 快捷键说明

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