找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1277|回复: 0
收起左侧

一个单片机电梯程序,有毛病吗?求帮助

[复制链接]
ID:773367 发表于 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       ;数码管显示"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       ;到达2楼,数码管显示"2"
           JB      20H.1,UP21    ;是2楼电梯间的上升请求,转UP21
           JB      22H.1,UP21    ;是电梯内目标2楼请求,转UP21
           SJMP   UP22
UP21:    CLR     20H.1       ;清二楼电梯间上升请求标志位
           CLR     22H.1       ;清电梯内目标2楼请求标志位
           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楼无请求,转2楼下降
UP23:     CLR     P0.7             ;上升指示灯亮
           ACALL   DLY            ;上升2s
;*********三楼上升按键选择程序***********
UP3:      MOV   P3,#3FH          ;到达3楼,数码管显示"3"
            JB     20H.2,UP31        ;是3楼电梯间的上升请求,转UP31
            JB     22H.2,UP31       ;是电梯内目标3楼请求,转UP31
           SJMP   UP32
UP31:     CLR    20H.1            ;清3楼电梯间上升请求标志位
           CLR     22H.1            ;清电梯内目标3楼请求标志位
           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楼无请求,转3楼下降
UP33:     CLR     P0.7                ;上升指示灯亮
           ACALL    DLY                ;上升2s
UP34:    MOV     P3,#4FH            ;到达4楼,数码管显示"4"
;*********四楼下降按键选择程序***********
UP41:    CLR     20.H3                 ;清4楼电梯间下降请求标志位
          CLR      22H.3                 ;清电梯内目标4楼请求标志位
          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            ;到达3楼,数码管显示"3"
          JB      21H.2,DOWN31     ;是3楼电梯间的下降请求,转DOWN31
          JB      22H.2,DOWN31     ;是电梯内目标3楼请求,转DOWN31
         S JMP    DOWN32
DOWN31:CLR    21H.2                ;清3楼电梯间下降请求标志位
          CLR    22H.2                ;清电梯内目标3楼请求标志位
          SETB    P0.6                ;下降指示灯灭
          MOV     R2,#0              ;5s定时开始
          CJNE     R2,#50,$            ;等待5s延时
DOWN32:MOV  A,20H
          ORL     A,21H
          ORL   A,22H
          ANL     A,#03H         ;取得<3楼的请求情况
          JNZ      DOWN33
         AJMP    UP32             ;<3无楼请求,转3楼上升
DOWN33:CLR    P0.6               ;下降指示灯亮
     ACALL     DLY
;*********二楼下降按键选择程序***********
DOWN2: MOV   P3,#2FH          ;到达2楼,数码管显示"2"
          JB      21H.1,DOWN21    ;是2电梯间的下降请求,转DOWN21
          JB      22H.1,DOWN2        ;是电梯内目标3楼请求,转DOWN21
         SJMP    DOWN22
DOWN21:CLR   21H.1            ;清2楼电梯间下降请求标志位
          CLR    22H.1             ;清电梯内目标2楼请求标志位
          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楼请求,转2楼上升
DOWN23:CLR   P0.6      ;下降指示灯亮
     ACALL  DLY
DOWN1: MOV    P3,#1FH      ;到达1,数码管显示"1"
DOWN11:CLR     21H.0          ;清电梯内目标1请求标志位
          SETB     P0.6          ;下降指示灯灭
      MOV     R2,#0         ;0 s定时开始
     CJNE   R2,#50,$   ;5s延时
CJNE     R3,#0,DOWN12 ;Stop键是否按下过
          AJMP    UP1
DOWN12:CLR   P0.6             ;若Stop键按下过,转S1停止工作
          CLR      P0.7
          AJMP     S1
;定时器T0中断服务程序:5s计时
TIME:  MOV     TH0,#3CH
          MOV     TL0,#0B0H
          INC      R2              ;R2计数器
          RETI
;*********定时器T1中断服务程序:按键状态检查*********
TIME1:    MOV     TH1,#0ECH          ;每10s检查一次按键
            MOV     TL1,#78H
            MOV     6EH,A
            MOV     30H,P1              ;读入所有按键状态
            MOV     31H,P3
            JB        P1.6,TIME11         ;若Stop键未按下,则正常运行
            MOV     R3,#0FFH          ;Stop键按下,标志R3置非0数
            MOV     20H,#0             ;清除全部电梯间上升请求
            MOV     21H,#0             ;清除全部电梯间下降请求
            MOV   22H,#0             ;清除全部电梯内目标楼层请求
            MOV     30H,#0FFH         ;修改读入的按键状态,使之为
            MOV     31H,#0FEH         ;电梯内目标为一楼
            CLR      TR1                ;并关闭T1,不再读取按键
TIME11:  MOV   A,30H
            CPL      A
            ANL     A,#07H           ;取得电梯间上升请求
            ORL     20H,A
            MOV   A,20H             ;取得上升指示灯状态
            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     ;取得电梯内目标楼层请求
            ORL   22H,A
       MOV    A,22H
            CPL     A
            MOV   P2,A     ;刷新电梯内目标楼层指示灯
TIME12:  MOV  A,6EH
            RETI

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表