Professional Documents
Culture Documents
Experiment 01 Q1. Given N in Memory Location 2030H. Find The Value of
Experiment 01 Q1. Given N in Memory Location 2030H. Find The Value of
Experiment 01 Q1. Given N in Memory Location 2030H. Find The Value of
CODE:
ORG 0000H;
LXI H,2030H;
MOV C, M
LOOP ADD C;
DCR C;
JNZ LOOP;
STA 2031H;
HLT;
ORG 2030H;
DB 05H;
LOGIC:
1. The program starts at memory location 2000H.
2. It counts the number of odd numbers in a set of 10 numbers stored in
memory locations starting from 0030H.
3. The program initializes counters and registers.
4. It loops through the set, checking each number's oddness using
bitwise operations.
5. If a number is odd, the odd count is increased.
6. After processing all numbers, the odd count is stored in memory
location 0031H.
7. The program halts, completing its task of determining the count of odd
numbers in the set.
CODE:
LXI H, 0030H; #Load HL pair with memory location 0030H
MVI B, 0AH; # Initialize B register with number of elements
MVI C, 00H; #Initialize C to store the count of odd numbers
LOOP: MOV A, M; #Load number from memory into Accumulator
ANI 01H; #Perform bitwise AND with 01H
JNZ ODD; #Jump to ODD if the zero flag is not set
INX H; #Increment HL pair to point to the next number
DCR B; #Decrement the counter B
JNZ LOOP; #Jump to LOOP if B is not zero
JMP DONE; #Jump to DONE to finish the program
ODD: INR C; #Increment the count of odd numbers
INX H; #Increment HL pair to point to the next number
DCR B; #Decrement the counter B
JNZ LOOP; # Jump to LOOP if B is not zero
LOGIC:
1. Initialize a counter (C) to 10 and a sum (A) to 0.
2. Load the first number from memory (2050H) into the accumulator (A).
3. Add the number in the accumulator (A) to the current sum (L register).
4. Move to the next memory location (increment HL).
5. Repeat steps 2-4 until the counter (C) becomes zero.
6. Store the final sum (L register) in memory (2100H).
7. Store the carry from the addition in memory (2101H) to track any
overflow.
8. Halt the processor.
CODE:
XRA A;
MOV D, A;
MVI C,0AH; # C as a register counter
LXI h,0050H; # Load HL resister pair from memory
location 0050H.
LOOP ADD M; # Add content of M with the contents of A
JNC NEXT; # If no carry them go to INXH
INR D;
NEXT INX H; # Increment H, L pair by 1
DCR C; # Decrement value of register C by 1
JNZ LOOP; #If no zero, then go to LOOP, else continue
STA 0100H; #Store the content in desired location
MOV A, D; # Content of D into Accumulator
STA 0101H; # Store carry into 0101H
HLT; # Stop
CODE:
int DELAY1=2000;
int DELAY2=1000;
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(12,OUTPUT);
pinMode(13,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(2,HIGH);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
delay(DELAY1);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,HIGH);
digitalWrite(9,LOW);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
delay(DELAY2);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
delay(DELAY1);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
delay(DELAY2);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,LOW);
digitalWrite(13,LOW);
delay(DELAY1);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,HIGH);
digitalWrite(12,HIGH);
digitalWrite(13,LOW);
delay(DELAY2);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,LOW);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
delay(DELAY1);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
digitalWrite(8,LOW);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
digitalWrite(11,LOW);
digitalWrite(12,LOW);
digitalWrite(13,HIGH);
delay(DELAY2);
}
Result:
The result of running your code will be a traffic signal simulation where
the LEDs on the PCB board shows the behaviour of a traffic signal,
cycling through red, amber, and green lights for each direction.
Conclusion:
This logic provides a simple yet effective way to simulate a traffic signal
using LEDs and an Arduino Uno. It's organized into phases to mimic the
standard traffic signal sequence: green, amber, and red. By controlling
different pins for each LED, you can create a visual representation of a
traffic signal for various directions.