📄 2005-11程序.txt
字号:
;控制程序
;1.打开总电源开关,电源指示灯接通。
;2.选择自动控制程序(自动控制程序指示灯接通)
; 单片机运行进入等待状态。按开始程序自动运行
; 按暂停关闭所有电器保护现场,按开始恢复电器状态并运行。
;3.开进水阀-打开进水阀15秒后-启动解毒装置C-水位开关控制-自动;关进水阀。
;4.启动电机a、启动水泵b、-运行220秒-关闭电机a-10秒后-关闭水;泵b。
;5.开排水阀-50秒,再打开进水阀-10秒,然后后关闭排水阀(开排水;阀共60秒)-水位开关控制-自动关进水阀。
;
;6.启动电机a、启动水泵b-运行60秒-关闭电机a-5秒后-关闭水泵b。
;7.开排水阀-50秒,再打开进水阀-10秒,然后后关闭排水阀(开排水;阀共60秒)-水位开关控制-自动关进水阀。
; 8.启动电机a、启动水泵b-运行30秒-关闭电机a-30秒后-关闭水泵b、关闭解毒装置C。
; 9.开排水阀-50秒-关闭排水阀。
;10.接通蜂鸣器-10秒-关闭,同时接通完毕指示灯,启盖关闭。
;11.关总电源。
;
;由89c51接线可知:
;总控开关 由1脚p1.0高电平(置1)开,低电平(置0)关;
;自检完成状态正常等待时,打开总控电源开关
;进水阀 由2脚p1.1高电平(置1)开,低电平(置0)关;
;排水阀 由3脚p1.2高电平(置1)开,低电平(置0)关;
;电机a 由4脚p1.3高电平(置1)开,低电平(置0)关;
;水泵b 由5脚p1.4高电平(置1)开,低电平(置0)关;
;降解装置c 由6脚p1.5高电平(置1)开,低电平(置0)关;
;润滑装置d 由7脚p1.6高电平(置1)开,低电平(置0)关;
;接通蜂鸣器 由8脚p1.7高电平(置1)开,低电平(置0)关;
;水位开关 由27脚p2.6高电平(置1),水满。
;开始开关 由28脚p2.7高电平(置1),开始。
ORG 0000H
Start: AJMP Main
ORG 0003H
;外部中断0响应
PUSH P1;中断0入口0003H
PUSH P2
MOV P1,#0H
MOV P2,#0H
Wait0: ACALL Light ;暂停时闪灯
JNB P2.7,Wait0;暂停后判断开始开关
POP P2 ;恢复现场
POP P1
RETI;中断返
Main:
;系统上电程序初始化
MOV P0,#0H ;初始化p0端口(0000 0000-p0.7..p0.0)
MOV P1,#01H
MOV P2,#0H
MOV P3,#0H
;外部中断0开
SETB IT0;脉冲边沿触发
SETB EX0;外部中断0允许
SETB EA ;总中断允许
;系统自检
MOV A,P1
CJNE A,#01H,Error
CLR P1.0
;等候开始
Wait: JNB P2.7,Wait;判断开始开关
;工序3
L3:ACALL ON_InValve
MOV R0,#2H
ACALL DELAY
ACALL ON_C
ACALL CHECK_Water
ACALL OFF_InValve
;工序4
L4:ACALL ON_A
ACALL ON_B
MOV R0,#27H;延时39*5.38s=220s
ACALL OFF_A
MOV R0,#2H
ACALL DELAY
ACALL OFF_B
;工序5
L5:ACALL ON_OutValve
MOV R0,#9H
ACALL DELAY
ACALL ON_InValve;
MOV R0,#1H
ACALL DELAY
ACALL OFF_OutValve
ACALL CHECK_Water
ACALL OFF_InValve
;工序6
L6:ACALL ON_A
ACALL ON_B
MOV R0,#0BH
ACALL DELAY
ACALL OFF_A
MOV R0,#1H
ACALL DELAY
ACALL OFF_B
;工序7
L7:ACALL ON_OutValve
MOV R0,#9H
ACALL DELAY
ACALL ON_InValve;
MOV R0,#1H
ACALL DELAY
ACALL OFF_OutValve
ACALL CHECK_Water
ACALL OFF_InValve
;工序8
L8:ACALL ON_A
ACALL ON_B
MOV R0,#5H
ACALL DELAY
ACALL OFF_A
MOV R0,#5H
ACALL DELAY
ACALL OFF_B
ACALL OFF_C
;工序9
L9:ACALL ON_OutValve
MOV R0,#9H
ACALL DELAY
ACALL OFF_OutValve
;工序10
L10:ACALL ON_Ring
MOV R0,#01H
ACALL DELAY
ACALL OFF_Ring
AJMP Main ;返回
;子程序
;打开进水阀
ON_InValve:
SETB P1.1
RET
;关闭进水阀
OFF_InValve:
CLR P1.1
RET
;打开排水阀
ON_OutValve:
SETB P1.2
RET
;关闭排水阀
OFF_OutValve:
CLR P1.2
RET
;打开电机a
ON_A:
SETB P1.3
RET
;关闭电机a
OFF_A:
CLR P1.3
RET
;打开水泵b
ON_B:
SETB P1.4
RET
;关闭水泵b
OFF_B:
CLR P1.4
RET
;打开降解装置c
ON_C:
SETB P1.5
RET
;关闭降解装置c
OFF_C:
CLR P1.5
RET
;打开蜂鸣器
ON_Ring:
SETB P1.7
RET
;关闭蜂鸣器
OFF_Ring:
CLR P1.7
RET
;故障时蜂鸣器
Error: CLR P1.0
MOV R6,#0CH
LOP1: MOV R2,#0FFH
CPL P1.7
LOP2: MOV R3,#0FFH
LOP3: DJNZ R3,LOP3
DJNZ R2,LOP2
DJNZ R6,LOP1
AJMP Main
;暂停时闪灯
Light: MOV R5,#0FFH
CPL P1.0
LOP5: MOV R6,#0FFH
LOP6: DJNZ R6,LOP6
DJNZ R5,LOP5
RET
;检查水位开关
CHECK_Water:
;WATER:JNB P2.1,WATER;判断水位开关
; RET
TEST: JB P2.6,OUT
JMP TEST
OUT: CLR P2.6
RET
;延时 输入参数 R0,延时时间为R0*5 s
;调整R6,R5,R4的值用于调整延时长短,标准是当R0为1时延时为5s
;大约的值的大小((R4*4+2+1)*R5*2+4)*R6*2*一个机器周期
DELAY:
LOOP4: MOV R6,#7H
LOOP3: MOV R5,#0FFH ;MOV R5,#0FFH
LOOP2: MOV R4,#0FFH ;MOV R4,#0FFH
LOOP1: NOP
NOP
DJNZ R4,LOOP1
DJNZ R5,LOOP2
DJNZ R6,LOOP3
DJNZ R0,LOOP4
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -