SKDAV GOVT.POLYTECHNIC ROURKELA DEPARTMENT OF ELECTRONICS AND TELECOMMUNICATION ENGINEERING LAB MANUAL Year & Semester: 2 ND Year, IV Semester Subject Code/Name: Pr- 3, MICROPROCESSOR &MICROCONTROLLER
SKDAV GOVT.POLYTECHNIC
ROURKELA
DEPARTMENT OF ELECTRONICS
AND TELECOMMUNICATION ENGINEERING
LAB MANUAL
Year & Semester: 2ND Year, IV Semester
Subject Code/Name: Pr- 3, MICROPROCESSOR &MICROCONTROLLER
VISION OF THE DEPARTMENT-
To be a center of excellence in the field of E&TC Engineering by providing quality technical education.
MISSION OF THE DEPARTMENT-
1. To create an excellent teaching learning environment for making the students acquire the knowledge needed.
2. To inculcate self-learning attitude, entrepreneurial skill. 3. To impart knowledge required for recent and advanced engineering.
PROGRAM EDUCATIONAL OBJECTIVE (PEO)-
1. Recognize and apply the acquired fundamental knowledge in basic science and mathematics in solving E&TC Engineering problems.
2. To gain employment in public and private sector organization. 3. Involve in higher study and career enhancement.
PROGRAM SPECIFIC OUTCOME (PSO)-
1. To design, test and troubleshoot the simple analog and digital circuits. 2. An ability to solve complex E&TC Engineering problems using various tools
i.e. hardware and software. 3. To pursue higher studies or get placed in various industries.
COURSE OUTCOME (CO)-
After the completion of the course the students are able to-
1. Demonstrate the execution process of 8085, 8086 microprocessor and 8051 microcontroller.
2. Apply the fundamentals of assembly level programming of microprocessor 8085 to write various programs.
3. Write various programs using 8086 instructions for execution. 4. Interface a microprocessor to various devices for simple applications. 5. Understand the initialization of data to registers and memory using different
addressing modes of 8051. 6. Write various programs using 8051 instructions for execution.
PRECAUTIONS:
1. Properly connect the microprocessor and microcontroller kit with power supply terminals. 2. Switch on the power supply after checking connections 3. Handle the Trainer kit carefully. 4. If you smell anything burning, immediately disconnect the power 5. Keep your work area dry.
List of the Experiments-
SL.NO. NAME OF THE EXPERIMENT 1. To write a program to add two 8 bit number using 8085 microprocessor.
2. To write a program to add two 8-bit numbers & sum is 16-bit.
3. To write a program to subtract two 8 bit numbers using 8085 microprocessor
4. To write an assembly language program for multiplication of two 8-bit
numbers using 8085 instructions.
5. To write an assembly language program for division of two 8-bit numbers
using 8085 instructions.
6. To write an assembly language program for 1’s complement of an 8-bit
numbers using 8085 instructions.
7. To write an assembly language program for 2’s complement of an 8-bit
numbers using 8085 instructions.
8. Write a program to find larger of two numbers.
9. Write a program to find the largest value in a data array
10. Write a program to find smallest number in data array.
11. To write an assembly language program for addition of two 16-bit number
without carry using 8086 instruction.
12. To write an assembly language program for subtraction of two 16-bit number
without borrow using 8086 instruction.
13. To write an assembly language program for multiplication of two 16-bit
number using 8086 instructions.
14. To write an assembly language program for division of two 16-bit number
using 8086 instructions.
15. Write a program to largest number in data array using 8086 microprocessor.
16. Write a program for sorting an array of numbers in descending order.
17. Write a program for sorting an array of numbers in ascending order.
18. To write an assembly language program to generate square waves in all lines
of 8255 with different frequency.
19. To study the 8253 and its operation (Mode 0, Mode 2, Mode3)
20. To study the Mode 0, Mode 1, BSR mode operation of 8255.
21. To study the 8259 programmable interrupt controller.
22. To initialize data to registers and memory using immediate, register, direct
and indirect addressing mode of 8051.
23. To write a program for relay interface.
24. To write an assembly language program for character based LCD Interface.
CYCLE-1 1 To write a program to add two 8 bit number using 8085 microprocessor.
2 To write a program to subtract two 8 bit numbers using 8085
microprocessor 3 To write an assembly language program for addition of two 16-bit number
without carry using 8086 instruction. 4 To write an assembly language program for subtraction of two 16-bit number
without borrow using 8086 instruction. 5 To write an assembly language program to generate square waves in all lines
of 8255 with different frequency. 6 To study the Mode 0, Mode 1, BSR mode operation of 8255.
CYCLE-2 1 To write a program to add two 8-bit numbers & sum is 16-bit. 2 To write an assembly language program for division of two 8-bit numbers
using 8085 instructions. 3 To write an assembly language program for multiplication of two 16-bit
number using 8086 instructions. 4 To write an assembly language program for division of two 16-bit number
using 8086 instructions.
5 To study the 8253 and its operation (Mode 0, Mode 2, Mode3) 6 To initialize data to registers and memory using immediate, register, direct
and indirect addressing mode of 8051.
CYCLE-3 1 To write an assembly language program for multiplication of two 8-bit
numbers using 8085 instructions 2 To write an assembly language program for 1’s complement of an 8-bit
numbers using 8085 instructions. 3 To write an assembly language program for 2’s complement of an 8-bit
numbers using 8085 instructions.
4 To Write a program to largest number in data array using 8086 microprocessor
5 To study the 8259 programmable interrupt controller.
6 To write a program for relay interface.
CYCLE-4 1 Write a program to find larger of two numbers. 2 Write a program to find the largest value in a data array
3 Write a program to find smallest number in data array.
4 Write a program for sorting an array of numbers in descending order.
5 Write a program for sorting an array of numbers in ascending order.
6 To write an assembly language program for character based LCD Interface.
AIM OF THE EXPERIMENT:
To write a program to add two 8 bit number using 8085 microprocessor.
EQUIPMENT REQUIRED:
8085microprocessor trainer kit.
THEORY:
The 1stnumber 49H is in the memory location 2501H.
The 2ndbinary number 56H is in the memory location 2502H.
The result is to be stored in the memory location 2503H.
PROCEDURE –
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
Exp. No.: 1
TO WRITE A PROGRAM TO ADD TWO 8 BIT
NUMBER USING 8085 MICROPROCESSOR
PROGRAM:
MEMORY ADDRESS
MACHINE CODE
MNEMONICS OPERANDS COMMENTS
2000 21,01,25 LXI H,2501H Get address of first number in H-L pair.
2003 7E MOV A,M 1st number in accumulator. 2004 23 INX H Increment content of H-L
pair. 2005 86 ADD M Add 1st and 2nd numbers. 2006 32,03,25 STA 2503H Store sum in 2503H. 2009 76 HLT Stop the program.
Example-1
Data:
2501→49H
2502→56H
Result:
2503→9FH
CONCLUSION:
Exp. No.: 2
TO WRITE A PROGRAM TO ADD TWO 8 BIT
NUMBER & SUM IS 16 BIT
AIM OF THE EXPERIMENT:
To write a program to add two 8-bit numbers & sum is 16-bit.
APPARATUS REQUIRED:
8085 microprocessor trainer kit.
THEORY:
➢ The 1st no. 98H is in the memory location 2501 H.
➢ The 2nd no. 9A H is in the memory location 2502H.
➢ The results are to be stored in 2503 and 2504 H.
➢ Numbers are represented in hexadecimal.
➢ In this case the sum is to be stored in two consecutive memory locations.
➢ The LSBs of the sum is 32 H and it will be stored in the memory location 2503
H.
➢ The MSB of the sum is 01 which will be stored in 2504 H.
PROCEDURE –
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEX
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
LABELS MNEMONICS OPERANDS COMMENTS
2000 21,01,25 LXI H,2501H Address of 1st number in H-L pair.
2003 0E,00 MVI C,OO MSBs of sum in register C. initial value 00.
2005 7E MOV A,M 1st number in accumulator.
2006 23 INX H Address of 2nd number 2502 in H-L pair.
2007 86 ADD M 1st number+2nd number
2008 D2,0C,20 JNC AHEAD Is carry? No, go to the label AHEAD.
200B 0C INR C Yes ,increment C. 200C 32,03,25 AHEAD STA 2503H LSBs of sum in
2503H. 200F 79 MOV A,C MSBs of sum in
accumulator. 2010 32,04,25 STA 2504H MSBs of sum in
2504H. 2013 76 HLT Halt.
Example-1: Data
2501→98 H
2502→9A H
Result
2503→32 H, LSBs of sum.
2504→01 H, MSBs of sum.
Example-2: Data
2501→F5 H
2502→8A H
Result
2503→7F H, LSBs of sum.
2504→01 H, MSBs of sum.
CONCLUSION:
Exp. No.: 3
TO WRITE A PROGRAM TO SUBTRACT TWO 8
BIT NUMBERS
AIM OF THE EXPERIMENT:
To write a program to subtract two 8 bit numbers using 8085 microprocessor.
EQUIPMENT REQUIRED:
8085 microprocessor trainer kit.
THEORY:
➢ The 1st number 49 H in the memory location 2501 H.
➢ The 2nd binary number 32 H is stored in the memory location 2502 H.
➢ The result is to be stored in the memory location 2503 H.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
MNEMONICS OPERANDS
COMMENTS
2000 21,01,25 LXI H,2501 Get address of 1st in H-L pair. 2003 7E MOV A,M 1st number in accumulator.
2004 23 INX H Content of H-L pair increases from 2501 to 2502 H
2005 96 SUB M 1stnumber - 2ndnumber. 2006 23 INX H Content of H-L pair becomes
2503 H. 2007 77 MOV M,A Store result in 2503 H. 2008 76 HLT Stop the program
Example-1
DATA:
2501→49 H
2502→32 H
RESULT:
2503→17 H
CONCLUSION:
Exp. No.: 4
TO WRITE A PROGRAM FOR MULTIPLICATION
OF TWO 8 BIT NUMBERS
AIM OF THE EXPERIMENT:
To write an assembly language program for multiplication of two 8-bit numbers
using 8085 instructions.
APPARATUS REQUIRED:
8085 trainer kit
THEORY:
The 8085 has no multiplication operation.to get the result of multiplication, we
should use the repetitive addition method. After multiplying two 8-bit numbers it
may generates 1-byte or 2- byte numbers, so we are using two registers to hold the
result. We are serving the data at location memory 8000H and 8001H.The result is to
be stored in the memory location 8050H and 8051H.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
LABLES MNEMONICS OPERANDS COMMENTS
F000 21,00,80 LXI H,8000H Address of 1st number in H-L pair
F003 46 MOV B,M 1st number in register B F004 23 INX H Content of H-L pair
increases from 8000H to 8001H
F005 AF XRA A Initialize 00 data in accumulator/clear accumulator
F006 4F MOV C,A Copy data 00 in register C
F007 86 LOOP ADD M Add accumulator data with memory data
F008 D2,0C,F0 JNC AHEAD Is carry? No, go to AHEAD
F00B 0C INR C Yes, increment C F00C 05 AHEAD DCR B Decrement B F00D C2,07,F0 JNZ LOOP Is count (register B) =0?
No, jump to loop F010 21,50,80 LXI H,8050H Load destination
address F013 71 MOV M,C Store register C content
into memory F014 23 INX H Increase H-L pair F015 77 MOV M,A Store accumulator
content to memory F016 76 HLT Terminate the program
Example 1:
INPUT:
8000→DC
8001→AC
OUTPUT:
8050→93
8051→D0
CONCLUSION:
Exp. No.: 5
TO WRITE A PROGRAM FOR DIVISION OF
TWO 8 BIT NUMBERS
AIM OF THE EXPERIMENT:
To write an assembly language program for division of two 8-bit numbers using
8085 instructions.
APPARATUS REQUIRED:
8085 trainer kit
THEORY:
The 8085 has no division operation to get the result of division, we should use the
repetitive subtraction method.
By using this program, we will get the quotient and the remainder.2504H will hold
the quotient, and 2505H will hold the remainder.
We save the data at memory location 2501H (LSBs of dividend), 2502H (MSBs of
dividend) and 2503H (divisor).The result is to be stored in the memory location
2504H (quotient) and 2505H (remainder).
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
LABLES MNEMONICS OPERANDS COMMENTS
2400 2A,01,25 LHLD 2501 H Get dividend in H-L pair
2403 3A,03,25 LDA 2503 H Get divisor from 2503 H.
2406 47 MOV B,A Divisor in register B 2407 0E,08 MVI C,08 Count=08 in register
C. 2409 29 LOOP DAD H Shift dividend and
quotient left by one bit.
240A 7C MOV A,H Most significant bits of dividend in accumulator.
240B 90 SUB B B Subtract divisor from most significant bits of dividend.
240C DA,11,24 JC AHEAD Is most significant part of dividend > divisor? No, go to AHEAD.
240F 67 MOV H,A Most significant bits of dividend in register H.
2410 2C INR L Yes, add 1 to quotient.
2411 0D AHEAD DCR C Decrement count. 2412 C2,09,24 JNZ LOOP Is count=0? No, jump
to LOOP. 2415 22,04,25 SHLD 2504 H Store quotient in
2504 H. 2418 76 HLT Stop the program
Example 1:
INPUT:
2501→98 H, LSBs of dividend
2502→48 H, MSBs of dividend
2503→1A H, Divisor
OUTPUT:
2504→F2, Quotient
2505→07, Remainder.
CONCLUSION:
Exp. No.: 6 TO WRITE A PROGRAM FOR 1’S
COMPLEMENT OF AN 8 BIT NUMBERS
AIM OF THE EXPERIMENT:
To write an assembly language program for 1’s complement of an 8-bit numbers
using 8085 instructions.
APPARATUS REQUIRED:
8085 trainer kit
THEORY:
To obtain 1’s complement of a number its ‘0’ bits are replaced by ‘1’ and ‘1’ by ‘0’.
The number is placed in the memory location 2501H.
The result is stored in the memory location 2502H.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
MNEMONICS OPERANDS COMMENTS
2000 3A,01,25 LDA 2501 H Get data in accumulator. 2003 2F CMA Take its 1’s complement. 2007 32,02,25 STA 2502 H Store result in 2502 H. 2008 76 HLT Stop.
Example 1:
DATA:
2501→96 H
.
RESULT
2502→69 H
CONCLUSION:
Exp. No.: 7 TO WRITE A PROGRAM FOR 2’S
COMPLEMENT OF AN 8 BIT NUMBERS
AIM OF THE EXPERIMENT:
To write an assembly language program for 2’s complement of an 8-bit numbers
using 8085 instructions.
APPARATUS REQUIRED:
8085 trainer kit
THEORY:
➢ 2’s complement of a number is obtained by adding 1 to the 1’s complement of the
number.
➢ The data is placed in the memory location 2501H.
➢ The result is to be stored in the memory location 2502H.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
MNEMONICS OPERANDS COMMENTS
2000 3A,01,25 LDA 2501 H Get data in accumulator.
2003 2F CMA Take its 1’s complement. 2004 3C INR A Take its 2’s complement. 2005 32,02,25 STA 2502 H Store result in 2502 H. 2008 76 HLT Stop.
Example 1:
DATA:
2501→96 H
RESULT
2502→ 6A H
CONCLUSION:
Exp. No.: 8 TO WRITE A PROGRAM TO FIND LARGE OF
TWO NUMBERS
AIM OF THE EXPERIMENT:
Write a program to find larger of two numbers.
APPARATUS REQUIRED:
8085 microprocessor trainer kit.
THEORY:
➢ The 1st number 98 H was placed in the memory location 2501 H.
➢ The 2nd number 87 H was placed in the memory location 2502 H.
➢ The result is stored in the memory location 2503 H.
➢ The numbers are represented in hexadecimal number system. The first no is moved
from its memory location to the accumulator.
➢ It is compared with second number.
➢ The largest of two is then placed in the accumulator.
➢ From the accumulator the larger number is moved to the desired memory location.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODE
LABELS MNEMONICS OPERANDS COMMENTS
2000 21,01,25 LXI H,2501 H Address of 1st number in H-L pair.
2003 7E MOV A,M 1st number in accumulator.
2004 23 INX H Address of 2nd number in H-L pair.
2005 BE CMP M Compared 2nd number with 1st number. Is the 2nd number > 1st?
2006 D2,0A,20 JNC AHEAD No, larger number is in accumulator. Go to AHEAD
2009 7E MOV A,M Yes, get 2nd number in accumulator.
200A 32,03,25 AHEAD STA 2503H store larger number in 2503H
200D 76 HLT Stop the program.
Example-1:
Data:
2501→98 H
2502→87 H
Result:
2503→98 H and it is stored in the memory location 2503 H.
Example-2:
Data: 2501→A9 H
2502→EB H
Result:
2503→EB H
CONCLUSION:
Exp. No.: 9
TO WRITE A PROGRAM TO FIND LARGEST
VALUE IN A DATA ARRAY
AIM OF THE EXPERIMENT:
Write a program to find the largest value in a data array
EQUIPMENT REQUIRED:
8085 Microprocessor trainer kit
THEORY:
➢ The 1st number of the series is placed in the accumulator and it is compared with
the 2nd number which is in the memory.
➢ The larger of the two is placed in the accumulator.
➢ Again this number which is in the accumulator is compared with the 3rd number
of this series and larger number is placed in the accumulator.
➢ This process of comparison is repeated till all the numbers of the series are
compared and the largest number is stored in the desired memory location.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
LABELS MNEMONICS OPERANDS COMMENTS
2000 21,00,25 LXI H, 2500H Address for count in H-L pair.
2003 4E MOV C,M Count in register C. 2004 23 INX H Address of the 1st
number in H-L pair. 2005 7E MOV A,M 1st number in
accumulator. 2006 OD DCR C Decrement count. 2007 23 INX H Address of next
number. 2008 BE CMP M Compare next
number with previous maximum. Is next number> previous maximum.
2009 D2,0D,20 JNC AHEAD NO, Larger number is in accumulator. GO to the label AHEAD.
200C 7E MOV A,M Yes, get larger number in accumulator.
200D 0D DCR C Decrement Count. 200E C2, 07, 20 JNZ LOOP 2011 32,04,25 STA 2504H Store result in 2504
H. 2014 76 HLT Stop the Program.
Example-1:
Data:
2500→03
2501→98
2502→75
2503→99
Result:
2504→99
CONCLUSION:
Exp. No.: 10
TO WRITE A PROGRAM TO FIND SMALLEST
NUMBER IN A DATA ARRAY
AIM OF THE EXPERIMENT:
Write a program to find smallest number in data array.
APPARATUS REQUIRED: 8085 microprocessor trainer kit.
THEORY:
➢ The 1st number of the series is placed in the accumulator and it is compared with
the 2nd number which is in the memory.
➢ The smaller of the two is placed in the accumulator.
➢ Again this number which is in the accumulator is compared with the 3rd number
of this series and smaller number is placed in the accumulator.
➢ This process of comparison is repeated till all the numbers of the series are
compared and the smallest number is stored in the desired memory location.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: RESET→REL EXMEM→starting address of program (2000) →NEXT→now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
EXAMPLE-1
DATA
2500-03 H
2501-86 H
2502-58 H
2503-75 H
Result
2450-58 H
CONCLUSION-
MEMORY ADDRESS
MACHINE CODES
LABLES MNEMONICS OPERANDS COMMENTS
2000 21,00,25 LXI H,2500 H Get the address for count in the H-L pair
2003 4E MOV C,M Count in register C.
2004 23 INX H Get address of 1st number in H-L pair.
2005 7E MOV A,M 1st number in accumulator.
2006 0D DCR C Decrement count.
2007 23 LOOP INX H Address of next number in H-L pair.
2008 BE CMP M Compare next number with previous smallest. Is previous smallest < next no?
2009 DA,0D,20 JC AHEAD Yes, smaller number in the accumulator .Go to AHEAD.
200C 7E MOV A,M No, get next number in accumulator.
200D 0D AHEAD DCR C Decrement count.
200E C2,07,20 JNZ LOOP
2011 32,50,24 STA 2450 H Store smallest number in 2450 H.
2014 76 HLT Stop the program.
Exp. No.: 11
TO WRITE A PROGRAM FOR ADDITION OF
TWO 16 BIT NUMBER
AIM OF THE EXPERIMENT:
To write an assembly language program for addition of two 16-bit number without
carry using 8086 instruction.
APPARATUS REQUIRED:
8086 trainer kit
THEORY:
➢ We can simply take the numbers from memory to AX and BX register respectively,
then add them using ADD instruction.
➢ When the carry is present store carry into the memory, otherwise result moved to
the memory location.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
EFFECTIVE ADDRESS
MNEMONIC CODES
LABLE MNEMONICS OPERANDS COMMENTS
2000 8B,06,0D,10 MOV AX,[100D] Move the contents of 100D to AX
2004 03,06,0F,10 ADD AX, [100F] Add the contents of 100F with AX
2008 89,06,11,10 MOV [1011], AX Move the content of AX to 1011
200C CC INT 3 Interrupt program
RESULT:
Input:
100D- 23
100E- 34
100F- 12
1010- 22
Output:
1011- 35
1012- 56
CONCLUSION:
Exp. No.: 12
TO WRITE A PROGRAM FOR SUBTRACTION
OF TWO 16 BIT NUMBER
AIM OF THE EXPERIMENT:
To write an assembly language program for subtraction of two 16-bit number
without borrow using 8086 instruction.
APPARATUS REQUIRED:
8086 trainer kit
THEORY:
➢ We can simply take the numbers from memory to AX and BX register respectively,
then subtract them using SUB instruction.
➢ When the borrow is present, the CY flag will be 1, so we can store borrow into the
memory, otherwise result moved to the memory location.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
EFFECTIVE ADDRESS
MNEMONIC CODES
LABLE MNEMONICS OPERANDS COMMENTS
2000 8B,06,0D,10 MOV AX,[100D] Move the contents of 100D to AX
2004 03,06,0F,10 SUB AX, [100F] Add the contents of 100F with AX
2008 89,06,11,10 MOV [1011], AX Move the content of AX to 1011
200C CC INT 3 Interrupt program
RESULT:
Input:
100D- 34
100E- 56
100F- 12
1010- 34
Output:
1011- 22
1012- 22
CONCLUSION:
Exp. No.: 13
TO WRITE A PROGRAM FOR MULTIPLICATION
OF TWO 16 BIT NUMBER
AIM OF THE EXPERIMENT:
To write an assembly language program for multiplication of two 16-bit number
using 8086 instructions.
APPARATUS REQUIRED:
8086 trainer kit.
THEORY:
➢ Initialize the pointer to the memory for data and result. ➢ Load the multiplier value into AX register. ➢ Load multiplicand value in BX register. ➢ Multiply of these two data’s. ➢ Store the result into Memory address 1520.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
EFFECTIVE ADDRESS
OPCODES MNEMONICS OPERANDS COMMENTS
1100 BE 00 15 MOV SI,1500 Load 1500 into SI
1103 AD LOD SW Load the multiplicand value
1104 89 C3 MOV BX, AX Load AX value into BX
1106 AD LOD SW Load the multiplier value
1107 F7 E3 MUL BX Multiply two data
1109 BF 0 5 15 MOV DI, 1520 Load 1520 address into DI
110C 89 05 MOV [DI], AX Store AX value into DI
110E 47 INC DI
110F 47 INC DI Increment the DI
1110 89 15 MOV [DI], BX Store BX value into DI
1112 CC INT 3 Break point
Example 1:
INPUT:
1500→02
1501→00
1502→03
1503→00
OUTPUT:
1520→06
1521→00
CONCLUSION:
Exp. No.: 14
TO WRITE A PROGRAM FOR DIVISION OF
TWO 16 BIT NUMBER
AIM OF THE EXPERIMENT:
To write an assembly language program for division of two 16-bit number using
8086 instructions.
APPARATUS REQUIRED:
8086 trainer kit.
THEORY-
➢ Initialize the pointer to the memory for result. ➢ Load the dividend value into AX register. ➢ Load the divisor value into BX register. ➢ Divide these two data’s. ➢ Store the result into Memory address 1520.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
EFFECTIVE ADDRESS
OPCODES MNEMONICS OPERANDS COMMENTS
1100 BA 00 00 MOV DX, 0000 Clear DX registers
1103 B8 FD FF MOV AX, FFFD Load the dividend in AX
1106 B9 0F 00 MOV BX, 0F Load the divisor value in BX
1109 F7 F1 DIV BX Divide the two data’s
110B BF 00 15 MOV DI, 1520 Load 1520 address into DI
110E 88 05 MOV [DI], AL Load AL value into DI
1110 47 INC DI Increment DI
1111 88 25 MOV [DI], AH Load AH value into DI
1113 47 INC DI Increment DI
1114 89 15 MOV [DI], DX Load DX value into DI
1116 CC INT3 Break point
Example 1:
Input: AX (dividend) =0083 BX (divisor) =02 Output: 1522→41(quotient) 1523→01 (remainder) CONCLUSION-
Exp. No.: 15
TO WRITE A PROGRAM TO FIND SMALLEST
NUMBER IN DATA ARRAY
AIM OF THE EXPERIMENT:
Write a program to find smallest number in data array using 8086 microprocessor.
APPARATUS REQUIRED:
8086 microprocessor trainer kit.
THEORY:
The given data array is 8341, 7258, 4639, 8453, 9630.These are hexadecimal
numbers.
As there are five 16-bit numbers in the given data array, the count is 0005.Two
consecutive memory locations store a 16-bit numbers i.e. two bytes of a 16-bit
number.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
EFFECTIVE ADDRESS
MNEMONICS CODES
LABEL MNEMONICS OPERANDS COMMENTS
0101 B8,FF,FF MOV AX,FFFF Initial value for comparison.
0104 BE,00,02 MOV SI,0200 Memory address in SI.
0107 8B,0C MOV CX,[SI] Count in CX
0109 46 BACK INC SI Increment SI
010A 46 INC SI Increment SI
010B 3B,04 CMP AX,[SI] Compare previous smallest with next number
010D 72,02 JB GO Jump if number in AX is smaller i.e. CF=1
010F 8B,04 MOV AX,[SI] Save next smaller
0111 E2,F6 GO LOOP BACK Jump to back until CX becomes zero.
0113 A3,51,02 MOV [0251],AX Store smallest number in memory
0116 CC INT 3 Interrupt program.
DATA RESULT
0200-05 H 0251-39 H
0201-00 H 0252-46 H
0202-41 H
0203-83 H
0204-58 H
0205-72 H
0206-39 H
0207-46 H
0208-53 H
0209-84 H
020A-30 H
020B-96 H
CONCLUSION-
Exp. No.: 15
TO WRITE A PROGRAM TO FIND LARGEST
NUMBER IN DATA ARRAY
AIM OF THE EXPERIMENT:
Write a program to largest number in data array using 8086 microprocessor.
APPARATUS REQUIRED:
8086 microprocessor trainer kit.
THEORY:
The given data array is: 8341, 7258, 4639, 8453, and 9630. These are hexadecimal
numbers.
Since there are five 16-bit number in a given data array, the count is 0005. Two
consecutive memory locations stores a 16-bit number i.e. two bytes of a 16-bit binary
number.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
ADDRESS MNEMONIC CODES
LABLE MNEMONICS OPERANDS COMMENTS
0101 B8, 00, 00 MOV AX, 0000 Initial value for comparison
0104 BE, 00, 02 MOV SI, 0200 memory address in SI 0107 8B, 0C MOV CX, [SI] count in CX 0109 46 BACK INC SI increment SI 010A 46 INC SI increment SI 010B 3B, 04 CMP AX, [SI] compare previous
largest number with next number
010D 73, 02 JAE GO Jump if number in AX is greater i.e. CF = 0
010F 8B, 04 MOV AX, [SI] save next larger number in AX
0111 E2, F6 GO LOOP BACK jump to BACK until CX become zero
0113 A3, 51, 02 MOV [0251], AX store largest number in memory
0116 CC INT3 interrupt program
DATA: RESULT
0200-05H 0251-30H
0201-00H 2052-96H
0202-41H
0203-83H
0204-58H
0205-72H
0206-39H
0207-46H
0208-53H
0209-84H
020A-30H
020B -96H
CONCLUSION-
Exp. No.: 16
TO WRITE A PROGRAM FOR SHORTING AN
ARRAY OF NUMBERS IN DESCENDING ORDER
AIM OF THE EXPERIMENT:
Write a program for sorting an array of numbers in descending order.
APPARATUS REQUIRED:
8086 microprocessor trainer kit.
THEORY-
➢ Get the first data and compare with the second data. ➢ If the two data are in descending order then no swap. ➢ Else swap the data byte by descending order and then again compare the other
data bytes up to the count. ➢ Do the above the array is a ranged in descending order. ➢ Finally the array is arranged in ascending order.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM:
ADDRESS OPCODE MNEMONICS OPERANDS COMMENTS
1100 BE 00 90 MOV SI, 9001 Load 9000 into SI
1103 8A 0C MOV CL, [SI] Load SI value into CL
1105 BE 00 90 MOV SI, 9000 get the count
1108 8A 14 MOV DL, [SI] Load SI count value into DL
110A 46 INC SI Increment the pointer
110B 8A 04 MOV AL,[SI] first data in AL
110D FE CA DEC DL Decrement DL
110F 74 16 JZ 1127 If count is zero then jump into
1127
1111 46 INC SI Increment SI
1112 8A 1C MOV BL,[SI] Load SI count value into BL
1114 3A C3 CMP AL, BL if al > bl go to (jump1)
1116 72 07 JB 111F
1118 4E DEC SI Decrement SI
1119 88 04 MOV [SI],AL Load ACC value in SI
111B 88 D8 MOV AL, BL Store the greatest data
111D EB 03 JMP 1122 Jump into 1122
111F 4E DEC SI Decrement SI
1120 88 1C MOV [SI], BL Store the smallest data in memory
1122 46 INC SI Increment SI
1123 FE CA DEC DL Decrement DL
1125 75 EA JNZ 1111 If count is not zero then jump into
1111
1127 88 04 MOV [SI], AL Load AL value into SI
1129 FE C9 DEC CL Decrement CL
112B 75 D8 JNZ 1105 If count is not zero then jump into
1105
112D CC INT3 Break point
Input
Enter the count in location 9000. Enter the data location starting from 9001.
Output
Result in descending order in the location 9001.
CONCLUSION-
Exp. No.: 17
TO WRITE A PROGRAM FOR SHORTING AN
ARRAY OF NUMBERS IN ASCENDING ORDER
AIM OF THE EXPERIMENT:
Write a program for sorting an array of numbers in ascending order.
APPARATUS REQUIRED:
8086 microprocessor trainer kit.
Ascending Order
THEORY-
➢ Get the first data and compare with the second data. ➢ If the two data are in ascending order then no swap. ➢ Else swap the data byte by ascending order and then again compare the other
data bytes up to the count. ➢ Do the above the array is arranged in ascending order. ➢ Finally the array is arranged in ascending order.
PROCEDURE:
Assembly language programs for microprocessor 8086 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
RESET→EB/AX (Examine byte)→starting address of program
(2000)→NEXT→Now enter all the machine codes, one after the other followed by the
key ‘NEXT’.
STEP 2-DECLARATION OF INPUTS:
Input values to the program should be declared as →.TYY
STEP 3-EXECUTION OF PROGRAM:
The program can be executed as
GO→starting address of the program (2000)→.TYY
STEP 4-RESULT VERIFICATION OF REGISTERS:
Output of the executed program can be verified as
ER/BX (Register B)→ .TYY→ER/BX→EX/AX (To check the content of register A)
PROGRAM
ADDRESS OPCODE MNEMONICS OPERANDS COMMENTS
1100 BE 00 90 MOV SI, 9000 Load 9000 into SI
1103 8A 0C MOV CL, [SI] Load SI value into CL
1105 BE 00 90 MOV SI, 9000 Get second data
1108 8A 14 MOV DL, [SI] Load SI second data into DL
110A 46 INC SI Increment SI
110B 8A 04 MOV AL, [SI] Load SI value into AL
110D FE CA DEC DL Decrement DL
110F 74 16 JZ 1127 If count is zero then go to 1127
1111 46 INC SI Increment SI
1112 8A 1C MOV BL, [SI] Load SI value into BL
1114 38 D8 CMP AL, BL if AL > BL go to (jump1)
1116 72 07 JNB 111F
1118 4E DEC SI Decrement SI
1119 88 04 MOV [SI],AL Load AL value into SI
111B 88 D8 MOV AL, BL Load BL value into AL
111D EB 03 JMP 1122
111F 4E DEC SI Decrement SI
1120 88 1C MOV [SI], BL Load BL value into SI
1122 46 INC SI Increment SI
1123 FE CA DEC DL Decrement DL
1125 75 EA JNZ 1111 If count is not zero then go to 1111
1127 88 04 MOV [SI], AL Load AL value into SI
1129 FE C9 DEC CL Decrement CL
112B 75 D8 JNZ 1105 If count is not zero then go to 1105
112D CC INT3 Breakpoint
Input
Enter the count in location 9000. Enter the data location starting from 9001.
Output
Result in ascending order in the location 9001.
CONCLUSION-
Exp. No.: 18
TO WRITE A PROGRAM TO GEERATE SQUARE
WAVES IN ALL LINES OF 8255
AIM OF THE EXPERIMENT:
To write an assembly language program to generate square waves in all lines of
8255 with different frequency.
APPARATUS REQUIRED:
8085 trainer kit and 8255 interfacing kit, cables and CRO.
THEORY:
➢ Initialize a control word for 8255, for it to operate in I/O mode and for ports A, B
and C to operate in output mode.
➢ Delay 1 controls the time period for which the square wave remains LOW and HIGH
are to be kept equal, the count in register B and register C are made equal.
➢ For such case there is no need of two subroutines. Only one DELAY subroutine will
be called at two places, i.e. at 2408 and 240F memory addresses.
➢ There will be slight difference in timing of LOW and HIGH due to the instruction
JMP LOOP. If accuracy is desired this can be adjusted by suitable adjustment in the
counts of register B and register C.
➢ The difference can also be minimized by inserting two NOP instructions in DELAY
1 subroutine. The instruction JMP LOOP has been used at the end of the program
to repeat the whole process to generate square wave.
PROCEDURE -
STEP 1- STORAGE OF PROGRAM MACHINE CODES: Machine codes of the program to be executed, should be stored in their memory available on 8085 trainer kit as RESET→REL EXMEM→starting address of program (2000) →NEXT→Now enter all the machine codes, one after the other followed by the key ‘NEXT’. STEP 2-DECLARATION OF INPUTS: Input values to the program should be declared as RESET→REL EXMEM→input (data) address→NEXT→Now enter all the inputs values followed by the ‘NEXT’. STEP 3-EXECUTION OF PROGRAM: The program can be executed as RESET→GO→Starting address of the program (2000)→FILL
STEP 4-VERIFICATION OF OUTPUT Output of the executed program can be verified as
RESET→ REL EXMEM→output (data) address→NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
LABLES MNEMONICS OPERANDS COMMENTS
2400 3E, 98 MVI A,98 H Get control word. 2402 D3, 0B OUT 08 Initialize ports. 2404 3E, 00 LOOP MVI A,00 Move ‘00’ into
accumulator 2406 D3,09 OUT 09 Make PB0 LOW 2408 CD, 00, 25 CALL DELAY 1 Call the DELAY 1
subroutine. 240B 3E, 01 MVI A,01 Move ‘01’ into
accumulator 240D D3, 09 OUT 09 Make PB0 HIGH 240F CD, 09, 25 CALL DELAY 2 Call the DELAY 2
subroutine. 2412 C3, 04, 24 JMP LOOP Jump to LOOP. SUBROUTINES DELAY 1
2500 06, 02 MVI B,02 Get count for delay. 2502 05 GO DCR B Decrement register
B by 1. 2503 C3, 02, 25 JNZ GO Is B=0? No, then
jump to GO. 2506 C9 RET DELAY 2
2509 0E, 02 MVI C,02 Get count for delay 250B 0D BACK DCR C Decrement register
C by 1. 250C C2, 0B, 25 JNZ BACK Is C=0? No, then go
to BACK. 250F C9 RET
CONCLUSION:
Exp. No.: 19
TO STUDY THE 8253 AND ITS OPERATION
(MODE 0, MODE 2, MODE 3)
AIM OF THE EXPERIMENT: To study the 8253 and its operation (Mode 0, Mode 2, Mode3) THEORY: The most prominent features of 8253/54 are as follows:
➢ It has three independent 16-bit down counters.
➢ It can handle inputs from DC to 10 MHz
➢ These three counters can be programmed for either binary or BCD count.
➢ It is compatible with almost all microprocessors.
➢ 8254 has a powerful command called READ BACK command, which allows the user to check the count value, the programmed mode, the current mode, and the current status of the counter.
8253 Architecture:
8253 Pin Description:
Here is the pin diagram of 8254 −
➢ In the above figure, there are three counters, a data bus buffer, Read/Write
control logic, and a control register. Each counter has two input signals - CLOCK & GATE, and one output signal - OUT.
Data Bus Buffer:
It is a tristate, bi-directional, 8-bit buffer, which is used to interface the 8253/54 to the system data bus. It has three basic functions −
• Programming the modes of 8253/54.
• Loading the count registers.
• Reading the count values.
Read/Write Logic:
It includes 5 signals, i.e. RD, WR, CS, and the address lines A0 & A1. In the peripheral I/O mode, the RD and WR signals are connected to IOR and IOW, respectively. In the memory mapped I/O mode, these are connected to MEMR and MEMW.
Address lines A0 & A1 of the CPU are connected to lines A0 and A1 of the 8253/54, and CS is tied to a decoded address. The control word register and counters are selected according to the signals on lines A0 & A1.
A1 A0 RESULT
0 0 Counter 0
0 1 Counter 1
1 0 Counter 2
1 1 Control Word Register
X X No Selection
Control Word Register:
This register is accessed when lines A0 & A1 are at logic 1. It is used to write a command word, which specifies the counter to be used, its mode, and either a read or write operation. Following table shows the result for various control inputs.
A1 A0 RD WR CS RESULT
0 0 1 0 0 Write Counter 0
0 1 1 0 0 Write Counter 1
1 0 1 0 0 Write Counter 2
1 1 1 0 0 Write Control Word
0 0 0 1 0 Read Counter 0
0 1 0 1 0 Read Counter 1
1 0 0 1 0 Read Counter 2
1 1 0 1 0 No operation
X X 1 1 0 No operation
X X X X 1 No operation
Counters:
Each counter consists of a single, 16 bit-down counter, which can be operated in either binary or BCD. Its input and output is configured by the selection of modes stored in the control word register. The programmer can read the contents of any of the three counters without disturbing the actual count in process.
❖ 8253/54 can be operated in 6 different modes. In this chapter, we will discuss these operational modes.
Mode 0 ─ Interrupt on Terminal Count
• It is used to generate an interrupt to the microprocessor after a certain interval.
• Initially the output is low after the mode is set. The output remains LOW after the count value is loaded into the counter.
• The process of decrementing the counter continues till the terminal count is reached, i.e., the count become zero and the output goes HIGH and will remain high until it reloads a new count.
• The GATE signal is high for normal counting. When GATE goes low, counting is terminated and the current count is latched till the GATE goes high again.
Mode 1 – Programmable One Shot
• It can be used as a mono stable multi-vibrator.
• The gate input is used as a trigger input in this mode.
• The output remains high until the count is loaded and a trigger is applied.
Mode 2 – Rate Generator
• The output is normally high after initialization.
• Whenever the count becomes zero, another low pulse is generated at the output and the counter will be reloaded.
Mode 3 – Square Wave Generator
• This mode is similar to Mode 2 except the output remains low for half of the timer period and high for the other half of the period.
Mode 4 − Software Triggered Mode
• In this mode, the output will remain high until the timer has counted to zero, at which point the output will pulse low and then go high again.
• The count is latched when the GATE signal goes LOW.
• On the terminal count, the output goes low for one clock cycle then goes HIGH. This low pulse can be used as a strobe.
Mode 5 – Hardware Triggered Mode
• This mode generates a strobe in response to an externally generated signal.
• This mode is similar to mode 4 except that the counting is initiated by a signal at the gate input, which means it is hardware triggered instead of software triggered.
• After it is initialized, the output goes high.
• When the terminal count is reached, the output goes low for one clock cycle.
CONCLUSION-
Exp. No.: 20
TO STUDY THE MODE 0, MODE 1, BSR MODE
OPERATION OF 8255
AIM OF THE EXPERIMENT: To study the Mode 0, Mode 1, BSR mode operation of 8255. THEORY: PPI 8255 is a general purpose programmable I/O device designed to interface the CPU with its outside world such as ADC, DAC, keyboard etc. We can program it according to the given condition. It can be used with almost any microprocessor. It consists of three 8-bit bidirectional I/O ports i.e. PORT A, PORT B and PORT C. We can assign different ports as input or output functions. The operational modes of 8255 PPI IC can be classified into two broad groups.
• I/O Mode • BIT Set Reset (BSR) modes.
Further I/O mode be subdivided into three groups. • Mode 0 • Mode 1 • Mode 2.
Now we go for some elaborate discussion on all the operational modes of 8255 PPI IC.
http://www.electronicsengineering.nbcafe.in/wp-content/uploads/2018/03/modes.png
I/O MODE: I/O mode refer as input/output mode. So for any input/output operation of microprocessor this mode will activated. As we know the input/output mode can further be subdivided into three groups: Mode 0 – Simple Input/output mode: In this mode the 8 bit port A (PA0-PA7) of 8255 IC can be configured as input or output port. In the similar fashion port B (PB0-PB7) can also be configured as input or output operation. However there is flexibility for the port C. It can be divided into two 4 bit ports, the port C lower (PC0-PC3) and port C upper (PC4-PC7). Each of them can be set independently for input or output operation. In this way can say there are four ports (port-A, port-B, port C lower and port C upper) and each of them can be set either as an input port or an output port. Here these ports are simple input or output ports. That means these ports can work without handshaking. In this mode the outputs are latched whereas the inputs are not latched.
Mode 1 – Strobed Input/output or Handshake mode: Mode 1 is a second mode of 8255 I/O mode. In this mode of operation handshaking is used for the input or output data transfer. Another important think we have to remember that there are two groups in 8255 PPI, Group A and Group B. Both these groups have one 8-bit port and one 4-bit port. Group A consist Port-A and Port C upper. And group B consist Port-B and Port C lower. The 8-bit port of each group can be programmed for input or output operation with latched input and latched output facilities. The bits of Port C are used for handshaking.
http://www.electronicsengineering.nbcafe.in/wp-content/uploads/2018/03/mode-0.png
Mode 2 – Bidirectional Mode: So the final mode of 8255 is Mode 2. In this mode Port A can be programmed to operate as a bidirectional port. When Port A is programmed in this mode of operation, Port B can be used either in Mode 0 or Mode 1. For mode 2 operation PC3 to PC7 bits are used for handshaking. In this mode too both inputs and outputs are latched.
Bit Set Reset Mode: In BSR mode, any of the 8-bits of port C can be Set or reset using a single control word written into the control register. Because of this facility it helps the programmer to control the port C pin output individually. It is also used in mode 1 and mode 2 operation. In bellow you will find the control word format for BSR mode.
CONCLUSION-
http://www.electronicsengineering.nbcafe.in/wp-content/uploads/2018/03/mode-1.pnghttp://www.electronicsengineering.nbcafe.in/wp-content/uploads/2018/03/mode-2.png
Exp. No.: 21
TO STUDY THE 8259 PROGRAMMABLE
INTERRUPT CONTROLLER
AIM OF THE EXPERIMENT: To study the 8259 programmable interrupt controller. THEORY:
The 8259 is known as the Programmable Interrupt Controller (PIC) microprocessor. In 8085 and 8086 there are five hardware interrupts and two hardware interrupts respectively. Bu adding 8259, we can increase the interrupt handling capability. This chip combines the multi-interrupt input source to single interrupt output. This provides 8-interrupts from IR0 to IR7. Let us see some features of this microprocessor.
• This chip is designed for 8085 and 8086.
• It can be programmed either in edge triggered, or in level triggered mode
• We can mask individual bits of Interrupt Request Register.
• By cascading 8259 chips, we can increase interrupts up to 64 interrupt lines
• Clock cycle is not needed.
Block Diagram of 8259 PIC microprocessor:
The Block Diagram consists of 8 blocks which are – Data Bus Buffer, Read/Write Logic, Cascade Buffer Comparator, Control Logic, Priority Resolver and 3 registers- ISR, IRR, IMR.
Data bus buffer: This Block is used as a mediator between 8259 and 8085/8086 microprocessor by acting as a buffer. It takes the control word from the 8085 (let say) microprocessor and transfer it to the control logic of 8259 microprocessor. Also, after selection of Interrupt by 8259 microprocessor, it transfer the opcode of the selected Interrupt and address of the Interrupt service sub routine to the other connected microprocessor. The data bus buffer consists of 8 bits represented as D0-D7 in the block diagram. Thus, shows that a maximum of 8 bits data can be transferred at a time.
Read/Write logic: This block works only when the value of pin CS is low (as this pin is active low). This block is responsible for the flow of data depending upon the inputs of RD and WR. These two pins are active low pins used for read and write operations. Control logic: It is the Centre of the microprocessor and controls the functioning of every block. It has pin INTR which is connected with other microprocessor for taking interrupt request and pin INT for giving the output. If 8259 is enabled, and the other microprocessor Interrupt flag is high then this causes the value of the output INT pin high and in this way 8259 responds to the request made by other microprocessor. Interrupt request register (IRR): It stores all the interrupt level which are requesting for Interrupt services. Interrupt service register (ISR): it stores the interrupt level which are currently being executed. Interrupt mask register (IMR): It stores the interrupt level which have to be masked by storing the masking bits of the interrupt level. Priority resolver: It examines all the three registers and set the priority of interrupts and according to the priority of the interrupts, interrupt with highest priority is set in ISR register. Also, it reset the interrupt level which is already been serviced in IRR. Cascade buffer: To increase the Interrupt handling capability, we can further cascade more number
of pins by using cascade buffer. So, during increment of interrupt capability, CSA lines are used to control multiple interrupt structure. SP/EN (Slave program/Enable buffer) pin is when set to high, works in master mode else in slave mode. In Non Buffered mode, SP/EN pin is used to specify whether 8259 work as master or slave and in Buffered mode, SP/EN pin is used as an output to enable data bus.
PIN DIAGRAM:
Vcc and GND:
It is the Power supply and ground pins. +5V power supply is used in this chip.
D7-0: For communication with the processor, there are Eight bi-directional data pins.
RD*: It is active low-input pin activated by the processor to read the information status from the 8259.
WR*: It is an active low-input pin which is activated by the processor to write the control information to 8259.
CS*: For selecting the chip it is used an active low input pin.
A0: An address input pin used along with RD* and WR* which is used to identify the various command words.
IR0-IR7: There are Eight asynchronous interrupt request inputs. These interrupt requests can be programmed for level-trigger or edge-triggered mode.
INT: A strong active high-output pin which interrupts the processor. Always connected to the INTR interrupt input of 8085. The INT output is only activated when all the given conditions are satisfied correctly.
INTA*: It is termed as an active low-input pin. The 8259 receives the signal from INTA* to the output of 8085. 8085 sends the three consecutive INTA* signals, the 8259sends a 3-byte CALL instruction to the 8085 via D7-0 pins. The two bytes termed as second and third bytes of the CALL instruction contains the ISS address which depends on the IR input of 8259 that is going to be serviced.
CAS:2-0 These are cascaded lines. Used only when there are multiple 8259s in the system. The interrupt control system might have a master 8259 and maximum eight Slave 8259s.
SP*/EN*: SP*/EN* stands for “slave program/enable buffer”. This pin serves dual function. When it is used as EN* pin it provides an active low-output pin that controls the buffer transceivers in the buffer mode.
CONCLUSION-
Exp. No.: 22
TO INITIALIZE DATA TO REGISTERS AND
MEMORY USING DIFFERENT ADDRESSING MODES OF 8051
AIM OF THE EXPERIMENT:
To initialize data to registers and memory using immediate, register, direct and
indirect addressing mode of 8051.
THEORY:
In 8051 there are 1-byte, 2-byte instructions and very few 3-byte instructions are present. The opcodes are 8-bit long. As the opcodes are 8-bit data, there are 256 possibilities. Among 256, 255 opcodes are implemented.
The clock frequency is 12MHz, so 64 instruction types are executed in just 1 µs, and rest are just 2 µs. The Multiplication and Division operations take 4 µs to execute.
In 8051 there are six types of addressing modes.
• Immediate Addressing mode
• Register Addressing mode
• Direct Addressing mode
• Register Indirect Addressing mode
• Indexed Addressing mode
• Implied Addressing mode
Immediate addressing mode:
In this Immediate Addressing Mode, the data is provided in the instruction itself. The data is provided immediately after the opcode. These are some examples of Immediate Addressing Mode.
MOV A, #0AFH;
MOV R3, #45H;
MOV DPTR, #FE00H;
In these instructions, the # symbol is used for immediate data. In the last instruction, there is DPTR. The DPTR stands for Data Pointer. Using this, it points the external data memory location. In the first instruction, the immediate data is AFH, but one 0 is
added at the beginning. So when the data is starting with A to F, the data should be preceded by 0.
Register addressing mode:
In the register addressing mode the source or destination data should be present in a register (R0 to R7). These are some examples of Register Addressing Mode.
MOV A, R5;
MOV R2, #45H;
MOV R0, A;
In 8051, there is no instruction like MOVR5, R7. But we can get the same result by using this instruction MOV R5, 07H, or by using MOV 05H, R7. But this two instruction will work when the selected register bank is RB0. To use another register bank and to get the same effect, we have to add the starting address of that register bank with the register number. For an example, if the RB2 is selected, and we want to access R5, then the address will be (10H + 05H = 15H), so the instruction will look like this MOV 15H, R7. Here 10H is the starting address of Register Bank 2.
Register indirect addressing mode:
In this mode, the source or destination address is given in the register. By using register indirect addressing mode, the internal or external addresses can be accessed. The R0 and R1 are used for 8-bit addresses, and DPTR is used for 16-bit addresses, no other registers can be used for addressing purposes. Let us see some examples of this mode.
MOV 0E5H, @R0;
MOV@R1, 80H
In the instructions, the @ symbol is used for register indirect addressing. In the first instruction, it is showing that theR0 register is used. If the content of R0 is 40H, then that instruction will take the data which is located at location 40H of the internal RAM. In the second one, if the content of R1 is 30H, then it indicates that the content of port P0 will be stored at location 30H in the internal RAM.
MOV XA, @R1;
MOV@DPTR, A;
In these two instructions, the X in MOVX indicates the external data memory. The external data memory can only be accessed in register indirect mode. In the first instruction if the R0 is holding 40H, then A will get the content of external RAM
location40H. And in the second one, the content of A is overwritten in the location pointed by DPTR.
Direct Addressing Mode:
In the Direct Addressing Mode, the source or destination address is specified by using 8-bit data in the instruction. Only the internal data memory can be used in this mode. Here some of the examples of direct Addressing Mode.
MOV 80H, R6;
MOV R2, 45H;
MOV R0, 05H;
The first instruction will send the content of registerR6 to port P0 (Address of Port 0 is 80H). The second one is forgetting content from 45H to R2. The third one is used to get data from Register R5 (When register bank RB0 is selected) to register R5.
Indexed addressing mode:
In the indexed addressing mode, the source memory can only be accessed from program memory only. The destination operand is always the register A. These are some examples of Indexed addressing mode.
MOVC A, @A+PC;
MOVC A, @A+DPTR;
The C in MOVC instruction refers to code byte. For the first instruction, let us consider A holds 30H. And the PC value is1125H. The contents of program memory location 1155H (30H + 1125H) are moved to register A.
Implied Addressing Mode:
In the implied addressing mode, there will be a single operand. These types of instruction can work on specific registers only. These types of instructions are also known as register specific instruction. Here are some examples of Implied Addressing Mode.
RLA;
SWAPA;
These are 1- byte instruction. The first one is used to rotate the A register content to the Left. The second one is used to swap the nibbles in A.
CONCLUSION-
Exp. No.: 23
TO WRITE A PROGRAM FOR RELAY INTERFACE
AIM OF THE EXPERIMENT:
To write a program for relay interface.
APPARATUS REQUIRED:
8051 Trainer Kit and Interfacing Kit.
THEORY:
An electromagnetic relay is a switch which is used to switch high voltage or current
using low power circuits.it magnetically isolates low power circuits from high power
circuits.it is activated by energizing a electromagnet, coil wounded on soft iron core.
A relay should not be directly connected to a microcontroller, it needs a driving circuit
due to the following reasons.
➢ A microcontroller will not able to supply current required for the proper
working of a relay .the maximum current that A89C51 microcontroller can
source or sink is 15mA while a relay needs about 50-100mA current.
➢ A relay is activated by energizing its coil. Microcontroller may stop working by
the negative voltages produced in the relay due to its back emf.
This program reads the status of switches and display on 8 outputs & seven segment
display of the kit.
PROCEDURE:
Assembly language programs for microprocessor 8051 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
Machine codes of the program to be executed, should be stored in their memory
available on 8051 trainer kit as
RESET→EXMEM→starting address of program (2000)→NEXT→Now enter all the
machine codes, one after the other followed by the key ‘NEXT’.
STEP 2-EXECUTION OF PROGRAM:
The program can be executed as
FILL→GO→Starting address of the program (2000)→FILL
STEP 3-VERIFICATION OF OUTPUT:
Output of the executed program can be verified as
RESET→ EXMEM→type the memory address where result will be stored →NEXT
PROGRAM:
MEMORY ADDRESS
MACHINE CODES
LABLES MNEMONICS OPERANDS COMMENTS
2000 90FF03 MOV DPTR,#0FF03H ;INITIALIZE CWR OF 8255
2003 7482 MOVX A,#82H ;PORT B AS INPUT PORT
2005 F0 MOV @DPTR,A 2006 90FF01 LOOP MOVX DPTR’@0FF01H 2009 E0 ANL A,@DPTR ;READ
STATUS IN PORT B
200A 54FF CPL A,@0FFH 200C F4 MOV A 200D 90FF00 MOVX DPTR,#0FF00H ;OUT DATA
AT PORT A 2010 F0 MOV @DPTR,A 2011 FB LCALL R3,A 2012 122017 SJMP DISP ;CALL
DISPLAY ROUTINE
2015 80EF MOV LOOP 2017 902104 DISP MOV DPTR,#3204H ;STORE THE
CODE VALUE IN RAM LOCATION 3D00H
201A EB MOV A,R3 201B 54,F0 ANL A,#0F0H 201D C4 SWAP A 201E 12, 07, E2 LCALL 07E2H 2021 F0 MOVX @DPTR,A 2022 A3 INC DPTR 2023 EB MOV A,R3 2024 54, 0F ANL A,#0FH 2026 12, 07, E2 LCALL 07R2H 2029 F0 MOVX @DPTR,A 202A 90, 32, 00 MOV DPTR,#3200
202D 12, 06, F7 LCALL 06F7H ;Call display routine
2030 220 RET 3200 FF, FF, FF,
FF DFB 0FFH,0FFH,0FFH,0FFH
CONCLUSION:
Exp. No.: 24
TO WRITE A PROGRAM FOR CHARACTER BASED LCD INTERFACE
AIM OF THE EXPERIMENT:
To write an assembly language program for character based LCD Interface.
APPARATUS REQUIRED:
8051 trainer kit and interfacing kit.
THEORY:
➢ LCDs (Liquid Crystal Displays) are used for displaying status or parameters in
embedded systems.
➢ LCDs 16x2 is 16 pin device which has 8 data pins (D0-D7) and control pins (RS, RW,
EN).The remaining 5 pins are for supply and backlight for the LCD.
➢ The control pins help us configure the LCD in command mode or data mode. They
also help configure read mode or write mode also when to read or write.
➢ LCD 16x2 can be used in 4-bit mode or 8-bit mode depending on the requirement of
the application. In order to use it we need to send certain commands to the LCD in
command mode and once the LCD is configured according to our need, we can send
the required data in data mode.
Here we are flashing display of good 51 on seven segment display on executing this
program from address 2000H,”Good51” message flashes on the display of the kit.
PROCEDURE:
Assembly language programs for microprocessor 8051 can be executed on its trainer
kit as per the following steps
STEP 1- STORAGE OF PROGRAM MACHINE CODES:
Machine codes of the program to be executed, should be stored in their memory
available on 8051 trainer kit as
RESET→EXMEM→starting address of program (2000)→NEXT→Now enter all the
machine codes, one after the other followed by the key ‘NEXT’.
STEP 2-EXECUTION OF PROGRAM:
The program can be executed as
FILL→GO→Starting address of the program (2000)→FILL
STEP 3-VERIFICATION OF OUTPUT:
Output of the executed program can be verified as
RESET→ EXMEM→type the memory address where result will be stored →NEXT
PROGRAM:
CONCLUSION:
MEMORY ADDRESS
MACHINE CODES
LABLES MNEMONICS
OPERANDS COMMENTS
2000 90 20 2E HERE MOV DPTR,#202E ;Good 51 message 2003 12 06 F7 LCALL 06F7 ;display routine
2006 7B 00 MOV R3,#0
2008 7A 00 LOOP2: MOV R2,#0 200A DA FE LOOP1: DJNZ R2,200A ;delay code
200C DB FA DJNZ R3,2008 200E 90 20 34 MOV DPTR,#2034 ;blank message
2011 12 06 F7 LCALL 06F7 ;display routine
2014 7B 00 MOV R3,#0 2016 7A 00 LOOP4; MOV R2,#0 2018 DA FE LOOP3 DJNZ R2,2018 ;delay code 201A DB FA DJNZL R3,2016
201C 80 E2 SJMP 2000 202E 41 03 03 85
49 9F DFB 41,03,03,85,49,9
F Data Good 51
2034 FF FF FF FF FF FF
DFB ,FF,FF FF,FF,FF,FF
BLANK DISPLAY