找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1670|回復(fù): 0
收起左側(cè)

一個單片機(jī)電梯程序,有毛病嗎?求幫助

[復(fù)制鏈接]
ID:773367 發(fā)表于 2020-6-9 09:09 | 顯示全部樓層 |閱讀模式
;*********START啟動程序***********
START: MOV    TMOD,#11H
          MOV    IE,#8AH
          MOV    TH0,#3CH       ;定時100ms
          MOV    TL0,#0B0H
          MOV    TH1,#0ECH      ;定時10ms
          MOV    TL1,#78H
          SETB   TR0
          MOV    SP,#6FH
;*********STOP停止程序***********
STOP:   CLR     P0.6
          CLR    P0.7
          MOV    R3,#0
          MOV    P3,#1FH       ;數(shù)碼管顯示"1"
          JB      P1.7,$         ;等待開始工作指令
          SETB   P0.6
          SETB   TR1              ;啟動T1
                                   ;10ms一次讀取按鍵
;*********一樓上升按鍵選擇程序***********
UP1:     MOV    A,20H         ;目前在1樓
           ORL    A,21H          ;取得>1樓請求情況
           ORL    A,22H
           ANL    A,#0EH
           JZ      UP1             ;無請求,則等待
           CLR    P0.7             ;上升指示燈亮
           ACALL  DLY             ;上升2s
;*********二樓上升按鍵選擇程序***********
UP2:     MOV    P3,#2FH       ;到達(dá)2樓,數(shù)碼管顯示"2"
           JB      20H.1,UP21    ;是2樓電梯間的上升請求,轉(zhuǎn)UP21
           JB      22H.1,UP21    ;是電梯內(nèi)目標(biāo)2樓請求,轉(zhuǎn)UP21
           SJMP   UP22
UP21:    CLR     20H.1       ;清二樓電梯間上升請求標(biāo)志位
           CLR     22H.1       ;清電梯內(nèi)目標(biāo)2樓請求標(biāo)志位
           SETB    P0.7        ;上升指示燈滅
           MOV     R2,#0     ;5s定時開始
           CJNE    R2,#50,$   ;等待5s延時
UP22:    MOV    A,20H
           ORL     A,21H
           ORL     A,22H
           ANL     A,#0CH        ;取得>2樓請求情況
           JNZ      UP23
           AJMP     DOWN22        ;>2樓無請求,轉(zhuǎn)2樓下降
UP23:     CLR     P0.7             ;上升指示燈亮
           ACALL   DLY            ;上升2s
;*********三樓上升按鍵選擇程序***********
UP3:      MOV   P3,#3FH          ;到達(dá)3樓,數(shù)碼管顯示"3"
            JB     20H.2,UP31        ;是3樓電梯間的上升請求,轉(zhuǎn)UP31
            JB     22H.2,UP31       ;是電梯內(nèi)目標(biāo)3樓請求,轉(zhuǎn)UP31
           SJMP   UP32
UP31:     CLR    20H.1            ;清3樓電梯間上升請求標(biāo)志位
           CLR     22H.1            ;清電梯內(nèi)目標(biāo)3樓請求標(biāo)志位
           SETB    P0.7             ;上升指示燈滅
           MOV    R2,#0           ;5s定時開始
           CJNE    R2,#50,$       ;等待5s延時
UP32:     MOV    A,20H  
           ORL     A,21H
           ORL     A,22H
           ANL     A,#08H           ;取得>3樓請求情況
           JNZ      UP33
           AJMP    DOWN32           ;>3樓無請求,轉(zhuǎn)3樓下降
UP33:     CLR     P0.7                ;上升指示燈亮
           ACALL    DLY                ;上升2s
UP34:    MOV     P3,#4FH            ;到達(dá)4樓,數(shù)碼管顯示"4"
;*********四樓下降按鍵選擇程序***********
UP41:    CLR     20.H3                 ;清4樓電梯間下降請求標(biāo)志位
          CLR      22H.3                 ;清電梯內(nèi)目標(biāo)4樓請求標(biāo)志位
          SETB     P0.7                  ;上升指示燈滅
          MOV     R2,#0               ;5s定時開始
          CJNE     R2,#50,$           ;等待5s延時
UD4:    MOV     A,50H
          ORL     A,21H
          ORL     A,22H
          ANL     A,#07H           ;取得<4樓的請求情況
          JNZ      DOWN4
          AJMP    UD4
DOWN4: CLR     P0.6              ;下降指示燈亮
          ACALL   DLY              ;下降2s
;*********三樓下降按鍵選擇程序***********
DOWN3: MOV     P3,#3FH            ;到達(dá)3樓,數(shù)碼管顯示"3"
          JB      21H.2,DOWN31     ;是3樓電梯間的下降請求,轉(zhuǎn)DOWN31
          JB      22H.2,DOWN31     ;是電梯內(nèi)目標(biāo)3樓請求,轉(zhuǎn)DOWN31
         S JMP    DOWN32
DOWN31:CLR    21H.2                ;清3樓電梯間下降請求標(biāo)志位
          CLR    22H.2                ;清電梯內(nèi)目標(biāo)3樓請求標(biāo)志位
          SETB    P0.6                ;下降指示燈滅
          MOV     R2,#0              ;5s定時開始
          CJNE     R2,#50,$            ;等待5s延時
DOWN32:MOV 。粒20H
          ORL     A,21H
          ORL   A,22H
          ANL     A,#03H         ;取得<3樓的請求情況
          JNZ      DOWN33
         AJMP    UP32             ;<3無樓請求,轉(zhuǎn)3樓上升
DOWN33:CLR    P0.6               ;下降指示燈亮
     ACALL     DLY
;*********二樓下降按鍵選擇程序***********
DOWN2: MOV   P3,#2FH          ;到達(dá)2樓,數(shù)碼管顯示"2"
          JB      21H.1,DOWN21    ;是2電梯間的下降請求,轉(zhuǎn)DOWN21
          JB      22H.1,DOWN2        ;是電梯內(nèi)目標(biāo)3樓請求,轉(zhuǎn)DOWN21
         SJMP    DOWN22
DOWN21:CLR   21H.1            ;清2樓電梯間下降請求標(biāo)志位
          CLR    22H.1             ;清電梯內(nèi)目標(biāo)2樓請求標(biāo)志位
          SETB   P0.6              ;下降指示燈滅
          MOV  R2,#0           ;5s定時開始
          CJNE   R2,#50,$       ;等待5s延時
DOWN22:MOV  A,20H
      ORL     A,21H
          ORL     A,22H
          ANL    A,#02H         ;取得<2的請求情況
      JNZ     DOWN23
          AJMP    UP22           ;<2樓請求,轉(zhuǎn)2樓上升
DOWN23:CLR   P0.6      ;下降指示燈亮
     ACALL  DLY
DOWN1: MOV    P3,#1FH      ;到達(dá)1,數(shù)碼管顯示"1"
DOWN11:CLR     21H.0          ;清電梯內(nèi)目標(biāo)1請求標(biāo)志位
          SETB     P0.6         ;下降指示燈滅
      MOV     R2,#0         ;0 s定時開始
     CJNE   R2,#50,$   ;5s延時
CJNE     R3,#0,DOWN12。籗top鍵是否按下過
          AJMP    UP1
DOWN12:CLR   P0.6            ;若Stop鍵按下過,轉(zhuǎn)S1停止工作
          CLR      P0.7
          AJMP     S1
;定時器T0中斷服務(wù)程序:5s計時
TIME:  MOV     TH0,#3CH
          MOV     TL0,#0B0H
          INC      R2              ;R2計數(shù)器
          RETI
;*********定時器T1中斷服務(wù)程序:按鍵狀態(tài)檢查*********
TIME1:    MOV     TH1,#0ECH          ;每10s檢查一次按鍵
            MOV     TL1,#78H
            MOV     6EH,A
            MOV     30H,P1              ;讀入所有按鍵狀態(tài)
            MOV     31H,P3
            JB        P1.6,TIME11         ;若Stop鍵未按下,則正常運(yùn)行
            MOV     R3,#0FFH          ;Stop鍵按下,標(biāo)志R3置非0數(shù)
            MOV     20H,#0             ;清除全部電梯間上升請求
            MOV     21H,#0             ;清除全部電梯間下降請求
            MOV   22H,#0             ;清除全部電梯內(nèi)目標(biāo)樓層請求
            MOV     30H,#0FFH         ;修改讀入的按鍵狀態(tài),使之為
            MOV     31H,#0FEH         ;電梯內(nèi)目標(biāo)為一樓
            CLR      TR1                ;并關(guān)閉T1,不再讀取按鍵
TIME11:  MOV   A,30H
            CPL      A
            ANL     A,#07H           ;取得電梯間上升請求
            ORL     20H,A
            MOV   A,20H             ;取得上升指示燈狀態(tài)
            CPL     A
            ANL    A,#07H
            MOV   32H,A
            MOV   A,30H
            CPL    A
            ANL   A,#38H          ;取得電梯間下降請求
            RR     A
            RR     A
            ORL    21H,A
            MOV   A,21H
            CPL    A
            ANL   A,#0EH
            RL   A
            RL     A
            ORL   32H,A
            MOV   A,P0
            ANL    A,#0C0H
            ORL    A,32H
            MOV   P0,A             ;刷新上升、下降請求指示燈
            MOV    A,31H
            ANL    A,#0FH    ;取得電梯內(nèi)目標(biāo)樓層請求
            ORL   22H,A
       MOV    A,22H
            CPL     A
            MOV   P2,A     ;刷新電梯內(nèi)目標(biāo)樓層指示燈
TIME12:  MOV  A,6EH
            RETI

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表