程序介绍:这个产品是通过遥控器控制定时时间来决
定 P1.0 口输出高电平和低电平的时间 , 在 P1.0 口接一个继
电器后,从而控制电磁阀开和关,以达到对石油含水量的
定时智能排放。现已应用在上海金山炼油厂,反映良好。
本实验仪完全模拟了这个产品,它的详细操作请参照附一
(以用于上海金山炼油厂的产品说明)。
程序实例( honwai.asm ) :
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP DIN0 ;TIME
ORG 00013H
AJMP INT
106
MAIN :
;DATA DEFINE////////////////////////////////////////
ON_MINUTE_LOW EQU 30H
ON_MINUTE_HIGH EQU 31H
ON_HOUR_LOW EQU 32H
ON_HOUR_HIGH EQU 33H
OFF_MINUTE_LOW EQU 34H
OFF_MINUTE_HIGH EQU 35H
OFF_HOUR_LOW EQU 36H
OFF_HOUR_HIGH EQU 37H
DIS_MINUTE_LOW EQU 38H
DIS_MINUTE_HIGH EQU 39H
DIS_HOUR_LOW EQU 40H
DIS_HOUR_HIGH EQU 41H
TIMES_ADD_NUMBER EQU 42H
TIMEM_ADD_NUMBER EQU 3FH
INTERRUPT_NUMBER EQU 43H
INTSET_FLAG EQU 44H
ETTYPE_FLAG EQU 4FH
BL EQU 3EH
BL1 EQU 4EH
SET_ON_MLOW EQU 3AH
SET_ON_MHIGH EQU 3BH
SET_ON_HLOW EQU 3CH
SET_ON_HHIGH EQU 3DH
SET_OFF_MLOW EQU 4AH
SET_OFF_MHIGH EQU 4BH
SET_OFF_HLOW EQU 4CH
107
SET_OFF_HHIGH EQU 4DH
;//////////////////////////////////////////////////
;DATA GIVE FIRST NUMBER//////////////////////////
MOV ON_MINUTE_LOW,#00H
MOV ON_MINUTE_HIGH,#02H
MOV ON_HOUR_LOW,#00H
MOV ON_HOUR_HIGH,#00H
MOV OFF_MINUTE_LOW,#00H
MOV OFF_MINUTE_HIGH,#06H
MOV OFF_HOUR_LOW,#03H
MOV OFF_HOUR_HIGH,#00H
MOV DIS_MINUTE_LOW,#00H
MOV DIS_MINUTE_HIGH,#00H
MOV DIS_HOUR_LOW,#00H
MOV DIS_HOUR_HIGH,#00H
MOV TIMES_ADD_NUMBER,#00H
MOV TIMEM_ADD_NUMBER,#00H
MOV INTERRUPT_NUMBER,#00H
MOV INTSET_FLAG,#00H
MOV SETTYPE_FLAG,#00H
MOV BL,#00H
MOV BL1,#00H
MOV SET_ON_MLOW,#00H
MOV SET_ON_MHIGH,#00H
MOV SET_ON_HLOW,#00H
MOV SET_ON_HHIGH,#00H
MOV SET_OFF_MLOW,#00H
MOV SET_OFF_MHIGH,#00H
108
MOV SET_OFF_HLOW,#00H
MOV SET_OFF_HHIGH,#00H
;//////////////////////////////////////////////////
MOV TMOD,#00010001B
MOV TL0,#0AFH
MOV TH0,#3CH
SETB IT1
SETB EX1
SETB TR0
SETB ET0
SETB PT0
SETB EA
CLR P1.0
;//////////////////////////////////////////////////
;DISPLAY///////////////////////////////////////////
DISPLAY:
MOV BL1,#00H
MOV A,DIS_MINUTE_LOW
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D1: JNB TI,D1
CLR TI
MOV A,DIS_MINUTE_HIGH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D2: JNB TI,D2
109
CLR TI
MOV A,DIS_HOUR_LOW
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D3: JNB TI,D3
CLR TI
MOV A,DIS_HOUR_HIGH
MOV DPTR,#SETTAB
MOVC A,@A+DPTR
MOV SBUF,A
D4: JNB TI,D4
CLR TI
LCALL DELAY1
;INTSETFLAG//////////////////////////////////
MOV A,INTSET_FLAG
CJNE A,#00H,AONFE
AJMP DISP
AONFE: CJNE A,#01H,AONSH
AJMP ONFE
AONSH: CJNE A,#02H,AOFFE
AJMP ONSH
AOFFE: CJNE A,#03H,AOFSH
AJMP OFFFE
AOFSH: AJMP OFFSH
;/////////////////////////////////////////////
DISP: JNB P1.0,DISON
AJMP DISOFF
110
DISON: MOV A,#0ECH
MOV SBUF,A
D8: JNB TI,D8
CLR TI
MOV A,#0FCH
MOV SBUF,A
D7: JNB TI,D7
CLR TI
MOV A,#00H
MOV SBUF,A
D6: JNB TI,D6
CLR TI
MOV A,#00H
MOV SBUF,A
D5: JNB TI,D5
CLR TI
LCALL DELAY1
;INTSETFLAG////////////////////////////////////////
MOV A,INTSET_FLAG
CJNE A,#00H,BONFE
AJMP D1ISP
BONFE: CJNE A,#01H,BONSH
AJMP ONFE
BONSH: CJNE A,#02H,BOFFE
AJMP ONSH
BOFFE: CJNE A,#03H,BOFSH
AJMP OFFFE
BOFSH: AJMP OFFSH
111
;/////////////////////////////////////////////
D1ISP: AJMP DISPLAY
DISOFF:
MOV A,#8EH
MOV SBUF,A
D12: JNB TI,D12
CLR TI
MOV A,#8EH
MOV SBUF,A
D11: JNB TI,D11
CLR TI
MOV A,#0FCH
MOV SBUF,A
D10: JNB TI,D10
CLR TI
MOV A,#00H
MOV SBUF,A
D9: JNB TI,D9
CLR TI
LCALL DELAY1
LCALL DELAY1
;INTSETFLAG///////////////////////////////////
STATUS: MOV A,INTSET_FLAG
CJNE A,#00H,CONFE
AJMP D2ISP