BONEY YOUR PROGRAM

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
 

HELLO | | CUSAT