Assembly Code for Reading Flow & Generating Serial Output
The timer is timer 1 is set for the baud rate 9600, as the crystal used is of 11.0592 Hz. Then the timer 1 is started by TR1. The program checks the ASCII switch, flow status pins and the respective flow subroutine starts and in the flow subroutine the overflow status is checked as well as the MOV B ,#X where X is the character used to be displayed in PC is used to stored in the register B. The subroutines returns and the Serial transmission routine is called for serial transmission. In serial transmission subroutine the status of 79H is checked if found enabled then the value of B is transferred in SBUF and followed by character 'L' to SBUF.
The details assembly code is as below:-
; Define value setting for Timer in using Generate Baud Rate in transfer data.
MOV IE,#00000000B
MOV TMOD,#00100000B
MOV TL1,#0FDH
MOV TH1,#0FDH
; Define value setting for SCON Register that select mode 1
MOV SCON,#01010000B
SETB TR1
MOV P3 , #0FFH ; Define Port 3 as input port
START : MOV A ,P3
ANL A, #80h ; Masking of BITs except P3.7
CJNE A ,#00h , OVER ; TO CHECK THE ASCII SWITCH
CPL 79H ;
OVER : 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
JB 79H , SKIP ; CHECK FOR ENABLED OR DISABLED SERIAL COMMUNICATION
ACALL STXD ; SERIAL DATA COMMUNICATION TX
SKIP : SJMP START
; FLOW RATE SUBROUTINES SECTION
FLOW00 : CJNE A,#00H , NEXT0 ; FLOW RATE 0
MOV B ,#'0'
NEXT0 : RET
FLOW01: CJNE A ,#04H , NEXT1 ; FLOW RATE 1
MOV B ,#'1'
NEXT2 : RET
; SUBROUTINE FLOW RATE 3
FLOW03: CJNE A,#0CH , NEXT3 ; FLOW RATE 3
MOV B ,#'3'
NEXT3 :RET
; SUBROUTINE FLOW RATE 4
FLOW04: CJNE A,#10H , NEXT4 ; FLOW RATE 4
MOV B ,#'4'
NEXT4 :RET
; SUBROUTINE FLOW RATE 5
FLOW05: CJNE A, #14H , NEXT5 ; FLOW RATE 5
MOV B ,#'5'
Next5 :RET
; SUBROUTINE FLOW RATE 6
FLOW06: CJNE A,#18H , NEXT6 ; FLOW RATE 6
MOV B ,#'6'
Next6 :RET
; SIMILARLY SUBROUTINE FLOW RATE 7
; TRANSMISSION SERIAL SUBROUTINE STARTS
STXD : MOV SBUF,B
JNB TI,$
CLR TI
MOV SBUF,#'L' ; Sending L After the flow Rate
JNB TI,$
CLR TI
RET
END