51单片机模拟电梯汇编程序

来源:互联网 发布:linux cp 排除文件夹 编辑:程序博客网 时间:2024/04/30 14:08

  很早以前编的模拟电梯的51单片机程序

   ORG 0000H

 STOP:ORL  P1,#00H

MOV 30H,#01H

     LCALL DISPLAY

LOOP1:LCALL LOOP

     LCALL  KEY80;外部调用123456

     LJMP  LOOP1

 

KEY80:LCALL LOOP         ;电梯在一楼

D80: CJNE A,#0EEH,D90    ;判断按键1是否按下

     LJMP KEY1

D90: CJNE A,#0DEH,D81   

     LCALL U11

     LJMP KEY2

D81: CJNE A,#0BEH,D82

     LCALL U11

     LJMP KEY2

D82: CJNE A,#7EH,D83

     LCALL U22

     LJMP KEY3

D83: CJNE A,#0EDH,D84

     LCALL U22

     LJMP KEY3    

D84: CJNE A,#0DDH,KEY80

     LCALL U33

     LJMP KEY4

 

KEY50: LCALL LOOP        ; 电梯在二楼

D50: CJNE A,#0EEH,D91   

     LCALL DN11

     LJMP  KEY1

D91 : CJNE A,#0DEH,D92

     LCALL KEY2

D92: CJNE A,#0BEH,D51

     LCALL KEY2

D51: CJNE A,#7EH,D52

     LCALL U11

     LJMP  KEY3

D52: CJNE A,#0EDH,D53

     LCALL U11

     LJMP  KEY3

D53: CJNE A,#0DDH,KEY50

     LCALL U22

     LJMP  KEY4

 

KEY60: LCALL LOOP        ; 电梯在三楼

D60: CJNE A,#0EEH,D61   

     LCALL DN22

     LJMP  KEY1

D61: CJNE A,#0DEH,D62

     LCALL DN11

     LJMP  KEY2

D62: CJNE A,#0BEH,D93

     LCALL DN11

     LJMP  KEY2

D93: CJNE A,#7EH,D94

     LCALL KEY3

D94: CJNE A,#0EDH,D63

     LCALL KEY3

D63: CJNE A,#0DDH,KEY60

     LCALL U11

     LJMP  KEY4

 

 

KEY70:LCALL LOOP        ; 电梯在四楼

D70: CJNE A,#0EEH,D71   

     LCALL DN33

     LJMP  KEY1

D71: CJNE A,#0DEH,D72

     LCALL DN22

     LJMP  KEY2

D72: CJNE A,#0BEH,D73

     LCALL DN22

     LJMP  KEY2

D73: CJNE A,#7EH,D74

     LCALL DN11

     LJMP  KEY3

D74: CJNE A,#0EDH,D95

     LCALL DN11

     LJMP  KEY3

D95: CJNE A,#0DDH,KEY70

     LCALL KEY4

 

KEY1: LCALL LOOP        ;从一楼上

D10: CJNE A,#7DH,D11   

     LCALL U1

     LJMP KEY6

D11: CJNE A,#0EBH,D12

     LCALL U2

     LJMP KEY7

D12: CJNE A,#0DBH,KEY1

     LCALL U3

     LJMP KEY8

 

 

KEY2: LCALL LOOP

D20: CJNE A,#0BDH,D21    ;二楼

     LCALL DN1

     LJMP KEY5

D21: CJNE A,#0EBH,D22

     LCALL U1

     LJMP KEY7

D22: CJNE A,#0DBH,KEY2

     LCALL U2

     LJMP KEY8

 

KEY3: LCALL LOOP

D30: CJNE A,#0BDH,D31   ;三楼

     LCALL DN2

     LJMP KEY5

D31: CJNE A,#7DH,D32    

     LCALL DN1

     LJMP KEY6

D32: CJNE A,#0DBH,KEY3

     LCALL U1

     LJMP KEY8

 

KEY4:LCALL LOOP

D40: CJNE A,#0BDH,D41   ;四楼

     LCALL DN3

     LJMP KEY5

D41: CJNE A,#7DH,D42   

     LCALL DN2

     LJMP KEY6

D42: CJNE A,#0EBH,KEY4

     LCALL DN1

     LJMP KEY7

 

DH:LJMP KEY80

DJ:LJMP KEY50

DK:LJMP KEY60

DL:LJMP KEY70

 

KEY5: LCALL LOOP        ;一楼

D15: CJNE A,#7DH,D16   

     LCALL U1

     LJMP KEY50

D16: CJNE A,#0EBH,D17

     LCALL U2

     LJMP KEY60

D17: CJNE A,#0DBH,DH

     LCALL U3

     LJMP KEY70

 

  

KEY6:

     LCALL LOOP 

D25: CJNE A,#0BDH,D26    ;二楼

     LCALL DN1

     LJMP KEY80

D26: CJNE A,#0EBH,D27

     LCALL U1

     LJMP KEY60

D27: CJNE A,#0DBH,DJ

     LCALL U2

     LJMP KEY70

 

 

KEY7: LCALL LOOP

D35: CJNE A,#0BDH,D36   ;三楼

     LCALL DN2

     LJMP KEY80

D36: CJNE A,#7DH,D37   

     LCALL DN1

     LJMP KEY50

D37: CJNE A,#0DBH,DK

     LCALL U1

     LJMP KEY70

 

 

KEY8: LCALL LOOP

D45: CJNE A,#0BDH,D46  ;四楼

     LCALL DN3

     LJMP KEY80

D46: CJNE A,#7DH,D47  

     LCALL DN2

     LJMP KEY50

D47: CJNE A,#0EBH,DL

     LCALL DN1

     LJMP KEY60

 

 

 

 

U1:  LCALL LOOP      ;上一层楼

     CJNE A,#0BBH,U1

     LCALL U0

     INC 30H

        LCALL DISPLAY

     RET

U2:  LCALL LOOP          ;上两层楼

     CJNE A,#0BBH,U2

     LCALL U0

     INC 30H

     LCALL DISPLAY

     LCALL U0

     INC 30H

     LCALL DISPLAY

     RET

U3:  LCALL LOOP           ;上三层楼

     CJNE A,#0BBH,U3

     LCALL U0

     INC 30H

     LCALL DISPLAY

     LCALL U0

     INC 30H

     LCALL DISPLAY

     LCALL U0

     INC 30H

     LCALL DISPLAY

     RET

 

 

 

DN1: LCALL LOOP          ;下一层楼

     CJNE A,#0BBH,DN1

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     RET

DN2: LCALL LOOP         ;下两层楼

     CJNE A,#0BBH,DN2

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     RET

DN3: LCALL LOOP           ;下三层楼

     CJNE A,#0BBH,DN3

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     RET

 

 

U11: LCALL LOOP      ;上一层楼 

     LCALL U0

     INC 30H

     LCALL DISPLAY

     RET

U22: LCALL LOOP          ;上两层楼  

     LCALL U0

     INC 30H

     LCALL DISPLAY

     LCALL U0

     INC 30H

     LCALL DISPLAY

     RET

U33: LCALL LOOP           ;上三层楼   

     LCALL U0

     INC 30H

     LCALL DISPLAY

     LCALL U0

     INC 30H

     LCALL DISPLAY

     LCALL U0

     INC 30H

     LCALL DISPLAY

     RET

 

DN11: LCALL LOOP         ;下一层楼   

     LCALL DN0

DEC 30H

        LCALL DISPLAY

     RET

DN22: LCALL LOOP        ;下两层楼 

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     RET

DN33: LCALL LOOP          ;下三层楼      

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     LCALL DN0

     DEC 30H

     LCALL DISPLAY

     RET

 

LOOP:                    ;按键判断

     MOV P0,#0FH

     MOV A,P0

     CJNE A,#0FH,D1

     LJMP LOOP

D1:  MOV 40H,A

     MOV P0,#0F0H

     MOV A,P0

     MOV 41H,A

D2:  MOV P0,#0F0H

     MOV A,P0

     CJNE A,41H,D3

     LJMP D2

D3:  MOV A,41H          

     ADD A,40H

     RET

 

                           

U0:                      ;往上

    Z1:MOV  R5,#3

   Z11:MOV  R3,#108

START2:MOV R0,#05

START3:MOV  A,R0

      MOV   DPTR,#TABLE

      MOVC  A,@A+DPTR

      JZ   START2

      CPL  A

      MOV   P1,A

      CALL  DELAY

      INC   R0

      DJNZ  R3,START3

      DJNZ  R5,Z11

      RET

 

 

 

DN0:                      ;往下

    L1:MOV R5,#3

     L11:MOV  R3,#108

 START:MOV R0,#00H

START1:MOV A,R0

      MOV  DPTR,#TABLE

      MOVC   A,@A+DPTR

      JZ  START

      CPL  A

      MOV P1,A

      CALL DELAY

      INC  R0

      DJNZ  R3,START1

      DJNZ  R5,L11

      RET

 

DELAY:

      MOV  R1,#40

 D99: MOV  R2,#248

      DJNZ  R2,$

      DJNZ  R1,D99

      RET

TABLE: 

        DB 03H,09H,0CH,06H

        DB 00

        DB 03H,06H,0CH,09H

        DB 00

DISPLAY:                  ;显示程序

        MOV A,30H

        MOV P2,A

        RET

END

 

 

原创粉丝点击