Code for Reading Flow & Generating LED Output
The code starts with the scanning of the PORT 3, for reading the flow status to check for various flow conditions and compare to start subroutines for respective flow. The overflow conditions are checked in respective subroutines for LED driving i.e. In flash mode or continuous, the LED are L1, L2, L3 & L4 are used for various combinations.
The details of program code are below:-
MOV P3 , #0FFH ; Define Port 3 as input port
START : MOV A ,P3
MOV A ,P3
ANL A, #1Ch ; Masking of BITs FLOW RATE
ACALL FLOW00 ; FLOW RATE 0 SUBROUTINE
ACALL FLOW01 ; FLOW RATE 1 SUBROUTINE
ACALL FLOW02 ; FLOW RATE 2 SUBROUTINE
ACALL FLOW03; FLOW RATE 3 SUBROUTINE
ACALL FLOW04; FLOW RATE 4 SUBROUTINE
ACALL FLOW05; FLOW RATE 5 SUBROUTINE
ACALL FLOW06 ; FLOW RATE 6 SUBROUTINE
ACALL FLOW07 ; FLOW RATE 7 SUBROUTINE
SJMP START
; FLOW RATE SUBROUTINES SECTION
FLOW00 : CJNE A,#00H , NEXT0 ; FLOW RATE 0
MOV A, P3
ANL A,#20h
CJNE A ,#00H , FLOWOV ; LED 1 FLASHING 1Hz
SETB P1.0 ; LED 1 ON
ACALL DELAY ; 500ms DELAY
CLR P1.0 ; LED 1 OFF
ACALL DELAY ; 500ms DELAY
RET
FLOWOV :
SETB P1.0 ; LED 1 ON ( 0 HZ)
NEXT0 : RET
FLOW01: CJNE A ,#04H , NEXT1 ; FLOW RATE 1
MOV A, P3
ANL A,#20h
CJNE A ,#00H , FLOWOV1
SETB P1.0 ; LED 1 ON
ACALL DELAY ; 500ms DELAY
CLR P1.0 ; LED 1 OFF
ACALL DELAY ; 500ms DELAY
RET
FLOWOV1 :
SETB P1.0 ; LED 1 ON ( 0 HZ)
NEXT1 :RET
; SUBROUTINE FLOW RATE 2
FLOW02: CJNE A,#08H , NEXT2 ; FLOW RATE 2
MOV A, P3
ANL A,#20h
CJNE A ,#00H , FLOWOV2 ;
MOV P1 ,#03H ; LED 1 , LED 2 ON FLASHING 1 Hz
ACALL DELAY ; 500ms DELAY
MOV P1 ,#00H ; LED 1 , LED 2 OFF
ACALL DELAY ; 500ms DELAY
RET
FLOWOV2 :
MOV P1 ,#03H ; LED 1 , LED 2 ON
NEXT2 : RET
; SUBROUTINE FLOW RATE 3
; SUBROUTINE FLOW RATE 4
; SUBROUTINE FLOW RATE 5
; SUBROUTINE FLOW RATE 6
; SUBROUTINE FLOW RATE 7