Ece Final
Ece Final
Submitted by:
Abhishek Shukla (230101005)
Atulya Srivastava (230101038)
Divyanshu Pal (230101051)
Harsh (230101055)
Date: 11/04/2025
Place: IIIT Bhagalpur
Dr. Suraj
Assistant Professor, ECE
IIIT Bhagalpur, 813210
EXPERIMENTS
CODE:
OUTPUT:
EXPERIMENT 2:
Write 8051 assembly code to copy 8-bit hexadecimal data 30H data to
internal memory location 30H, 31H, 32H.
CODE:
OUTPUT:
EXPERIMENT 3:
CODE:
A B A ⊕ B (XOR Output)
P1.0 P1.1 P2.0
0 0 0
0 1 1
1 0 1
1 1 0
ORG 000H
MAIN:
JB P1.0, TEST1;
JB P1.1, TEST2;
CLR P2.0;
SJMP MAIN;
TEST1:
JB P1.1, TEST3;
SETB P2.0;
SJMP MAIN;
TEST2:
SETB P2.0;
SJMP MAIN;
TEST3:
CLR P2.0;
SJMP MAIN;
END;
OUTPUT:
For P1.0=1, P1.1 =1 Output is LOW or 0 For P1.0=0, P1.1 =1 Output is HIGH OR 1
EXPERIMENT 4:
CODE:
A B NOR Output
(P1.0) (P1.1) (P2.0)
0 0 1
0 1 0
1 0 0
1 1 0
ORG 000H
MAIN:
TEST1:
JB P1.1, TEST3 ; If P1.1 is high, go to TEST3
SETB P2.0 ; If P1.1 is low, set P2.0
SJMP MAIN
TEST2:
SETB P2.0 ; If only P1.1 is high, set P2.0
SJMP MAIN
TEST3:
CLR P2.0 ; If both P1.0 and P1.1 are high, clear P2.0
SJMP MAIN ;
END;
OUTPUT:
CODE:
A B NAND Output
(P1.0) (P1.1) (P2.0)
0 0 1
0 1 1
1 0 1
1 1 0
ORG 000H
MAIN:
JB P1.0, CHECK1 ; If P1.0 is 1
JB P1.1, ONLY_P11 ; P1.0=0 and P1.1=1 → Set
CLR P2.0 ; P1.0=0 and P1.1=0 → Clear
SJMP MAIN ;
CHECK1:
JB P1.1, BOTH_SET ; P1.0=1 and P1.1=1 → Clear
SETB P2.0 ; P1.0=1 and P1.1=0 → Set
SJMP MAIN ;
ONLY_P11:
SETB P2.0 ; Only P1.1 is set
SJMP MAIN ;
BOTH_SET:
CLR P2.0 ; Both are set
SJMP MAIN ;
END
OUTPUT:
EXPERIMENT 5:
CODE:
; Initialize Port 1
MOV P1, #00H ; Clear P1 (P1.0 = 0)
MAIN:
; --- Half-cycle (500 µs HIGH) ---
MOV TH1, #0FEH ;
MOV TL1, #33H ;
SETB P1.0 ; Set P1.0 HIGH
SETB TR1 ; Start Timer 1
WAIT_HIGH:
JNB TF1, WAIT_HIGH ; Wait for overflow
CLR TF1 ; Clear overflow flag
CLR TR1 ; Stop Timer 1
WAIT_LOW:
JNB TF1, WAIT_LOW ; Wait for overflow
CLR TF1 ; Clear overflow flag
CLR TR1 ; Stop Timer 1
OUTPUT:
EXPERIMENT 6:
CODE:
ORG 0000H;
MOV R0, #60H ;
MOV R1, #10H ;
CLEAR_RAM:
MOV @R0, #00H;
INC R0 ;
DJNZ R1, CLEAR_RAM;
END;
EXPERIMENT 7:
CODE:
ORG 00H
MOV P1, #00H ; Initialize P1.0 as output
MAIN:
; ---- ON Time: 165 µs (2 overflows) ----
MOV TMOD, #20H ; Timer 1, Mode 2 (auto-reload)
MOV TH1, #0D1H ; Reload value = 209 (for second overflow)
MOV TL1, #00H ; Start counting from 0 (first overflow)
SETB P1.0 ; P1.0 HIGH
SETB TR1 ; Start Timer 1
ON_FIRST:
JNB TF1, ON_FIRST ; Wait for first overflow (140 µs)
CLR TF1 ; Clear flag
ON_SECOND:
JNB TF1, ON_SECOND ; Wait for second overflow (25.6 µs)
CLR TF1 ; Clear flag
CLR TR1 ; Stop Timer 1
OFF_FIRST:
JNB TF1, OFF_FIRST ; Wait for first overflow (56 µs)
CLR TF1
OFF_SECOND:
JNB TF1, OFF_SECOND ; Wait for second overflow (140 µs)
CLR TF1
OFF_THIRD:
JNB TF1, OFF_THIRD ; Wait for third overflow (140 µs)
CLR TF1
CLR TR1
OUTPUT:
EXPERIMENT 8:
CODE:
ORG 00H
MOV R0,#60H;
MOV R1,#10;
MOV B,#0;
BACK:
MOV A,@R0;
CJNE A,B,LOOP;
LOOP:JC LOOP1;
MOV B,A;
INC R0;
DJNZ R1,BACK;
SJMP NEXT;
LOOP1:
INC R0;
DJNZ R1,BACK;
NEXT:
MOV A,B;
MOV 60H,A;
END;
OUTPUT:
EXPERIMENT 9:
CODE:
ORG 0000H;
NO_CARRY:
INC R0;
DJNZ R2,LOOP;
END;
OUTPUT: