51单片机简易电梯控制程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
51单片机简易电梯控制程序
ORG 00H
N1 EQU 0020H ;系统初始化
ORG 0030H
MOV R0,#8
MOV R7,#0
MOV N1,#0
START: MOV R2,#15
CALL XS ;显示数据
JNB P3.5,$ ;检测急停键是否弹起
CALL XIAODOU
JNB P3.5,$
CALL XINCEN
CALL ANJ
JMP START
XINCEN: ;扫描急停键
JB P3.5,B0
CALL XIAODOU
JB P3.5,B0
CALL XIAODOU
JB P3.5,B0
CALL XIAODOU
JB P3.5,B0
CALL XIAODOU
JB P3.5,B0
SETB P0.7 ;关闭输出
SETB P0.5
MOV N1,#0 ;清空指令代码
MOV R2,#0
JMP START ;返回开始
RET
B0: JB P0.3,B1 ;扫描一楼行程,获取楼层信号
CALL XIAODOU
JB P0.3,B1
CALL XIAODOU
JB P0.3,B1
CALL XIAODOU
JB P0.3,B1
CALL XIAODOU
JB P0.3,B1
MOV R0,#1 ;载入1层代码1,2表示1层半,3表示2层,4表
示2层半,5表示3层,6表示3层半,7表示4层
MOV R7,#1
CALL XS ;显示数据
RET
B1: JB P0.2,B2 ;扫描2楼行程,获取楼层信号CALL XIAODOU
JB P0.2,B2
CALL XIAODOU
JB P0.2,B2
CALL XIAODOU
JB P0.2,B2
CALL XIAODOU
JB P0.2,B2
MOV R0,#3 ;载入2层代码
MOV R7,#2
CALL XS
RET
B2: JB P0.1,B3 ;扫描3楼行程,获取楼层信号CALL XIAODOU
JB P0.1,B3
CALL XIAODOU
JB P0.1,B3
CALL XIAODOU
JB P0.1,B3
CALL XIAODOU
JB P0.1,B3
MOV R0,#5 ;载入3层代码
MOV R7,#3
CALL XS
RET
B3: JB P0.0,ANJ ;扫描4楼行程,获取楼层信号CALL XIAODOU
JB P0.0,ANJ
CALL XIAODOU
JB P0.0,ANJ
CALL XIAODOU
JB P0.0,ANJ
CALL XIAODOU
JB P0.0,ANJ
MOV R0,#7 ;载入4层代码
MOV R7,#4
CALL XS
RET
ANJ: JB P2.0,C1 ;扫描按键,获取目的层CALL XIAODOU
JB P2.0,C1
CALL XIAODOU
JB P2.0,C1
CALL XIAODOU
JB P2.0,C1
CALL XIAODOU
JNB P2.0,$
MOV N1,#1 ;载入目的1楼代码,R6为副寄存器MOV R6,#1
MOV R2,#10
CALL XS
CALL BIJAO
RET
C1: JB P2.1,C2
CALL XIAODOU
JB P2.1,C2
CALL XIAODOU
JB P2.1,C2
CALL XIAODOU
JB P2.1,C2
CALL XIAODOU
JNB P2.1,$
MOV N1,#3 ;载入目的2楼代码,R6为副寄存器
MOV R6,#3
MOV R2,#11
CALL XS
CALL BIJAO
RET
C2: JB P2.2,C3
CALL XIAODOU
JB P2.2,C3
CALL XIAODOU
JB P2.2,C3
CALL XIAODOU
JB P2.2,C3
CALL XIAODOU
JNB P2.2,$
MOV N1,#5 ;载入目的3楼代码,R6为副寄存器MOV R6,#5
MOV R2,#12
CALL XS
CALL BIJAO
RET
C3: JB P2.3,TIAO
CALL XIAODOU
JB P2.3,TIAO
CALL XIAODOU
JB P2.3,TIAO
CALL XIAODOU
JB P2.3,TIAO
CALL XIAODOU
JNB P2.3,$
MOV N1,#7 ;载入目的4楼代码,R6为副寄存器
MOV R6,#7
MOV R2,#4
CALL XS
CALL BIJAO
RET
TIAO:JMP XINCEN
RET
BIJAO: ;楼层比较子程序
MOV A,R0 ;楼层数与目的层不相等则转到大小比较段,比较大小
CJNE A,N1,DIFF
JMP START
DIFF: JNC NEXT ;没有进位,说明目的层小于楼层,转到下行段JMP UP ;有进位,说明目的层大于楼层,转到上行段RET
NEXT: JMP DOWN
RET
UP: CLR P0.4 ;输出关门指令
CALL OPEN ;关门时间延时
SETB P0.4 ;关门完成
CALL OPENDOOR
K1: SETB P0.5 ;上行子程序段,禁止向下动作,输出上行指令CLR P0.7
CALL XINCEN ;扫描行程,按键
CALL CUZUO ;检测否出错
MOV A,R0
CJNE A,N1,D1 ;判断是否到达指定层,没有则继续上行,到达则关闭上行,返回开始
SETB P0.7
CALL OPENDOOR
CLR P0.6 ;输出开门指令
CALL OPEN ;关门时间延时