发表于:2007/6/26 6:38:00
#0楼
四段定时程序
可编程定时控制器程序可供参考 .欢迎提出意见
功能说明:
1:该开发板输入12伏--24伏120瓦5伏5瓦两组电源。分别从端口1起接入24伏正,24伏负,5伏正,5伏负。可以
是开关电源或稳压电源,严禁极性接错。5伏为芯片工作电源。保险管为12-24伏过载保护。
2:该开发板已输入四时段循环程序。最长每段定时999秒。通过按键选择所需时段运行时间。
3:端口5--8接外部输入负信号可以是按钮行程开关,光电开关,磁性开关等,用以控制各时段信号的触发。
每一输入点对应一个输出口端口9接输出信号公共极负端口10-13接输出24伏正信号驱动。可直接接气动阀。
电磁阀或继电器。每个输出口可带动28瓦负载。
使用方法:
1:按键0为复位键,当电源不稳定导致程序出错,按0键从程序起始处运行。
2:按键1为加计数键,选择好所需时段后按下1键从000- -999循环计数,至最大值999改为000反复计数。并
存入24c02储存器储存,停电后数据保持。下次开机数据自动读出。
3:按键2为减计数键,选择好所需时段后按下2键从999- -000反循环计数。至最小值000改为999反复计数。
并存入24c02储存器储存,停电后数据保持。下次开机数据自动读出。
4:按键3为选择时段键,按下后显示- -1,- -2,- -3,- -4。分别为第一段,第二段,
第三段,第四段运行时间。选择所需时段后即可按加减键选择设定时间。
5:按键5为备用键,一般不用,设定数据时不能按下。
*设定时间不能为0,否则将导致程序运行出错。
*如不需设定数据,按下按键3显示- -4后,即第4段时间后,端口5输入24伏负电即运行第一
段设定值。并显示设定值,端口10输出24伏正,用以输出驱动负载信号,一秒钟减一秒,至
设定值减为0,端口10关闭。然后显示第二段时间,端口6输入24伏负,并显示第二段设定值,端口11输出
24伏正一秒钟减一秒,至设定值减为0,端口11关闭。
T1G EQU 50H
T1S EQU 51H
T1B EQU 52H
T2G EQU 53H
T2S EQU 54H
T2B EQU 55H
T3G EQU 56H
T3S EQU 57H
T3B EQU 58H
T4G EQU 59H
T4S EQU 5AH
T4B EQU 5BH
SDA BIT P3.4
SCL BIT P3.3
JAO BIT P3.2
FY BIT P3.7
XH BIT P3.5
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: SETB JAO
SETB FY
MOV SCON,#00H
MOV A,#01H
ACALL RD24
MOV T1G,A
MOV A,#02H
ACALL RD24
MOV T1S,A
MOV A,#03H
LCALL RD24
MOV T1B,A
MOV A,#04H
ACALL RD24
MOV T2G,A
MOV A,#05H
LCALL RD24
MOV T2S,A
MOV A,#06H
LCALL RD24
MOV T2B,A
MOV A,#07H
LCALL RD24
MOV T3G,A
MOV A,#08H
LCALL RD24
MOV T3S,A
MOV A,#09H
LCALL RD24
MOV T3B,A
MOV A,#0AH
LCALL RD24
MOV T4G,A
MOV A,#0BH
LCALL RD24
MOV T4S,A
MOV A,#0CH
LCALL RD24
MOV T4B,A
LCALL XS1
FY1: JB FY,K1
LCALL D1
JB FY,K1
LCALL XS2
LJMP FY2
K1: MOV P1,#0FEH
JB JAO,FY1
LCALL D1
JB JAO,FY1
MOV A,T1G
INC A
MOV T1G,A
CJNE A,#0AH,XA
MOV T1G,#00H
MOV A,T1S
INC A
MOV T1S,A
CJNE A,#0AH,XA
MOV T1S,#00H
MOV A,T1B
INC A
MOV T1B,A
CJNE A,#0AH,XA
MOV T1B,#00H
LJMP XA
XA: LCALL XS1
MOV A,#01H
MOV B,T1G
LCALL WT24
LCALL DEL
MOV A,#02H
MOV B,T1S
LCALL WT24
LCALL DEL
MOV A,#03H
MOV B,T1B
LCALL WT24
LJMP FY1
FY2: JB FY,K2
LCALL D1
JB FY,K2
LCALL XS3
LJMP FY3
K2: MOV P1,#0FDH
JB JAO,FY2
LCALL D1
JB JAO,FY2
MOV P1,#0FDH
MOV A,T2G
INC A
MOV T2G,A
CJNE A,#0AH,XB
MOV T2G,#00H
MOV A,T2S
INC A
MOV T2S,A
CJNE A,#0AH,XB
MOV T2S,#00H
MOV A,T2B
INC A
MOV T2B,A
CJNE A,#0AH,XB
MOV T2B,#00H
LJMP XB
XB: LCALL XS2
MOV A,#04H
MOV B,T2G
LCALL WT24
MOV A,#05H
MOV B,T2S
LCALL WT24
LCALL DEL
MOV A,#06H
MOV B,T2B
LCALL WT24
LJMP FY2
FY3: JB FY,K3
LCALL D1
JB FY,K3
LCALL XS4
LJMP FY4
K3: MOV P1,#0FBH
JB JAO,FY3
LCALL D1
JB JAO,FY3
MOV A,T3G
INC A
MOV T3G,A
CJNE A,#0AH,XC
MOV T3G,#00H
MOV A,T3S
INC A
MOV T3S,A
CJNE A,#0AH,XC
MOV T3S,#00H
MOV A,T3B
INC A
MOV T3B,A
CJNE A,#0AH,XC
MOV T3B,#00H
LJMP XC
XC: LCALL XS3
MOV A,#07H
MOV B,T3G
LCALL WT24
MOV A,#08H
MOV B,T3S
LCALL WT24
LCALL DEL
MOV A,#09H
MOV B,T3B
LCALL WT24
LJMP FY3
FY4: JB FY,K4
LCALL D1
JB FY,K4
LCALL XS1
LJMP FY1
K4: MOV P1,#0F7H
JB JAO,XH1
LCALL D1
JB JAO,XH1
MOV A,T4G
INC A
MOV T4G,A
CJNE A,#0AH,XD
MOV T4G,#00H
MOV A,T4S
INC A
MOV T4S,A
CJNE A,#0AH,XD
MOV T4S,#00H
MOV A,T4B
INC A
MOV T4B,A
CJNE A,#0AH,XD
MOV T4B,#00H
LJMP XD
XD: LCALL XS4
MOV A,#0AH
MOV B,T4G
LCALL WT24
MOV A,#0BH
MOV B,T4S
LCALL WT24
LCALL DEL
MOV A,#0CH
MOV B,T4B
LCALL WT24
XH1: JB XH,FY4
LCALL D1
JB XH,FY4
LCALL XS1
MOV P1,#0F7H
LCALL DESY1
MOV P1,#0FFH
LCALL XS2
XH2: JB XH,XH2
LCALL D1
JB XH,XH2
MOV P1,#0FBH
LCALL DESY2
MOV P1,#0FFH
LCALL XS3
XH3: JB XH,XH3
LCALL D1
JB XH,XH3
MOV P1,#0FDH
LCALL DESY3
MOV P1,#0FFH
LCALL XS4
XH4: JB XH,XH4
LCALL D1
JB XH,XH4
MOV P1,#0FEH
LCALL DESY4
MOV P1,#0FFH
LCALL XS1
LJMP XH1
DESY1: MOV R7,T1B
MOV R6,T1S
MOV R5,T1G
LCALL SY1
RET
DESY2: MOV R7,T2B
MOV R6,T2S
MOV R5,T2G
LCALL SY1
RET
DESY3: MOV R7,T3B
MOV R6,T3S
MOV R5,T3G
LCALL SY1
RET
DESY4: MOV R7,T4B
MOV R6,T4S
MOV R5,T4G
LCALL SY1
RET
SY1: CJNE R5,#00H,SYA
LJMP SJ1
SYA: DEC R5
LCALL DE1M
LCALL XS
CJNE R5,#00H,SYA
CJNE R6,#00H,SJ1
CJNE R7,#00H,BJ1
LJMP YSRT
SJ1: LCALL DE1M
LCALL XS
DEC R6
MOV R5,#09H
LCALL XS
LJMP SYA
BJ1: LCALL DE1M
LCALL XS
DEC R7
MOV R6,#09H
MOV R5,#09H
LCALL XS
LJMP SYA
YSRT: RET
XS1: MOV A,T1B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T1S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T1G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS2: MOV A,T2B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T2S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T2G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS3: MOV A,T3B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T3S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T3G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS4: MOV A,T4B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T4S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T4G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS: MOV A,R7
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,R6
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,R5
LCALL CB
MOV SBUF,A
LCALL TD
RET
CB: MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
RD24: PUSH ACC
SETB SDA
CLR SCL
LCALL STAR
MOV A,#0A0H
LCALL SHIFT
LCALL ACK
POP ACC
LCALL SHIFT
LCALL ACK
ACALL STAR
MOV A,#0A1H
LCALL SHIFT
LCALL ACK
SETB SDA
MOV R7,#08H
CLR A
SETB SDA
RD0: RL A
SETB SCL
MOV C,SDA
MOV ACC.0,C
CLR SCL
DJNZ R7,RD0
NOP
RET
WT24: PUSH ACC
SETB SDA
CLR SCL
LCALL STAR
MOV A,#0A0H
LCALL SHIFT
LCALL ACK
POP ACC
LCALL SHIFT
LCALL ACK
MOV A,B
LCALL SHIFT
LCALL ACK
LCALL STOP
LCALL DEL
RET
STAR: CLR SDA
LCALL DEL
SETB SDA
LCALL DEL
SETB SCL
CLR SDA
LCALL DEL
CLR SCL
RET
STOP: CLR SDA
LCALL DEL
SETB SCL
LCALL DEL
SETB SDA
RET
ACK: SETB SCL
LCALL DEL
CLR SCL
RET
SHIFT: MOV R7,#08H
SH01: RLC A
MOV SDA,C
SETB SCL
LCALL DEL
CLR SCL
DJNZ R7,SH01
RET
TD: JBC TI,TD
CLR TI
RET
DEL: MOV R1,#02H
FA: MOV R3,#0FFH
F1: DJNZ R3,F1
DJNZ R1,FA
RET
D1: MOV R3,#0FFH
F3: MOV R2,#32H
F2: DJNZ R2,F2
DJNZ R3,F3
RET
DE1M: MOV R3,#0FFH
DEM: MOV R2,#0F0H
DEN: MOV R1,#03H
DEO: DJNZ R1,DEO
DJNZ R2,DEN
DJNZ R3,DEM
RET
ORG 0450H
TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
可编程定时控制器程序可供参考 .欢迎提出意见
功能说明:
1:该开发板输入12伏--24伏120瓦5伏5瓦两组电源。分别从端口1起接入24伏正,24伏负,5伏正,5伏负。可以
是开关电源或稳压电源,严禁极性接错。5伏为芯片工作电源。保险管为12-24伏过载保护。
2:该开发板已输入四时段循环程序。最长每段定时999秒。通过按键选择所需时段运行时间。
3:端口5--8接外部输入负信号可以是按钮行程开关,光电开关,磁性开关等,用以控制各时段信号的触发。
每一输入点对应一个输出口端口9接输出信号公共极负端口10-13接输出24伏正信号驱动。可直接接气动阀。
电磁阀或继电器。每个输出口可带动28瓦负载。
使用方法:
1:按键0为复位键,当电源不稳定导致程序出错,按0键从程序起始处运行。
2:按键1为加计数键,选择好所需时段后按下1键从000- -999循环计数,至最大值999改为000反复计数。并
存入24c02储存器储存,停电后数据保持。下次开机数据自动读出。
3:按键2为减计数键,选择好所需时段后按下2键从999- -000反循环计数。至最小值000改为999反复计数。
并存入24c02储存器储存,停电后数据保持。下次开机数据自动读出。
4:按键3为选择时段键,按下后显示- -1,- -2,- -3,- -4。分别为第一段,第二段,
第三段,第四段运行时间。选择所需时段后即可按加减键选择设定时间。
5:按键5为备用键,一般不用,设定数据时不能按下。
*设定时间不能为0,否则将导致程序运行出错。
*如不需设定数据,按下按键3显示- -4后,即第4段时间后,端口5输入24伏负电即运行第一
段设定值。并显示设定值,端口10输出24伏正,用以输出驱动负载信号,一秒钟减一秒,至
设定值减为0,端口10关闭。然后显示第二段时间,端口6输入24伏负,并显示第二段设定值,端口11输出
24伏正一秒钟减一秒,至设定值减为0,端口11关闭。
T1G EQU 50H
T1S EQU 51H
T1B EQU 52H
T2G EQU 53H
T2S EQU 54H
T2B EQU 55H
T3G EQU 56H
T3S EQU 57H
T3B EQU 58H
T4G EQU 59H
T4S EQU 5AH
T4B EQU 5BH
SDA BIT P3.4
SCL BIT P3.3
JAO BIT P3.2
FY BIT P3.7
XH BIT P3.5
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: SETB JAO
SETB FY
MOV SCON,#00H
MOV A,#01H
ACALL RD24
MOV T1G,A
MOV A,#02H
ACALL RD24
MOV T1S,A
MOV A,#03H
LCALL RD24
MOV T1B,A
MOV A,#04H
ACALL RD24
MOV T2G,A
MOV A,#05H
LCALL RD24
MOV T2S,A
MOV A,#06H
LCALL RD24
MOV T2B,A
MOV A,#07H
LCALL RD24
MOV T3G,A
MOV A,#08H
LCALL RD24
MOV T3S,A
MOV A,#09H
LCALL RD24
MOV T3B,A
MOV A,#0AH
LCALL RD24
MOV T4G,A
MOV A,#0BH
LCALL RD24
MOV T4S,A
MOV A,#0CH
LCALL RD24
MOV T4B,A
LCALL XS1
FY1: JB FY,K1
LCALL D1
JB FY,K1
LCALL XS2
LJMP FY2
K1: MOV P1,#0FEH
JB JAO,FY1
LCALL D1
JB JAO,FY1
MOV A,T1G
INC A
MOV T1G,A
CJNE A,#0AH,XA
MOV T1G,#00H
MOV A,T1S
INC A
MOV T1S,A
CJNE A,#0AH,XA
MOV T1S,#00H
MOV A,T1B
INC A
MOV T1B,A
CJNE A,#0AH,XA
MOV T1B,#00H
LJMP XA
XA: LCALL XS1
MOV A,#01H
MOV B,T1G
LCALL WT24
LCALL DEL
MOV A,#02H
MOV B,T1S
LCALL WT24
LCALL DEL
MOV A,#03H
MOV B,T1B
LCALL WT24
LJMP FY1
FY2: JB FY,K2
LCALL D1
JB FY,K2
LCALL XS3
LJMP FY3
K2: MOV P1,#0FDH
JB JAO,FY2
LCALL D1
JB JAO,FY2
MOV P1,#0FDH
MOV A,T2G
INC A
MOV T2G,A
CJNE A,#0AH,XB
MOV T2G,#00H
MOV A,T2S
INC A
MOV T2S,A
CJNE A,#0AH,XB
MOV T2S,#00H
MOV A,T2B
INC A
MOV T2B,A
CJNE A,#0AH,XB
MOV T2B,#00H
LJMP XB
XB: LCALL XS2
MOV A,#04H
MOV B,T2G
LCALL WT24
MOV A,#05H
MOV B,T2S
LCALL WT24
LCALL DEL
MOV A,#06H
MOV B,T2B
LCALL WT24
LJMP FY2
FY3: JB FY,K3
LCALL D1
JB FY,K3
LCALL XS4
LJMP FY4
K3: MOV P1,#0FBH
JB JAO,FY3
LCALL D1
JB JAO,FY3
MOV A,T3G
INC A
MOV T3G,A
CJNE A,#0AH,XC
MOV T3G,#00H
MOV A,T3S
INC A
MOV T3S,A
CJNE A,#0AH,XC
MOV T3S,#00H
MOV A,T3B
INC A
MOV T3B,A
CJNE A,#0AH,XC
MOV T3B,#00H
LJMP XC
XC: LCALL XS3
MOV A,#07H
MOV B,T3G
LCALL WT24
MOV A,#08H
MOV B,T3S
LCALL WT24
LCALL DEL
MOV A,#09H
MOV B,T3B
LCALL WT24
LJMP FY3
FY4: JB FY,K4
LCALL D1
JB FY,K4
LCALL XS1
LJMP FY1
K4: MOV P1,#0F7H
JB JAO,XH1
LCALL D1
JB JAO,XH1
MOV A,T4G
INC A
MOV T4G,A
CJNE A,#0AH,XD
MOV T4G,#00H
MOV A,T4S
INC A
MOV T4S,A
CJNE A,#0AH,XD
MOV T4S,#00H
MOV A,T4B
INC A
MOV T4B,A
CJNE A,#0AH,XD
MOV T4B,#00H
LJMP XD
XD: LCALL XS4
MOV A,#0AH
MOV B,T4G
LCALL WT24
MOV A,#0BH
MOV B,T4S
LCALL WT24
LCALL DEL
MOV A,#0CH
MOV B,T4B
LCALL WT24
XH1: JB XH,FY4
LCALL D1
JB XH,FY4
LCALL XS1
MOV P1,#0F7H
LCALL DESY1
MOV P1,#0FFH
LCALL XS2
XH2: JB XH,XH2
LCALL D1
JB XH,XH2
MOV P1,#0FBH
LCALL DESY2
MOV P1,#0FFH
LCALL XS3
XH3: JB XH,XH3
LCALL D1
JB XH,XH3
MOV P1,#0FDH
LCALL DESY3
MOV P1,#0FFH
LCALL XS4
XH4: JB XH,XH4
LCALL D1
JB XH,XH4
MOV P1,#0FEH
LCALL DESY4
MOV P1,#0FFH
LCALL XS1
LJMP XH1
DESY1: MOV R7,T1B
MOV R6,T1S
MOV R5,T1G
LCALL SY1
RET
DESY2: MOV R7,T2B
MOV R6,T2S
MOV R5,T2G
LCALL SY1
RET
DESY3: MOV R7,T3B
MOV R6,T3S
MOV R5,T3G
LCALL SY1
RET
DESY4: MOV R7,T4B
MOV R6,T4S
MOV R5,T4G
LCALL SY1
RET
SY1: CJNE R5,#00H,SYA
LJMP SJ1
SYA: DEC R5
LCALL DE1M
LCALL XS
CJNE R5,#00H,SYA
CJNE R6,#00H,SJ1
CJNE R7,#00H,BJ1
LJMP YSRT
SJ1: LCALL DE1M
LCALL XS
DEC R6
MOV R5,#09H
LCALL XS
LJMP SYA
BJ1: LCALL DE1M
LCALL XS
DEC R7
MOV R6,#09H
MOV R5,#09H
LCALL XS
LJMP SYA
YSRT: RET
XS1: MOV A,T1B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T1S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T1G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS2: MOV A,T2B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T2S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T2G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS3: MOV A,T3B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T3S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T3G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS4: MOV A,T4B
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T4S
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,T4G
LCALL CB
MOV SBUF,A
LCALL TD
RET
XS: MOV A,R7
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,R6
LCALL CB
MOV SBUF,A
LCALL TD
MOV A,R5
LCALL CB
MOV SBUF,A
LCALL TD
RET
CB: MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
RD24: PUSH ACC
SETB SDA
CLR SCL
LCALL STAR
MOV A,#0A0H
LCALL SHIFT
LCALL ACK
POP ACC
LCALL SHIFT
LCALL ACK
ACALL STAR
MOV A,#0A1H
LCALL SHIFT
LCALL ACK
SETB SDA
MOV R7,#08H
CLR A
SETB SDA
RD0: RL A
SETB SCL
MOV C,SDA
MOV ACC.0,C
CLR SCL
DJNZ R7,RD0
NOP
RET
WT24: PUSH ACC
SETB SDA
CLR SCL
LCALL STAR
MOV A,#0A0H
LCALL SHIFT
LCALL ACK
POP ACC
LCALL SHIFT
LCALL ACK
MOV A,B
LCALL SHIFT
LCALL ACK
LCALL STOP
LCALL DEL
RET
STAR: CLR SDA
LCALL DEL
SETB SDA
LCALL DEL
SETB SCL
CLR SDA
LCALL DEL
CLR SCL
RET
STOP: CLR SDA
LCALL DEL
SETB SCL
LCALL DEL
SETB SDA
RET
ACK: SETB SCL
LCALL DEL
CLR SCL
RET
SHIFT: MOV R7,#08H
SH01: RLC A
MOV SDA,C
SETB SCL
LCALL DEL
CLR SCL
DJNZ R7,SH01
RET
TD: JBC TI,TD
CLR TI
RET
DEL: MOV R1,#02H
FA: MOV R3,#0FFH
F1: DJNZ R3,F1
DJNZ R1,FA
RET
D1: MOV R3,#0FFH
F3: MOV R2,#32H
F2: DJNZ R2,F2
DJNZ R3,F3
RET
DE1M: MOV R3,#0FFH
DEM: MOV R2,#0F0H
DEN: MOV R1,#03H
DEO: DJNZ R1,DEO
DJNZ R2,DEN
DJNZ R3,DEM
RET
ORG 0450H
TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END