You are on page 1of 8

Car Monitoring System

;Problem 1 of T1
ORG 000

MOV R0,#40H
MOV 30H,#15 ;Hour fixed but can be changed
MOV 31H,#45 ;Minutes

AGAIN:
CALL Scar ;Module speed of car
CALL Fcar ;Module fuel of car
CALL ACcar ;Module AC of car
CALL Lcar ;Module Headlight of car
CALL DELAY
SJMP AGAIN
Car Monitoring System
PRINT: ;print module to copy data from ROM to IDR
BACK:
CLR A
MOVC A,@A+DPTR
JZ _end_print
MOV @R0,A
INC DPTR
INC R0
JMP BACK
_end_print:
RET
Car Monitoring System
ORG 300H ;all strings defined
TIME:DB "TIME",0
HRS:DB "HRS",0
SPEED:DB "SPEED",0
KMPH:DB "KMPH",0
FUEL:DB "FUEL",0
LTR: DB "LTR",0
ACON: DB "AC-ON",0
LIGHT: DB "Headlight-ON",0
Car Monitoring System
; _part A_
Scar:
MOV P1,#0FFH
MOV A,P1
SUBB A,#70
JC Fcar
MOV DPTR,#TIME
CALL PRINT ;print TIME
MOV @R0,30H ;insert hour
INC R0
MOV @R0,31H ;insert minute
INC R0
MOV DPTR,#HRS
CALL PRINT
MOV DPTR,#SPEED
CALL PRINT
MOV A,P1
MOV @R0,A ;insert speed
INC R0
MOV DPTR,#KMPH
CALL PRINT
SETB P2.0
RET
Car Monitoring System
; _part B_
Fcar:
MOV P0,#0FFH
MOV A,P0
SUBB A,#05
JNC ACcar
MOV DPTR,#TIME
CALL PRINT
MOV @R0,30H ;insert hour
INC R0
MOV @R0,31H ;insert minute
INC R0
MOV DPTR,#HRS
CALL PRINT
MOV DPTR,#FUEL
CALL PRINT
MOV A,P0
MOV @R0,A ;insert fuel reading
INC R0
MOV DPTR,#LTR
CALL PRINT
SETB P2.1
RET
Car Monitoring System
; _part C_
ACcar:
MOV C,20H ;20H is a bit
JNC Lcar
MOV DPTR,#TIME
CALL PRINT
MOV @R0,30H
INC R0
MOV @R0,31H
INC R0
MOV DPTR,#HRS
CALL PRINT
MOV DPTR,#ACON
CALL PRINT
SETB P2.7
RET
Car Monitoring System
; _part D_
Lcar:
MOV C,21H
JNC _RET_ ;after part D delay of 1 minute
MOV A,30H
SUBB A,#07 ;if time < 7 do nothing
JC _RET_
SUBB A,#17 ;if time > 17 do nothing
JNC _RET_
MOV DPTR,#TIME
CALL PRINT
MOV @R0,30H
INC R0
MOV @R0,31H
INC R0
MOV DPTR,#HRS
CALL PRINT
MOV DPTR,#LIGHT
CALL PRINT
SETB P2.6
_RET_:;return and call delay
RET
Car Monitoring System
; _Delay program for exact 8 X 10^7 machine cycles_ , cycles listed after each instruction (CPL cycles not
considered)
DELAY:
CALL TT0 ;2
LJMP EXIT ;2

TT0:
MOV R4,#3
MOV R3,#96
MOV R2,#248
MOV R1,#160 ;all moves 4 cycles

TT1:
DJNZ R1,TT1 ;160*2 + 256*2*247 + 256*2*256*95 + 256*2*256*256*2 = 79687488
DJNZ R2,TT1 ;248*2 + 256*2*95 + 256*2*256*2 = 311280
CPL P2.0 ;2 cycles for blinking LEDs but not considered in delay
CPL P2.1
DJNZ R3,TT1 ;96*2 + 256*2*2 = 1216
DJNZ R4,TT1 ;3*2 = 6
RET ;2
EXIT:
RET ;total machine cycles = 80,000,000 * 0.75microsecs = 1 min
END

You might also like