找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3050|回复: 1
打印 上一主题 下一主题
收起左侧

电梯控制系统汇编语言程序

[复制链接]
跳转到指定楼层
楼主
ID:317930 发表于 2018-4-27 17:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
电梯控制系统汇编语言程序
单片机源程序如下:
  1.          ORG     0000H
  2.          AJMP    START
  3.          ORG     000BH
  4.          AJMP    TIME
  5.          ORG     001BH
  6.          AJMP    TIME1
  7. ;*********START启动程序***********
  8. START: MOV    TMOD,#11H
  9.           MOV    IE,#8AH
  10.           MOV    TH0,#3CH       ;定时100ms
  11.           MOV    TL0,#0B0H
  12.           MOV    TH1,#0ECH      ;定时10ms
  13.           MOV    TL1,#78H
  14.           SETB   TR0
  15.           MOV    SP,#6FH
  16. ;*********STOP停止程序***********
  17. STOP:    CLR     P0.6
  18.           CLR     P0.7
  19.           MOV    R3,#0
  20.           MOV    DPTR,#06H       ;数码管显示“1”
  21.           JB      P1.7,$         ;等待开始工作指令
  22.           CLR     P2.4
  23.           CLR     P2.5            ;电动机制动
  24.           SETB    P0.6
  25.           SETB    P2.7            ;蜂鸣器报警
  26.           SETB   TR1              ;启动T1
  27.                                    ;10ms一次读取按键
  28. ;*********一楼上升按键选择程序***********
  29. UP1:     MOV    A,20H         ;目前在1楼
  30.            ORL    A,21H          ;取得>1楼请求情况
  31.            ORL    A,22H
  32.            ANL    A,#0EH
  33.            JZ      UP1             ;无请求,则等待
  34.            CLR    P0.7             ;上升指示灯亮
  35.            SETB   P2.5              
  36.            SETB   P2.7             ;电动机正转上升
  37. ;*********二楼上升按键选择程序***********
  38. UP2:     MOV   DPTR,#5BH       ;到达2楼,数码管显示“2”
  39.            JB      20H.1,UP21    ;是2楼电梯间的上升请求,转UP21
  40.            JB      22H.1,UP21    ;是电梯内目标2楼请求,转UP21
  41.            SJMP   UP22
  42. UP21:    CLR     20H.1       ;清二楼电梯间上升请求标志位
  43.            CLR     22H.1       ;清电梯内目标2楼请求标志位
  44.            SETB    P0.7        ;上升指示灯灭
  45. SETB    P2.4
  46.            SETB    P2.6           ;电机正转电梯门开
  47.            MOV     R2,#0     ;5s定时开始
  48.            CJNE    R2,#50,$   ;等待5s延时
  49.            CLR     P2.6             ;门关
  50. SETB   P2.5              
  51.            SETB   P2.7             ;电动机正转上升
  52. UP22:    MOV    A,20H
  53.            ORL     A,21H
  54.            ORL     A,22H
  55.            ANL     A,#0CH        ;取得>2楼请求情况
  56.            JNZ      UP23
  57.            AJMP     DOWN22        ;>2楼无请求,转2楼下降
  58. UP23:     CLR     P0.7             ;上升指示灯亮
  59. SETB   P2.5
  60.            SETB   P2.7             ;电动机正转上升
  61.          
  62. ;*********三楼上升按键选择程序***********
  63. UP3:      MOV   DPTR,#4FH         ;到达3楼,数码管显示“3”
  64.             JB     20H.2,UP31        ;是3楼电梯间的上升请求,转UP31
  65.             JB     22H.2,UP31       ;是电梯内目标3楼请求,转UP31
  66.            SJMP   UP32
  67. UP31:     CLR    20H.1            ;清3楼电梯间上升请求标志位
  68.            CLR     22H.1            ;清电梯内目标3楼请求标志位
  69.            SETB    P0.7             ;上升指示灯灭
  70. SETB    P2.4            
  71. SETB    P2.6            ;门开
  72. MOV    R2,#0           ;5s定时开始
  73. CJNE    R2,#50,$       ;等待5s延时        
  74. CLR     P2.6             ;门关
  75. SETB   P2.5
  76.            SETB   P2.7             ;电动机正转上升
  77.          
  78. UP32:     MOV    A,20H  
  79.            ORL     A,21H
  80.            ORL     A,22H
  81.            ANL     A,#08H           ;取得>3楼请求情况
  82.            JNZ      UP33
  83.            AJMP    DOWN32           ;>3楼无请求,转3楼下降
  84. UP33:     CLR     P0.7                ;上升指示灯亮
  85. SETB   P2.5
  86.            SETB   P2.7             ;电动机正转上升         
  87. UP34:    MOV     DPTR,#66H            ;到达4楼,数码管显示“4”
  88. ;*********四楼下降按键选择程序***********
  89. UP41:    CLR     20H.3                 ;清4楼电梯间下降请求标志位
  90.           CLR      22H.3                 ;清电梯内目标4楼请求标志位
  91.           SETB     P0.7                  ;上升指示灯灭
  92. SETB    P2.4            
  93. SETB    P2.6            ;门开
  94. MOV    R2,#0           ;5s定时开始
  95. CJNE    R2,#50,$       ;等待5s延时        
  96. CLR     P2.6             ;门关
  97. SETB   P2.5
  98.            SETB   P2.7             ;电动机正转上升
  99. UD4:    MOV     A,50H
  100.           ORL     A,21H
  101.           ORL     A,22H
  102.           ANL     A,#07H           ;取得<4楼的请求情况
  103.           JNZ      DOWN4
  104.           AJMP    UD4
  105. DOWN4: CLR     P0.6              ;下降指示灯亮
  106.            SETB   P2.5              
  107.            CLR    P2.7              ;下降
  108.                         
  109. ;*********三楼下降按键选择程序***********
  110. DOWN3: MOV     DPTR,#4FH            ;到达3楼,数码管显示“3”
  111.           JB    21H.2,DOWN31    ;是3楼电梯间的下降请求,转DOWN31
  112.           JB    22H.2,DOWN31     ;是电梯内目标3楼请求,转DOWN31
  113.           SJMP    DOWN32
  114. DOWN31:CLR    21H.2                ;清3楼电梯间下降请求标志位
  115.           CLR    22H.2                ;清电梯内目标3楼请求标志位
  116.           SETB    P0.6                ;下降指示灯灭
  117.           SETB    P2.4
  118.           SETB    P2.6              ;门开
  119. MOV    R2,#0           ;5s定时开始
  120. CJNE    R2,#50,$       ;等待5s延时  
  121.           CLR    P2.6              ;门关
  122.            SETB   P2.5              
  123.            CLR    P2.7              ;下降
  124. DOWN32:MOV  A,20H
  125.           ORL     A,21H
  126.           ORL   A,22H
  127.           ANL     A,#03H         ;取得<3楼的请求情况
  128.           JNZ      DOWN33
  129.          AJMP    UP32             ;<3无楼请求,转3楼上升
  130. DOWN33:CLR    P0.6               ;下降指示灯亮
  131.           SETB   P2.5              
  132.            CLR    P2.7              ;下降
  133. ;*********二楼下降按键选择程序***********
  134. DOWN2: MOV   DPTR,#5BH          ;到达2楼,数码管显示“2”
  135.           JB      21H.1,DOWN21    ;是2电梯间的下降请求,转DOWN21
  136.           JB      22H.1,DOWN2        ;是电梯内目标3楼请求,转DOWN21
  137.          SJMP    DOWN22
  138. DOWN21:CLR   21H.1            ;清2楼电梯间下降请求标志位
  139.           CLR    22H.1             ;清电梯内目标2楼请求标志位
  140.           SETB   P0.6              ;下降指示灯灭
  141.           SETB    P2.4
  142.           SETB    P2.6              ;门开
  143. MOV    R2,#0           ;5s定时开始
  144. CJNE    R2,#50,$       ;等待5s延时  
  145.           CLR    P2.6              ;门关
  146.            SETB   P2.5              
  147.            CLR    P2.7              ;下降
  148. DOWN22:MOV  A,20H
  149.       ORL     A,21H
  150.           ORL     A,22H
  151.           ANL    A,#02H         ;取得<2的请求情况
  152.       JNZ     DOWN23
  153.           AJMP    UP22           ;<2楼请求,转2楼上升
  154. DOWN23:CLR   P0.6      ;下降指示灯亮
  155.           SETB   P2.5              
  156.           CLR    P2.7              ;下降
  157. DOWN1: MOV    DPTR,#06H      ;到达1,数码管显示“1”
  158. DOWN11:CLR     21H.0          ;清电梯内目标1请求标志位
  159.           SETB     P0.6          ;下降指示灯灭
  160.      SETB    P2.4
  161.          SETB    P2.6              ;门开
  162. MOV    R2,#0           ;5s定时开始
  163. CJNE    R2,#50,$       ;等待5s延时  
  164.           CLR    P2.6              ;门关
  165.           SETB   P2.5              
  166.           CLR    P2.7              ;下降
  167. CJNE     R3,#0,DOWN12 ;Stop键是否按下过
  168.           AJMP    UP1
  169. DOWN12:CLR   P0.6             ;若Stop键按下过,转S1停止工作
  170.           CLR      P0.7
  171.           AJMP     STOP
  172. ;定时器T0中断服务程序:5s计时
  173. TIME:  MOV     TH0,#3CH
  174.           MOV     TL0,#0B0H
  175.           INC      R2              ;R2计数器
  176.           RETI
  177. ;********* T1中断服务程序:按键状态检查***********
  178. TIME1:    MOV     TH1,#0ECH          ;每10s检查一次按键
  179.             MOV     TL1,#78H
  180.             MOV     6EH,A
  181.             MOV     30H,P1              ;读入所有按键状态
  182.             MOV     31H,P3
  183.             JB        P1.6,TIME11         ;若Stop键未按下,则正常运行
  184.             MOV     R3,#0FFH          ;Stop键按下,标志R3置非0数
  185.             MOV     20H,#0             ;清除全部电梯间上升请求
  186.             MOV     21H,#0             ;清除全部电梯间下降请求
  187.             MOV   22H,#0             ;清除全部电梯内目标楼层请求
  188.             MOV     30H,#0FFH         ;修改读入的按键状态,使之为
  189.             MOV     31H,#0FEH         ;电梯内目标为一楼
  190.             CLR      TR1                ;并关闭T1,不再读取按键
  191. TIME11:  MOV   A,30H
  192.             CPL      A
  193.             ANL     A,#07H           ;取得电梯间上升请求
  194.             ORL     20H,A
  195.             MOV   A,20H             ;取得上升指示灯状态
  196.             CPL     A
  197.             ANL    A,#07H
  198.             MOV   32H,A
  199.             MOV   A,30H
  200.             CPL    A
  201.             ANL   A,#38H          ;取得电梯间下降请求
  202.             RR     A
  203.             RR     A
  204.             ORL    21H,A
  205.             MOV   A,21H
  206.             CPL    A
  207.             ANL   A,#0EH
  208.             RL   A
  209.             RL     A
  210.             ORL   32H,A
  211.             MOV   A,P0
  212.             ANL    A,#0C0H
  213.             ORL    A,32H
  214.             MOV   P0,A             ;刷新上升、下降请求指示灯
  215.             MOV    A,31H
  216.             ANL    A,#0FH     ;取得电梯内目标楼层请求
  217.             ORL   22H,A
  218.        MOV    A,22H
  219.             CPL     A
  220.             MOV   P2,A     ;刷新电梯内目标楼层指示灯
  221. TIME12:  MOV  A,6EH
  222.             RETI
  223. ;********* 2s延时程序***********
  224. DLY:       MOV     R5,#20
  225. DLY1:   MOV     R6,#100
  226. DLY2:   MOV     R7,#250
  227.              DJNZ     R7,$
  228.              DJNZ     R6,DLY2
  229.              DJNZ     R5,DLY1
  230.              RET
  231.              END
  232. ;**************** PWM控制电梯门开关程序 ************************
  233.             ORG      0000H
  234.            LMP      START
  235.            ORG      000EH
  236.            LMP      ZDCX
  237.            ORG      0100H
  238.     START:MOV   SP,#30H  ;系统初始化,定时值为0.1
  239.            MOV   DPTR,#TAB
  240.            MOV   TL0,#9CH
  241.                           MOV   TH0,#9CH
  242.                           MOV   TMOD,#02H  ;定时器T0工作方式2
  243.            MOV   IE,#82H
  244.            SETB  TR0
  245.            LCALL  QUZHI  ;取第一个R0的值
  246.            MOV   R0,#A
  247.            CLR   P2.4
  248.       LP: JNB   20H,LP  ;输出PWM波形
  249.            CLR   20H
  250.            DJNZ   R0,LP
  251.            CPL   P2.4
  252.            LCALL  QUZHI;
  253.            CNE  #55H,LP1 ;当所取的数是结束标志55时,
  254.                           ;程序重新开始
  255.            LMP   START
  256.       LP1:MOV   R0,A
  257.            LMP   LP
  258.     QUZHI:MOV   A,#00H   ;取值子程序
  259.            MOVC  A,@+DPTR
  260.             INC   DPTR
  261.             RET
  262.       ZDCX:SETB   20H
  263.             RETI
  264.        TAB:DB  7,6,15,12,24,6,30,6,24,12,15,6,7,55  ;55为结束标志
  265.             END
  266. ;*************PWM控制电梯上升与下降程序*************
  267.            ORG      0000H
  268.            LMP      START
  269.            ORG      000EH
  270.            LMP      ZDCX
  271.            ORG      0100H
  272.     START:MOV   SP,#30H
  273.            MOV   DPTR,#TAB
  274.            MOV   TL0,#9CH
  275.                           MOV   TH0,#9CH
  276.                           MOV   TMOD,#02H
  277.            MOV   IE,#82H
  278.            SETB  TR0
  279.            LCALL  QUZHI
  280.            MOV   R0,#A
  281.             CLR   P2.5
  282.        LP: JNB   20H,LP
  283.             CLR   20H
  284.             DJNZ   R0,LP
  285.             CPL   P2.5
  286.             LCALL  QUZHI;
  287.             CNE  #55H,LP1
  288.             LMP   START
  289.        LP1:MOV   R0,A
  290.             LMP   LP
  291.      QUZHI:MOV   A,#00H
  292.             MOVC  A,@+DPTR
  293.             INC   DPTR
  294.             RET
  295.       ZDCX:SETB   20H
  296.             RETI
  297.        TAB:DB  5,10,15,20,5,10,15,5,5,10,15,20,5,10,5,55
  298.             END

复制代码



单片机.doc

296.05 KB, 下载次数: 17, 下载积分: 黑币 -5

电梯控制系统汇编语言程序

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:642619 发表于 2020-11-15 16:47 | 只看该作者
有电路图吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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