ORG 0000H
MOV TMOD,#01H
MOV TL0,#60H
MOV TH0,#0F3H
MOV R2,#04H
MOV R5,#04H
//**** write program to get input from keyboard***************///
// PROGRAM TO DECODE KEYBOARD INPUT ///
MOV A,P2
ANL A,#11110000B
MOV R4,A
ACALL DELAY
MOV A,P2
ANL A,#11110000B
LOOPA:RL A
DJNZ R5,LOOPA
ADD A,R4
CJNE A,#74H,ERRC
MOV R5,#04H
CALL DELAY
MOV A,P2
ANL A,#11110000B
MOV R4,A
ACALL DELAY
MOV A,P2
ANL A,#11110000B
LOOPC:RL A
DJNZ R5,LOOPC
ADD A,R4
MOV R4,A
SUBB A,#00H
JNZ G7400
MOV A,R4
SUBB A,#02H
JNZ G7402
MOV A,R4
SUBB A,#08H
JNZ G7408
MOV A,R4
SUBB A,#32H
JNZ G7432
MOV A,R4
SUBB A,#86H
JNZ G7486
AJMP: ERR3
///************************Quad 2-input gates***************///
//***********************************************************//
//***********************************************************//
//**7846**/XOR/
G7486: MOV R0,#300H
MOV R1,#350H
LJMP AGAIN1
//**7400**/NAND/
G7400: MOV R0,#//INPUT DATA
MOV R1,#//DATA TO BE COMAPERED
LJMP AGAIN1
//**7402**/NOR/
G7402: MOV R0,#//INPUT DATA
MOV R1,#//DATA TO BE COMAPERED
LJMP AGAIN1
//**7408**/NAND/
G7408: MOV R0,#//INPUT DATA
MOV R1,#//DATA TO BE COMAPERED
LJMP AGAIN1
//**7432**/OR/
G7432: MOV R0,#//INPUT DATA
MOV R1,#//DATA TO BE COMAPERED
LJMP AGAIN1
AGAIN1:MOV A,@R0 ;PORT0
MOV P0,A
ACALL DELAY
INC R0
MOV A,P0
MOV R3,A
MOV R4,A
INC R1
SUBB A,@R1
JNZ ERRA
DJNZ R2,AGAIN1
MOV R2,#04H
LOOPD: DEC R0
DEC R1
DJNZ R2,LOOPD
;PORT1
AGAIN2:MOV A,@R0
MOV P1,A
ACALL DELAY
INC R0
MOV R3,A
INC R1
SUBB A,@R1
JNZ ERRB
DJNZ R2,AGAIN2
SETB P3.0 ;GREEN LED TO INDICATING WORKING IC
//*************DATABASE********************************////
//*******7486*****/////
ORG 0E0H
IC_IP_86:
DB 24H,6CH,0B4H,0FCH
RET
ORG 0E4H
CMP_OP_86:
DB 00H,6CH,0B4H,0D8H
RET
//*******7400*****/////
ORG 0E8H
IC_IP_00:
DB 24H,6CH,0B4H,0FCH
RET
ORG 350H
CMP_OP_00:
DB 24H,6CH,64H,0D8H
RET
//*******7402*****/////
ORG ///???
IC_IP_02:
DB 24H,6CH,0B4H,0FCH
RET
ORG 350H
CMP_OP_02:
DB 24H,48H,90H,08H
RET
//*******7408*****/////
ORG ///???
IC_IP_08:
DB 24H,6CH,0B4H,0FCH
RET
ORG 350H
CMP_OP_08:
DB 00H,48H,90H,0FCH
RET
DELAY:SETB TR0
LOOPB:JNB TF0,LOOPB
CLR TR0
CLR TF0
RET
;DONT FORGET TO WRITE THE DELAY CODE
RET
ERRA:SETB P3.1
;FOR GATE 1
MOV A,R3
ANL A,#0E0H ;MASK THE LAST 5 BITS.
MOV A,R4
MOV A,@R1
ANL A,#0E0H ;MASK THE LAST 5 BITS.
SUBB A,R4
JNZ GATE1
;FOR GATE 2
MOV A,R3
ANL A,#1CH ;MASK THE LAST 5 BITS.
MOV A,R4 ;
MOV A,@R1
ANL A,#1CH ;MASK THE LAST 5 BITS.
SUBB A,R4
JNZ GATE2
RET
ERRB:SETB P3.1
;FOR GATE 3
MOV A,R3
ANL A,#0E0H ;MASK THE LAST 5 BITS.
MOV A,R4
MOV A,@R1
ANL A,#0E0H ;MASK THE LAST 5 BITS.
SUBB A,R4
JNZ GATE3
;FOR GATE 4
MOV A,R3
ANL A,#1CH ;MASK THE LAST 5 BITS.
MOV A,R4 ;
MOV A,@R1
ANL A,#1CH ;MASK THE LAST 5 BITS.
SUBB A,R4
JNZ GATE4
RET
ERRC://TO SHOW INVALID INPUT
MOV A,#55H
RETURN:MOV P3,A
ACALL DELAY
CPL A
SJMP RETURN
GATE1: SETB P3.2
RET
GATE2: SETB P3.3
RET
GATE3: SETB P3.4
RET
GATE4: SETB P3.5
RET
GATE5: SETB P3.6
RET
GATE6: SETB P3.7
RET
///-------LIFE IS A LOOP.KEEP LOOPING--------/////
LOOPY: SJMP LOOPY
END