MPMC Newmanual
MPMC Newmanual
MPMC Newmanual
LAB MANUAL
MICROPROCESSORS AND MICROCONTROLLER LABORATORY
DEPARTMENT OF ELECTRONICS AND COMMUNICATION ENGINEERING AARUPADAI VEEDU INSTITUTE OF TECHNOLOGY OLD MAHABALIPURAM ROAD
LIST OF EXPERIMENTS 1. 2. 3. 4. 5. 6. 7. Programming 8085. Programming 8086. Programming 8051. Pc based control systems. Stepper Motor Controller. PC interfacing. AC & DC Motor Speed Control.
LIST OF EXPERIMENTS A.8085 Programming 1. Study of 8085 Microprocessor 2. 16 bit Addition, Subtraction, Multiplication and Division. 3. BCD to HEX and HEX to BCD code conversion. 4. Largest and smallest of a given set of numbers. 5. Square Root of 8-bit number. B.8086 Programming 1. 2. 3. 4. Study of 8086 Microprocessor 32 bit Addition and Addition of 3*3Matrices. Ascending Order and Descending Order. Reversal of a String.
C. Interfacing Experiments 1. 2. 3. 4. 5. Keyboard and Display Interface ADC Interface. DAC Interface. Stepper Motor Interface. Traffic Signal Modeling.
D.8051 Programming Study of 8051. 1. 8 Bit Arithmetic Operations. Addition, Subtraction, Multiplication and Division 2. Addition of two sixteen bit numbers. 3. Transferring a Block of data from (i). Internal to External memory. (ii). External to External memory. (iii). External to Internal memory. 4. 8-bit Conversion (i).ASCII to its equivalent Hexa decimal and (ii). Hexa decimal to its equivalent ASCII 5. Arrange the given numbers in ascending and descending order. 6. Filling External and Internal Memory. E. Interfacing Experiments 1. DAC Interfacing. 2. Stepper Motor Interfacing.
Experiment No:
Date:
AIM: Write a program to add two 8 bit numbers and store the result in memory location 4200 and 4201.
APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable.
ALGORITHM: Step 1: Initialize register C to account for carry. Step 2: The addend is brought to the accumulator. Step 3: Move the augend to any one of the register. Step 4: Perform the addition. Step 5: Store the 8 bit and carry in two memory locations. Step 6: Stop the process.
FLOWCHART
Start
NO
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONIC MVI C,00H LXI H,4150H MOV A,M INX H MOV B,M ADD B JNC LOOP INR C STA 4200H MOV A,C STA 4201H HLT
OPCODE
OPERAND
LOOP
COMMENTS Initialize C reg. to store carry. Initialize HL reg. pair to point 1st data. Move 1st data to accumulator. Increment HL reg. pair to point 2nd data. Move 2nd data to B reg. Add two numbers in A & B. Check whether Carry Flag is reset. Increment C register. Store 8 bit sum to memory location 4200. Move carry to Accumulator. Store carry to memory 4201. Stop the process.
RESULT: Thus the program for addition of two 8-bit numbers has been written and executed and the sum is verified.
OBSERVATION:
DATA
COMMENTS
1. 2. 3. 4. 5.
What is Microprocessor ? What are the basic units of a microprocessor ? What is a bus? What is assembly language? Why data bus is bi-directional?
Experiment No:
Date:
AIM: Write a program to subtract two 8 bit numbers and store the result in memory location 4502 and 4503. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable
ALGORITHM: Step 1: Initialize register C to account for Borrow. Step 2: The Minuend is brought to the accumulator. Step 3: Move the subtrahend to anyone register. Step 4: Perform the subtraction. Step 5: If the carry flag is reset go to step 7, else proceed to the next step. Step 6: Take 2s complement of the accumulator content and increment C register. Step 7: Store the difference & borrow in memory location 4502 and 4503. Step 8: Stop the process.
FLOWCHART
Start
NO
Stop
PROGRAM :
LABEL START
ADDRESS
MNEMONIC MVI C,00H LXI H,4500H MOV A,M INX H MOV B,M SUB B JNC SKIP CMA ADI 01H INR C INX H MOV M,A INX H MOV M,C HLT
OPCODE
OPERAND
SKIP
COMMENTS Initialize C reg to store carry. Initialize HL reg pair to point 1st data. Move 1st data to accumulator. Increment HL reg pair to point 2nd data. Move 2nd to register B. Subtract the subtrahend from minuend. If Carry Flag reset, go to skip. If the Subtraction result in borrow take 2s complement of the accumulator Increment register C Store the result in the desired memory location Store the carry flag to indicate whether the result is positive or negative Stop the process.
RESULT: Thus the subtraction program has been written & executed and the difference and borrow were verified.
VIVA-VOCE QUESTIONS
1. Why address bus is unidirectional? 2. What is the data and address size in 8086? 3. Define machine cycle. 4. Define T-State 5. What is the difference between CPU bus and system bus?
Experiment No:
Date:
AIM: To write an Assembly Language Program for the multiplication of two 8-bit numbers.
APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable.
ALGORITHM: Step 1: Initialize the HL registers pair with the address 4200H. Step 2: Clear C register. Step 3: Get the multiplicand in accumulator and get the multiplier in B-reg. Step 4: Move the Multiplicand to D register. Step 5: Add the content of A register with the content of D register. Step 6: Check the carry flag if CY=0 go to step 7 otherwise increment the C register. Step 7: Decrement the B register. Step 8: If the content of B reg is not equal to zero go to step 5, otherwise go to next step. Step 9: Store the content of accumulator in Next memory location. Step 10: Store the higher order byte in next memory location. Step 11; Stop the Process.
FLOWCHART
Start
NO
Stop
PROGRAM :
LABEL START
ADDRESS
MNEMONIC LXI H,4200H MVI C,00H MOV A,M INX H MOV B,M DCR B MOV D,A ADD D JNC LOOP1 INR C DCR B JNC LOOP2
OPCODE
OPERAND
HLT
COMMENTS Load the HL reg pair with the address 4200H Clear C reg Move the Multiplicand to the accumulator. Increment the HL reg pair. Move the Multiplier to B reg. Decrement B reg. Move the Multiplicand to D reg. Add the content of A reg with D reg. content. If CY=0, program control jumps to label LOOP1. Increment C reg. Decrement B reg. If B is not equal to zero, program control goes to LOOP2; otherwise do next step Increment the HL reg. pair. Store the least significant byte of the product to the memory location pointed by HL pair. Increment the HL reg. Store the most significant byte of the product to the memory location pointed by HL pair. Stop the Process
RESULT: Thus the Assembly Language Program for the multiplication of two 8-bit data had been written and executed & the results were stored in desired memory locations.
VIVA VOCE QUESTIONS 1. What does memory-mapping mean? 2. What is interrupt 1/0? 3. Why EPROM is mapped at the beginning of memory space in 8085
system? 4. What is the need for system clock and how it is generated in 8085? 5. What is the need for Port?
Experiment No:
Date:
AIM: To write an Assembly Language Program for dividing two 8-bit numbers and store the result in memory locations 4502 and 4503.
APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cable. ALGORITHM: Step 1: Initialize the HL register pair with address 4500H. Step 2: Clear the C register. Step 3: Get dividend in accumulator & get divisor in B register. Step 4: Compare dividend and divisor. Step 5: If carry occurs, go to step 8. Otherwise go to next step. Step 6: Subtract divisor from dividend and increment C register. Step 7: Go to step 4. Step 8: Store the remainder in 4503H. Step 9: store the quotient in 4502H. Step 10: Stop the Process.
FLOWCHART
Start
NO
Stop
PROGRAM :
LABEL START
ADDRESS
MNEMONIC LXI H,4500H MVI C,00H MOV A,M INX H MOV B,M CMP B JC SKIP SUB B INR C JMP REPEAT STA 4503H MOV A,C STA 4502H HLT
OPCODE
OPERAND
COMMENTS Load the HL reg pair with the address 4500H. Clear C reg. Move the Dividend to the accumulator. Increment the HL reg pair. Move the Divisor to B reg. Compare B reg. If carry=1, jump to label SKIP. Subtract the divisor from dividend. Increment C reg. Jump to label REPEAT. Store the remainder. Move the Quotient to Accumulator. Store the Quotient. Stop the Process
RESULT: Thus the Assembly Language Program for the Division of two 8-bit data had been written and executed & the results were stored in desired memory locations.
VIVA VOCE QUESTIONS 1. What is a port? 2. Give some examples of port devices used in 8085 microprocessor based
system? 3. Write a short note on INTEL 8255 4. What is the drawback in memory mapped I/0? 5. How DMA is initiated?
Date:
AIM: To write an Assembly Language Program to find the largest number in the given Array. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. Step 2: Get the first Data in accumulator. Step 3: Get the count (i.e., Length of the array) in B register. Step 4: Compare the next data from the memory address pointed by HL pair to the accumulator. Step 5: Check the Carry Flag. If the CF is reset go to step 7 otherwise go to next step. Step 6: Move the data from the memory address pointed by HL pair to the accumulator. Step 7: Decrement the count (content of B register) Step 8: If the content of B register is not equal to zero, go to step 4, otherwise go to next step. Step 9: Store the content of accumulator in the address 5000H. Step 10: Stop the Process.
FLOWCHART Start
YES
Decrement B reg
NO
Is Count=0?
Stop
PROGRAM:
LABEL START ADDRESS MNEMONICS OPCODE OPERAND COMMENTS
4100
LXI H, 4700H
4103 4104
4105 4106
LOOP
4107
4108
CMP M
410B
JNC SKIP
410C
SKIP
Initialize the memory pointer with the address 4700H Get the length of the array in B reg. Increment the HL reg. pair to point the next memory location. Get the first data in Accumulator. Decrement B reg. content by one Increment the HL reg. pair to point the next memory location. Compare the data in accumulator with data in memory. If CF is reset, the program control goes to label SKIP. Move the data from memory to accumulator. Decrement B reg. content If ZF is reset go to LOOP. Store the largest number in 5000H Stop the process
RESULT: Thus the Assembly Language Program to find the largest of the given data had been written and executed & the result was stored in the desired memory location
OBSERVATION:
COMMENTS
OUTPUT
What is Instruction cycle? What is fetch and execute cycle? What is Block and Demand transfer mode DMA? What is the need for timing diagram? How many machine cycles constitute one instruction cycle in 8085?
Experiment No:
Date:
AIM: To write an Assembly Language Program to find the smallest number in the given Array. APPARATUS REQUIRED: ((i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. Step 2: Get the first Data in accumulator. Step 3: Get the count (i.e., Length of the array) in B register. Step 4: Compare the next data from the memory address pointed by HL pair to the accumulator. Step 5: Check the Carry Flag. If the CF is set, go to step 7 otherwise go to next step. Step 6: Move the data from the memory address pointed by HL pair to the accumulator. Step 7: Decrement the count (content of B register) Step 8: If the content of B register is not equal to zero, go to step 4, otherwise go to next step. Step 9: Store the content of accumulator in the address 5000H. Step 10: Stop the Process.
FLOWCHART
Start
YES
Decrement B reg.
NO
Is Count=0?
Stop
PROGRAM:
LABEL START ADDRESS MNEMONICS OPCODE OPERAND COMMENTS
4100
LXI H, 4700H
4103 4104
4105 4106
LOOP
4107
4108
CMP M
410B 410C
SKIP
Initialize the memory pointer with the address 4700H Get the length of the array in B reg. Increment the HL reg. pair to point the next memory location. Get the first data in Accumulator. Decrement B reg. content by one Increment the HL reg. pair to point the next memory location. Compare the data in accumulator with data in memory. If CF is set the program control goes to SKIP. Move the data from memory to accumulator. Decrement B reg. content. If ZF is reset go to LOOP. Store the smallest number in 5000H Stop the process
RESULT: Thus the Assembly Language Program to find the smallest of the given data had been written and executed & the result was stored in the desired memory location.
OBSERVATION:
COMMENTS
OUTPUT
1. Define opcode and operand. 2. What is opcode fetch cycle? 3. What operation is performed during first T -state of every machine cycle
in 8085 ? 4. Why status signals are provided in microprocessor? 5 . How the 8085 processor differentiates a memory access and I/0 Access?
Experiment No:
Date:
8085-ASCENDING ORDER
AIM: To write an Assembly Language Program to arrange the given data in Ascending Order. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. Step 2: Get the count 1, number of repetitions (length of array - 1) in B register. Step 3: Get the count 2, number of comparisons (length of array -1) in C register. Step 4: Save the count 2 in E register. Step 5: Move the content of E to C register. Step 6: Initialize the HL register pair with the address 4701H. Step 7: Move the data from memory location pointed by HL pair to the Accumulator. Step 8: Compare the data from next memory location with the content of Accumulator. Step 9: Check CF. If carry flag is set (accumulator content is smaller than the other number), go to step 12 otherwise do next step. Step 10: Check ZF. If zero flag is set (accumulator content is equal to the other number), go to step 12 otherwise do next step. Step 11: Store the smallest number to the previous memory location & greatest to the current memory location. Step 12: Decrement the number of comparisons (count 2). Step 13: If the number of comparison is not equal to zero, go to step 7, otherwise do the next step. Step 14: Decrement the number of repetitions (count 1). Step 15: If the number of repetitions is not equal to zero, go to step 5, otherwise do next step. Step 16: Stop the Process.
FLOWCHART Start
IS pointer < NO (pointer+1)? YES Decrement COUNT 2 NO Is COUNT 2 = Zero? YES Decrement COUNT 1 NO Is COUNT 1 = zero? YES Stop
Interchange Numbers
PROGRAM :
LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
LXI H, 4700H MOV B,M DCR B MOV C,B MOV E,C MOV C,E LXI H, 4701H MOV A,M INX H CMP M JC SKIP JZ SKIP MOV D,M MOV M,A DCX H MOV M,D INX H DCR C JNZ REPEAT DCR B JNZ LOOP HLT
Initialize HL reg. pair with 4700H B = COUNT 1 for (N-1)repetitions C = COUNT 2 for (N-1)Comparisons
LOOP
4108 REPEAT 410B 410C 410D 411E 4111 4114 4115 4116 4117 4118 4119 411A 411D 411E 4121
SKIP
RESULT: Thus the Assembly Language Program to arrange the given data in ascending order had been written and executed.
OUTPUT
When the 8085 processor checks for an interrupt? What is interrupt acknowledge cycle? How the interrupts are affected by system reset? What is Software interrupts? What is Hardware interrupt?
Experiment No:
Date:
8085-DESCENDING ORDER
AIM: To write an Assembly Language Program to arrange the given data in Descending Order. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with Keyboard. (ii) Power cable. ALGORITHM: Step 1: Initialize the HL register pair with the address 4700H. Step 2: Get the count 1, number of repetitions (length of array - 1) in B register. Step 3: Get the count 2, number of comparisons (length of array -1) in C register. Step 4: Save the count 2 in E register. Step 5: Move the content of E to C register. Step 6: Initialize the HL register pair with the address 4701H. Step 7: Move the data from memory location pointed by HL pair to the Accumulator. Step 8: Compare the data from next memory location with the content of Accumulator. Step 9: Check CF. If carry flag is reset (accumulator content is larger than the other number), go to step 12 otherwise do next step. Step 10: Check ZF. If zero flag is set (accumulator content is equal to the other number), go to step 12 otherwise do next step. Step 11: Store the largest number to the previous memory location & smallest to the current memory location. Step 12: Decrement the number of comparisons (count 2). Step 13: If the number of comparison is not equal to zero, go to step 7, otherwise do the next step. Step 14: Decrement the number of repetitions (count 1). Step 15: If the number of repetitions is not equal to zero, go to step 5, otherwise do next step. Step 16: Stop the Process.
FLOWCHART
Start
IS pointer > NO (pointer+1)? YES Decrement COUNT 2 NO Is COUNT 2 = zero? YES Decrement COUNT 2 NO Is COUNT 1 = zero? YES Stop
Interchange Numbers
PROGRAM :
LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
LXI H, 4700H MOV B,M DCR B MOV C,B MOV E,C MOV C,E LXI H, 4701H MOV A,M INX H CMP M JNC SKIP JZ SKIP MOV D,M MOV M,A DCX H MOV M,D INX H DCR C JNZ REPEAT DCR B JNZ LOOP HLT
LOOP
4108 REPEAT 410B 410C 410D 411E 4111 4114 4115 4116 4117 4118 4119 411A 411D 411E 4121
SKIP
RESULT: Thus the Assembly Language Program to arrange the given data in ascending order had been written and executed.
OUTPUT
What is the difference between Hardware and Software interrupt? What is Vectored and Non- Vectored interrupt? List the Software and Hardware interrupts of 8085? Whether HOLD has higher priority than TRAP or not? What is masking and why it is required?
Date:
AIM: To write an Assembly Language Program to transfer the block of data starting from memory location 4700H to the memory location 4800H. The total number of data (length of block) is stored at 46FFH. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard (ii) Power cord.
ALGORITHM: Step 1: Initialize the HL register pair with the address 46FFH. Step 2: Move the total number of data to the C register. Step 3: Initialize the DE register pair with the address 4800H. Step 4: Get byte from source memory block. Step 5: Store the first data to the destination address. Step 6: Increment the source block pointer. Step 7: Increment the destination block pointer. Step 8: Decrement the C register. Step 9: If ZF=0, go to step 4.otherwise go to next step. Step 10: Stop the Process.
FLOWCHART Start
Decrement C reg.
NO
Is ZF=1? YES
Stop
PROGRAM:
LABEL START
ADDRESS
OPCODE
OPERAND
REPEAT
COMMENTS Initialize the source pointer with the address 4200H. Get count of total number of data bytes in C reg. Point to first source block byte. Initialize the destination pointer with the address 4200H. Get the data byte from source block. Store the data byte to the destination block. Increment source block pointer. Increment destination block pointer. Decrement C register. If ZF=0, program control jump to label REPEAT. Stop the Process
RESULT: Thus the assembly language program to transfer the block of data from memory location 4700H to 4800H had been written and verified
OUTPUT
1. 2. 3. 4. 5.
When the 8085 processor accept hardware interrupt? When the 8085 processor will disable the interrupt system? What is the function performed by Dl instruction? What is the function performed by El instruction? How the vector address is generated for the INTR interrupt of 8085?
AIM: To write an Assembly Language Program to convert a Decimal number to a Hexadecimal number. The Decimal data is stored in 4200H and Hexadecimal data is store in 4250H. APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable. ALGORITHM: Step 1: Get the Decimal data in A reg. and save in E reg. Step 2: Mask the lower nibble of the decimal data in A reg. Step 3: Rotate the upper nibble to the lower position. Step 4: Clear the Accumulator. Step 5: Move the 0AH to C reg. Step 6: Add B reg. content to the A reg. Content. Step 7: Decrement the C reg. If ZF=0 go to step 6. I f ZF=1 go to next step. Step 8: Save the product in B reg. Step 9: Get the decimal in A reg. from E reg. and mask the upper nibble(units). Step 10: Add the units (A reg.) to product (B reg.). Step 11: Stop the Process.
FLOWCHART: Start
Rotate the content of A reg. four times right & save it in B reg.
Decrement C reg.
NO
Check if ZF=1?
Move the decimal data from E reg. to A reg. and mask the upper nibble
Stop
PROGRAM:
LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
4100 4103 4104 4106 4107 4108 4109 410A 410B 410C REPEAT 410E 410F 4110 4113 4114 4115 4117 4118 411B
LDA 4200H MOV E,A ANI F0H RLC RLC RLC RLC MOV B,A XRA A MVI C,0AH ADD B DCR C JNZ REPEAT MOV B,A MOVA,E ANI 0FH ADD B STA 4250H HLT
Get the data in A reg. Save in E reg. Mask the lower nibble Rotate the upper nibble to lower Nibble position save in B reg.
Clear accumulator Get the product of units digit multiplied by 0AH in A reg.
Save the product in B reg. Get the Decimal data in A reg. Mask the upper nibble Get the sum of units digit and product in B reg. Store the Hexadecimal value in memory Stop the Process
RESULT: Thus the Assembly Language Program for Decimal to Hexadecimal conversion had been written and executed & the results were stored in desired memory location. OBSERVATION:
DATA
COMMENTS
1. How clock signals are generated in 8085 and what is the frequency of the 2. 3. 4. 5.
internal clock? What happens to the 8085 processor when it is resetted? What are the operations performed by ALU of 8085? What is a flag? List the flags of 8085
Experiment No: Date: ADDITION OF TWO 16 BIT NUMBERS AIM: To write an Assembly Language Program to add two 16 bit numbers & store the result APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable. ALGORITHM: Step 1: Get the first data in DE pair Step 2: Get the second data in HL pair Step 3: Add the data in DE & HL pair Step 4: Store the result in 4204. Step 5: Stop the Process.
Stop
PROGRAM:
LABEL ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
START
4100H
LHLD 4200H
4103H
XCHG
4104H
LHLD 4202H
4105H
DAD D
Add DE and HL
4106H
SHLD 4204H
4109H
HLT
RESULT: Thus the Assembly Language Program for 16 bit addition had been written and executed & the results were stored in desired memory location.
OUTPUT
1. Which interrupt has highest priority in 8085? What is the priority of other 2. 3. 4. 5.
interrupts? What is an ALE? Explain the function of IO/M in 8085. Where is the READY signal used? What is HOLD and HLDA and how it is used?
Date:
To write an Assembly Language Program to subtract two 16 bit numbers & store the result APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM: Step 1: Get the first data in DE pair Step 2: Get the second data in HL pair Step 3: Subtract the lower order byte of the 1st & 2nd number Step 4: Subtract the higher order byte of the 1st & 2nd number Step 5: Store the result in . in memory locations 4204H and 4205H. Step6: Stop the process
FLOWCHART: Start Get the 1st & 2nd data in DE & HL register pair Subtract the lower order byte of the 1st & 2nd number Subtract the higher order byte of the 1st & 2nd number
Stop
PROGRAM:
LABEL START ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
Get the 1st data in HL reg pair Save in DE reg. pair Get second 16-bit number in HL
4107H
MOV A,E
4108H 410BH
Subtract lower byte of the second number Store the result in L register . Get higher byte of the first number
410CH
MOV A,D
410DH
SBB H
410EH
MOV H,A
410FH 4112H
Store l6-bit result in memory locations 4004H and 4005H Stop the Process
RESULT: Thus the Assembly Language Program for 16 bit subtraction had been written and executed & the results were stored in desired memory location.
OUTPUT
1. What is Polling? 2. What are the different types of Polling? 3. What is the need for interrupt controller?
4. List some of the features of INTEL 8259 (Programmable Interrupt Controller 5. What is a programmable peripheral device ?
Date:
AIM: To write an Assembly Language Program to multiply two 16 bit numbers & store the result APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM: Step 1: Get the first data in HL pair Step 2: Exchange the data with DE pair Step 3:Get the second data in HL pair Step 4: Copy the data in Stack Pointer(SP) Step 5: DAD with SP Step6: If there is carry, goto step7, else goto step8 Step7: Increment BC pair Step8: Decrement DE pair Step9: Move E-reg content to accumulator Step10: OR DE pair content with accumulator. If the result is not zero, goto step5 Step10: Move BC register pair content to HL pair Step11: Store the accumulator content Step12: Stop the process
FLOWCHART: Start
Load the HL pair with 1st data. Exchange the data with DE pair
Get the second data in HL pair. Exchange HL pair content with DE pair
Is there carry?
NO
Move E-reg content to accumulator DE reg pair. . OR accumulator content With DE pair content
Stop
PROGRAM:
LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
Load the HL pair with 1st data Exchange the data with DE pair Get the second data in HL pair Exchange HL pair content with DE pair Initialise HL pair & DE pair with00H Perform double addition If there is no carry, goto L1 Increment the content of BC reg pair by one Decrement the content of DE reg pair by one Move E-reg content to accumulator OR accumulator content with DE reg pair Jump to L2 if not zero Store HL pair content in 4504H Move C-reg content to accumulator Store HL pair content in 4506H Move B-reg content to accumulator Store accumulator content in 4507H Stop the process
4107H 4108H 410BH 410EH 410FH 4112H 4113H 4114H 4115H 4116H 4119H 411CH 411DH 4120H 4121H 4124H
XCHG LXI H, 0000H LXI B, 0000H DAD SP JNC L1 INX B DCX D MOV A,E ORA D JNZ L2 SHLD 4504H MOV A,C STA 4506H MOV A,B STA 4507H HLT
L2:
L1:
RESULT: Thus the Assembly Language Program for 16 bit multiplication had been written and executed & the results were stored in desired memory location.
OUTPUT
1.
Date:
To write an Assembly Language Program to divide two 16 bit numbers & store the quotient & remainder APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM: Step 1: Get the first data in DE pair Step 2: Get the second data in HL pair Step 3: Subtract the lower order byte of the 1st & 2nd number Step 4: Subtract the higher order byte of the 1st & 2nd number Step 5: Store the result in . in memory locations 4204H and 4205H. Step6: Stop the process
FLOWCHART:
Start
YES
NO Count = Count-1
NO
Is count = 0?
YES
Stop
PROGRAM:
LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
Initialise Quotient = 0 Get dividend Get divisor Store divisor Initialise Count = 8
NEXT:
410BH
DAD H
Dividend = Dividend x 2
410CH
MOV A, E
Quotient = Quotient x 2 Is most significant byte of Dividend > divisor No, go to Next step Subtract divisor
4115H
INR E
Quotient = Quotient + 1
SKIP:
4116H 4117H
411AH
MOV A, E
RESULT: Thus the Assembly Language Program for 16 bit division had been written and executed & the results were stored in desired memory location.
OUTPUT
1. 2. 3. 4. 5.
What is synchronous data transfer scheme? What is asynchronous data transfer scheme? What are the operating modes of 8212? Explain the working of a handshake output port What are the internal devices of 8255 ?
Experiment No: Date: SQUARE ROOT OF 8 BIT NUMBER AIM: To write an Assembly Language Program to find square root of a 8 bit number using 8085 APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM: Step 1: Move 01H to both C-reg & E-reg Step 2: Load the accumulator with the content of 4200H Step 3: Subtract accumulator content & C-reg content Step 4: If accumulator content is zero, goto step7, else goto step5 Step 5: Increment C-reg content by two Step6: Increment E-reg content by one & return to label Step7: Move E- reg content to accumulator Step8: Store the accumulator value in 4201H Step9: Stop the process
FLOWCHART:
Start
Move 01H to both C-reg & E-reg. Load the accumulator with the content of 4200H
YES
Stop
PROGRAM:
LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
4100H 4102H 4104H 4107H 4108H 410BH 410CH 410DH 410EH 4111H 4112H 4115H
MVI C,01 MVI E,01 LDA 4200H SUB C JZ LABEL1 INR C INR C INR E JMP LABEL MOV A,E STA 4201H HLT
LABEL:
Move 01 to C- reg Move 01 to E- reg Load the accumulator with the content of 4200 Subtract accumulator content & C-reg content If accumulator content is zero, goto label1 Increment C-reg content by two Increment E-reg content by one Return to label Move E- reg content to accumulator Store the accumulator value in 4201 Stop the process
LABEL1:
RESULT: Thus the Assembly Language Program for square root of a 8 bit number had been written and executed & the results were stored in desired memory location.
What is baud rate? What is USART? What are the control words of 8251A and what are its functions ? Give some examples of input devices to microprocessor-based system 5. What are the tasks involved in keyboard interface?
1. 2. 3. 4.
Date:
To write an Assembly Language Program to convert a BCD number to a hexadecimal number using 8085 APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM Step 1: Initialize memory pointer with 4300H Step 2 Get the MSB & multiply it by 10 using repeated addition Step 3: Add the LSB to the obtained result Step4: Store the hexadecimal value in 4201H Step5: Stop the process
FLOWCHART
Start
Stop
PROGRAM:
LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
4100H 4103H 4104H 4105H 4106H 4107H 4108H 4109H 410AH 410BH 410CH 410DH
LXI H,4300H MOV A,M ADD A MOV B,A ADD A ADD A ADD B INX H ADD M INX H MOV M,A HLT
Initialize memory pointer MSD *2 Store MSB *2 MSB *4 MSB *8 MSB *10 Point to LSB Add to form hex Store the result Stop the process
RESULT: Thus the Assembly Language Program to convert BCD number to hexadecimal. had been written and executed & the results were stored in desired memory location.
1. 2. 3. 4. 5.
How a keyboard matrix is formed in keyboard interface using 8279? What is scanning in keyboard and what is scan time? What are the internal devices of a typical DAC? What is settling or conversion time in DAC? What are the different types of ADC?
Experiment No:
AIM: To write an Assembly Language Program to convert a hexadecimal number to BCD using 8085 APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable.
ALGORITHM Step 1: Initialize memory pointer with 4300H Step 2 Get the hexadecimal number in C-reg Step 3: Perform repeated addition for C number of times Step4: Adjust for BCD in each step Step5: Store the BCD number in the memory location Step6: Stop the process
FLOWCHART
Start
Adjust for BCD in each step & Perform repeated addition for C number of times
Stop
PROGRAM:
LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
4100H 4103H 4104H 4105H 4106H 4107H 4108H 4109H 410AH 410BH 410CH 410DH
LXI H,4300H MOV A,M ADD A MOV B,A ADD A ADD A ADD B INX H ADD M INX H MOV M,A HLT
Initialize memory pointer MSD *2 Store MSB *2 MSB *4 MSB *8 MSB *10 Point to LSB Add to form hex Store the result Stop the process
RESULT: Thus the Assembly Language Program to convert hexadecimal number to BCD. had been written and executed & the results were stored in desired memory location. OBSERVATION:
DATA
COMMENTS
1. 2. 3. 4. 5.
Define stack What is program counter? How is it useful in program execution? How the microprocessor is synchronized with peripherals? What is a minimum system and how it is formed in 8085? Define bit, byte and word.
Date:
AIM: To write an Assembly Language Program to find factorial of a given hexadecimal number
APPARATUS REQUIRED: (i) 8085 Microprocessor kit with keyboard. (ii) Power cable. ALGORITHM Step 1: Initialize memory pointer with 4200H Step2: Get the multiplicand in E-reg & move it to the next memory location. Decrement E-reg by 1 Step3: Move the multiplicand to accumulator Step 4: Get the multiplier in B reg& move to the multiplicand to D-reg. Clear accumulator contents Step5: Add the contents of accumulator & D-reg. Step6: Decrement B-reg by 1& if B-reg content is zero, goto step7, else goto step5 Step7: Move accumulator contents to memory Step8: Decrement E reg & move E-reg contents to C-reg & : Decrement C reg Step9: If C-reg content is zero goto step10, else goto step3 Step10: Stop the process
FLOWCHART
Start
Get the multiplicand in E-reg & move it to the next memory location. Decrement E-reg by 1
Get the multiplier in Breg. Move to the multiplicand D-reg& clear accumulator contents
NO
NO
PROGRAM:
LABEL START: ADDRESS MNEMONIC OPCODE OPERAND COMMENTS
LXI H,4200H MOV E,M INX H MOV M,E DCR E MOV A,M MOV B,E MOV D,A XRA A
LOOP1:
Initialize memory pointer with 4200H Get the multiplicand in E-reg & move it to the next memory location. Decrement E-reg by 1 Move the multiplicand to accumulator Get the multiplier in B reg& move to the multiplicand to D-reg Clear accumulator contents Add the contents of accumulator & D-reg. Decrement B-reg by 1 Check whether B- reg content is zero Move accumulator contents to memory Decrement E-reg by 1 move E-reg contents to Creg Decrement C reg by 1 Check whether C- reg content is zero Stop the process
LOOP2:
RESULT: Thus the Assembly Language Program to convert to find factorial of a given hexadecimal number had been written and executed & the results were stored in desired memory location.
1. What is PSW? 2. What is the purpose of ALE? 3. What is the need for interrupt controller? 4. Give some examples of input devices to microprocessor-based system 5 Give some examples of port devices used in 8085 microprocessor based system?
Experiment No:
Date:
AIM: To write an assembly language program to add two 16 bit numbers and store the sum in the memory location 1200H and carry in 1202H.
APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable. ALGORITHM: Step 1: Initialize the BL reg. with 00H to account for carry. Step 2: Move one of the data to AX reg. Step 3: Move next data to CX reg. Step 4: Clear Carry Flag. Step 5: ADD the CX reg. content with the AX reg. Jump to step 7 if no carry occurs. Otherwise go to next step. Step 6: Increment BL reg. Step 7: Move the sum to 1200H. Step 8: Move the carry to 1202H. Step 9: Stop the Process
FLOWCHART: Start
NO
Increment BL reg
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONICS MOV BL,00H MOV AX,FFFFH MOV CX,001FH CLC ADD AX, CX JNC LOOP INC BL MOV[1200H],AX MOV[1202H],BL HLT
OPCODE
OPERAND
LOOP
COMMENTS Move 00H to BL reg. to account for carry. Move the data FFFFH to AX reg. Move the data 001FH to CX reg. Clear Carry Flag. Add the content of CX to AX. If no carry occurs, jump to LOOP. Increment BL reg. Move the AX content (sum)to 1200H & 1201H. Move the BL content to 1202H. Stop the Process.
RESULT: Thus the Assembly Language Program for Addition of two 16-bit numbers had been written and executed & the results were stored in desired memory locations.
OBSERVATION:
DATA
COMMENTS
1. 2. 3. 4. 5.
What is the name given to the register combination DX:AX? What are the modes in which 8086 can operate? What is the data and address size in 8086? Explain the function of M/IO in 8086. Write the flags of 8086
Experiment No:
Date:
AIM: To write an assembly language program to Subtract two 16 bit numbers and store the difference in the memory location 1200H and borrow in 1202H.
APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable. ALGORITHM: Step 1: Initialize the BL reg with 00H to account for borrow. Step 2: Move Minuend to AX reg. Step 3: Move Subtrahend to CX reg. Step 4: Clear Carry Flag. Step 5: Subtract the CX reg. content from the AX reg. Jump to step 7 if no carry occurs. Otherwise go to next step. Step 6: Increment BL reg. Step 7: Move the difference to 1200H. Step 8: Move the borrow to 1202H. Step 9: Stop the Process
FLOWCHART: Start
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONICS MOV BL,00H MOV AX,FFFFH MOV CX,OO1FH CLC SUB AX, CX JNC LOOP INC BL MOV[1200H],AX MOV[1202H],BL HLT
OPCODE
OPERAND
LOOP
COMMENTS Move 00H to BL reg. to account for carry. Move the data FFFFH to AX reg. Move the data 001FH to CX reg. Clear Carry Flag. Subtract the content of CX from AX. If no carry occurs, jump to LOOP. Increment BL reg. Move the AX content (difference) to 1200H. Move the BL content to 1202H. Stop the Process.
RESULT: Thus the Assembly Language Program for Subtraction of two 16-bit numbers had been written and executed & the results were stored in desired memory locations.
What are the interrupts of 8086? How clock signal is generated in 8086? What is the maximum internal clock frequency of 8086? Write the special functions carried by the general purpose registers of 8086 5. What is pipelined architecture?
1. 2. 3. 4.
Experiment No:
Date:
AIM: To write an assembly language program for Multiplication of two 16 bit numbers using 8086 instruction set. APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable. ALGORITHM: Step 1: Initialize the BL reg. with 00H to account for carry. Step 2: Move Multiplicand to AX reg. Step 3: Move Multiplier to CX reg. Step 4: Clear Carry Flag. Step 5: Multiply the CX reg. with the AX reg. Jump to step 7 if no carry occurs. Otherwise go to next step. Step 6: Increment BL reg. Step 7: Move the content of AX & BL to the specified memory locations. Step 9: Stop the Process
FLOWCHART: Start
NO
Increment BL reg
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONICS MOV BL,00H MOV AX,11A2H MOV CX,11B3H MUL CX JNC LOOP INC BL MOV[1200H],AX MOV[1202],DX MOV[1204H],BL HLT
OPCODE
OPERAND
LOOP
COMMENTS Move 00H to BL reg. to account for carry. Move the data 11A2H to AX reg. Move the data 11B3H to CX reg. Multiply the content of CX to AX reg. If no carry occurs, jump to LOOP. Increment BL reg. Move the AX content to 1200H & 1201H. Move the DX content to 1202H & 1203H. Move the BL content to 1204H. Stop the Process.
RESULT: Thus the Assembly Language Program for Multiplication of two 16-bit numbers had been written and executed & the results were stored in desired memory locations OBSERVATION:
DATA
COMMENTS
1. List the segment registers of 8086 2. Illustrate the use of LEA, LDS, and LES instruction 3. What instructions are needed to add AL, 3L and DL together, and
Place the result in CL? 4. What is purpose served by CX register? 5. Which are pointers present in this 8086?
Experiment No:
Date:
AIM: To write an assembly language program for Division of 32 bit number by 16 bit number using 8086 microprocessor kit.
APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable. ALGORITHM: Step 1: Move the lower order byte of dividend to AX reg. and higher order byte of dividend to DX reg. Step 2: Move Divisor to CX reg. Step 3: Divide the content of AX&DX by CX reg. Step 4: Move the content of AX & DX in the specified memory locations. Step 5: Stop the Process.
FLOWCHART: Start
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONICS MOV AX,FFFFH MOV DX, 0012H MOV CX,01A1H DIV CX MOV[1200H],AX MOV[1202H],DX HLT
OPCODE
OPERAND
COMMENTS Move the data FFFFH to AX reg Move the data 0012H to DX reg Move the Divisor 01A1 to CX reg Divide the content of AX&DX BY CX Move the AX content to 1200H. Move the DX content to 1202H. Stop the Process
RESULT: Thus the Assembly Language Program for the Division of 32 bit number by 16-bit number had been written and executed & the results were stored in desired memory location
OUTPUT
1. 2. 3. 4. 5.
How is register AL is used during execution of XLAT? What is the use of PUSH and POP instruction? What is the purpose of XCHG instruction? What do square brackets means when they appear in an operand? Write a routine to swap nibbles in AL.
Experiment No:
Date:
AIM: To write an assembly language program to reverse a given string using 8086 microprocessor kit APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable.
ALGORITHM: Step 1: AX is initialized with data & AX is moved into DS Step 2: Initialize CX to 5 Step 3: Load the effective address in SI & DI. Add SI with 04 Step 4: Move SI to AL Step 5: Decrement SI & Increment DI. Repeat this until an interrupt is raised Step 6: Stop the Process.
FLOWCHART: Start
CX is initialized to 5
SI is moved to AL
Stop
PROGRAM:
LABEL START:
ADDRESS
MNEMONICS MOV AX ,@ DATA MOV DS, AX MOV CX, 0005H LEA SI, A1 LEA DI, A2 ADD SI, 0004
OPCODE
OPERAND
COMMENTS AX is initialized with data AX is moved into DS CX is initialized to 5 Load the effective address in SI & DI Add SI content with 04 SI is moved to AL AL is moved into DI Decrement SI Increment DI
AGAIN:
MOV AL,[SI] MOV [DI],AL DEC SI INC DI LOOP AGAIN INT 3 END
RESULT: Thus the Assembly Language Program for string reversal has been written and executed & the results were stored in desired memory location
OBSERVATION:
COMMENTS
1. 2. 3. 4. 5.
Mention the features of 8086? Explain how physical address is formed in 8086. What is stack and Subroutine? Difference between Microprocessor & Microcontroller What is the maximum memory addressing and I/O addresing capabilities of 8086?
AIM: To write an assembly language program to add two 32 bit numbers using 8086 APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable.
ALGORITHM: Step 1: AX is initialized with data & AX is moved into DS Step 2: Initialize CX to 5 Step 3: Load the effective address in SI & DI. Add SI with 04 Step 4: Move SI to AL Step 5: Decrement SI & Increment DI. Repeat this until an interrupt is raised Step 6: Stop the Process.
FLOWCHART: Start
Interrupt is raised
Stop
PROGRAM:
LABEL START:
ADDRESS
OPCODE
OPERAND
COMMENTS AX is initialized with data AX is moved into DS Move data2 to BX Data4 is added with BX content Move data1 to CX Data3 is added with CX content Data 4C is moved to AH AL content is moved to DI Interrupt Stop the Process
MOV BX, Data2 ADD BX, Data4 MOV CX,Data1 ADC CX, Data3 MOV AH,4CH MOV [DI],AL
RESULT: Thus the Assembly Language Program for 32 bit addition has been written and executed & the results were stored in desired memory location
1. 2. 3. 4. 5.
What do square brackets means when they appear in an operand? What is the difference between MOV AX, 0 and SUB AX, AX? Write a routine to swap nibbles in AL. Which are pointers present in this 8086? What is meant by Maskable interrupts?
Experiment No:
Date:
8086-ASCENDING ORDER
AIM: To write an assembly language program to arrange the given data in ascending Order using 8086 microprocessor kit.
APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable. ALGORITHM: Step 1: Get the count 1, number of repetitions (length of array - 1) in B register. Step 2: Get the count 2, number of comparisons (length of array -1) in C register. . Step 3: Move the data from memory location pointed to the Accumulator. Step 4: Compare the data from next memory location with the content of Accumulator. Step5: Check CF. If carry flag is set (accumulator content is smaller than the other number), decrement the repitition count Step 6: Check ZF. If zero flag is set (accumulator content is equal to the other number), decrement comparison count, otherwise do next step. Step 7: Store the smallest number to the previous memory location & greatest to the current memory location. Step 8: Stop the Process.
FLOWCHART:
Start
NO
Interchange Numbers
Decrement COUNT 2 NO Is COUNT 2 = Zero? YES Decrement COUNT 1 NO Is COUNT 1 = zero? YES Stop
DATA SEGMENT:
A DB 5 DUP(0) DATA ENDS
CODE SEGMENT:
ASSUME CS: CODE, DS: DATA
PROGRAM:
LABEL START: ADDRESS MNEMONICS MOV CL,05H MOV DL,05H DEC CL MOV BX,00H MOV AL, A[BX] CMP AL, A[BX+1] JB L3 XCHG AL, A[BX+1] OPCODE OPERAND COMMENTS Move 05 to CL Move 05 to DL Decrement CL register Move 00H to BX Move the 1st data to AL Compare the 1st & 2nd data If 1st data is lesser than 2nd, goto L3 If 1st data is greater than 2nd, exchange the data Move AL content to BX Increment BX by 1 Goto L2 Move CL content to DL Decrement DL content If the count is not zero, goto L1 Stop the process
L1: L2:
MOV A[BX], AL L3: INC BX LOOP L2 MOV DL,CL DEC DL LOOP L1 END
RESULT: Thus the Assembly Language Program to arrange the given data in ascending Order had been written and executed & the results were stored in desired memory location
OBSERVATION:
COMMENTS
OUTPUT
1. 2. 3. 4. 5.
From which address the 8086 starts execution after reset? What are the modes in which 8086 can operate? What is the data and address size in 8086? What is purpose served by CX register? Which are pointers present in this 8086
Experiment No:
Date:
8086-DESCENDING ORDER
AIM: To write an assembly language program to arrange the given data in descending Order using 8086 microprocessor kit.
APPARATUS REQUIRED: (i) 8086 Microprocessor kit with keyboard. (ii) Power Cable. ALGORITHM: Step 1: Get the count 1, number of repetitions (length of array - 1) in B register. Step 2: Get the count 2, number of comparisons (length of array -1) in C register. . Step 3: Move the data from memory location pointed to the Accumulator. Step 4: Compare the data from next memory location with the content of Accumulator. Step5: Check CF. If carry flag is set (accumulator content is smaller than the other number), decrement the repitition count Step 6: Check ZF. If zero flag is set (accumulator content is equal to the other number), decrement comparison count, otherwise do next step. Step 7: Store the smallest number to the previous memory location & greatest to the current memory location. Step 8: Stop the Process.
FLOWCHART:
Start
NO
Interchange Numbers
Decrement COUNT 2 NO Is COUNT 2 = Zero? YES Decrement COUNT 1 NO Is COUNT 1 = zero? YES Stop
DATA SEGMENT:
A DB 5 DUP(0) DATA ENDS
CODE SEGMENT:
ASSUME CS: CODE, DS: DATA
PROGRAM:
LABEL START: ADDRESS MNEMONICS MOV CL,05H MOV DL,05H DEC CL MOV BX,00H MOV AL, A[BX] CMP AL, A[BX+1] JA L3 XCHG AL, A[BX+1] OPCODE OPERAND COMMENTS Move 05 to CL Move 05 to DL Decrement CL register Move 00H to BX Move the 1st data to AL Compare the 1st & 2nd data If 1st data is lesser than 2nd, goto L3 If 1st data is greater than 2nd, exchange the data Move AL content to BX Increment BX by 1 Goto L2 Move CL content to DL Decrement DL content If the count is not zero, goto L1 Stop the process
L1: L2:
MOV A[BX], AL L3: INC BX LOOP L2 MOV DL,CL DEC DL LOOP L1 END
RESULT: Thus the Assembly Language Program to arrange the given data in desscending Order had been written and executed & the results were stored in desired memory location
OBSERVATION:
COMMENTS
OUTPUT
1. Suppose that DS=1000h, SS=2000h, BP=1000h and DI=0100h. Determine the memory address accessed by each of the following instruction. MOV AL, [BP + DI] 2. Form a jump instruction that jumps to the address pointed by the BX register? 3. What is the difference between JUMP and LOOP instructions? 4. What is the instruction needed to count the number of 1s found in AL? 5. What conditional jump instruction should be used after CMP AL, 30H to jump when AL equals 30H?
Experiment No:
Date:
AIM: To perform the addition of two 8 bit numbers using immediate addressing and store the result in memory.
APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Clear register Ro Step 2: Get the data in accumulator. Step 3: Add the second data with the first data. Step 4: Make the data pointer to point the address 4500H. Step 5: Check the carry flag. If no carry occur, go to step 7, otherwise do next step. Step 6: Increment the register Ro. Step 7: Store the sum (content of accumulator)to the address pointed by the data pointer. Step 8: Make the data pointer to point the next address by increment the DPTR. Step 9: Store the carry to that address. Step 10: Stop the process.
FLOWCHART:
Start
NO
Stop
PROGRAM:
LABEL START
ADDRESS
OPCODE
OPERAND
COMMENTS
410CH
410DH 410EH
410FH
MOV @ DPTR, A
4110H
NOP
Move the data 00H to reg Ro. Move the first data in accumulator Add the second data with the accumulator. Move the address 4500H to DPTR. If no carry occurs go to address 410C. Increment the DPTR. Move the data from accumulator to the address pointed by DPTR Increment the DPTR Move the content from reg Ro to the accumulator. Move the data from accumulator to the address denoted by DPTR No operation.
RESULT: Thus the addition of two 8-bit data using immediate addressing is performed and executed.
OBSERVATION:
DATA
COMMENTS
1. What is called microcontroller? 2. What is the difference between microprocessor and microcontroller? 3. How many flags are there in 8051 4. How many addressing modes are in 8051 5. What is called Datapointer?
Experiment No:
Date:
AIM: To perform the subtraction of two 8 bit numbers using immediate addressing and store the result in memory.
APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Clear register Ro Step 2: Get the data in accumulator. Step 3: Subtract the second data with the first data. Step 4: Make the data pointer to point the address 4500H. Step 5: Check the carry flag. If no carry occur, go to step 7, otherwise do next step. Step 6: Increment the register Ro. Step 7: Store the difference (content of accumulator)to the address pointed by the data pointer. Step 8: Make the data pointer to point the next address by increment the DPTR. Step 9: Store the borrow to that address. Step 10: Stop the process.
FLOWCHART:
Start
NO
Stop
PROGRAM:
LABEL START
ADDRESS
OPCODE
OPERAND
COMMENTS
430CH
430DH 430EH
430FH
MOV @ DPTR, A
4310H
NOP
Move the data 00H to reg Ro. Move the first data in accumulator Subtract the second data with the accumulator. Move the address 4500H to DPTR. If no carry occurs go to address 410C. Increment the DPTR. Move the data from accumulator to the address pointed by DPTR Increment the DPTR Move the content from reg Ro to the accumulator. Move the data from accumulator to the address denoted by DPTR No operation.
RESULT: Thus the subtraction of two 8-bit data using immediate addressing is performed and executed.
OBSERVATION:
DATA
COMMENTS
1 . How many registers are in 8051 2. What is called Immediate addressing mode? 3. What is called Indirect addressing mode? 4. How many flags are affected in SUB instructions 5. How many bytes is used for the instruction MOV DPTR, #4500H instruction
Experiment No:
Date:
AIM: To write an 8051 assembly language program to multiply two 8-bit numbers and store the result in memory.
APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Get the first data in accumulator. Step 2: Get the second data in reg B. Step 3: Multiply two 8-bit data. Step 4: Get the data pointer to point the address 4500H. Step 5: Store the LSB of the result from the accumulator to the address pointed by DPTR. Step 6: Increment the data pointer. Step 7: Store the MSB of the result in the address pointed by DPTR. Step 8: Stop the process.
FLOWCHART: Start
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONICS MOV A,#data1 MOV F0,#data2 MUL B MOV DPTR, #4500H MOV X@DPTR,A
OPCODE
OPERAND
COMMENTS
430AH 430BH
430DH
MOV X@DPTR,A
430EH
NOP
Move the data 1 to accumulator. Move the data 2 the reg B. Multiply A & B. Move the address 4500H to DPTR. Move the data from accumulator to the address pointed by DPTR Increment the DPTR. Move the content of B reg to the accumulator. Move the data from accumulator to the address denoted by DPTR. No operation.
RESULT: Thus the Assembly Language Program for the multiplication of two 8-bit data has been written and executed & the results are stored in desired memory location.
OBSERVATION:
DATA
COMMENTS
1. What is F0 in this instruction MOV F0,#data? 2. What is called Stack pointer? 3. Define Flag register 4. What is the use of this instruction MOVX@ DPTR, A? 5. What type of addressing mode is used for the instruction MUL AB?
Experiment No:
Date:
AIM: To write an 8051 assembly language program to divide two 8-bit numbers and store the result in memory.
APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Get the first data in accumulator. Step 2: Get the second data in reg B. Step 3: Divide two 8-bit data. Step 4: Get the data pointer to point the address 4500H. Step 5: Store the Quotient of the result from the accumulator to the address pointed by DPTR. Step 6: Increment the data pointer. Step 7: Store the remainder of the result in the address pointed by DPTR. Step 8: Stop the process.
FLOWCHART: Start
Stop
PROGRAM:
LABEL START
ADDRESS
MNEMONICS MOV A,#data1 MOV F0,#data2 DIV B MOV DPTR, #4500H MOV X@DPTR,A
OPCODE
OPERAND
COMMENTS
430AH 430BH
430DH
MOV X@DPTR,A
430EH
NOP
Move the data 1 to accumulator. Move the data 2 the reg B. Divide A by B. Move the address 4500H to DPTR. Move the data from accumulator to the address pointed by DPTR Increment the DPTR. Move the content of B reg to the accumulator. Move the data from accumulator to the address denoted by DPTR. No operation.
RESULT: Thus the Assembly Language Program for the division of two 8-bit data has been written and executed & the results are stored in desired memory location
OBSERVATION:
DATA
COMMENTS
1. The mnemonics used in writing a program is called _______________________ 2. What is called Fetch Cycle? 3. What is called Direct addressing mode? 4. What is called Implied addressing mode? 5. What is the use of POP instruction?
Experiment No:
Date:
8051-ADDITION OF TWO 16-BIT NUMBERS AIM: To perform the addition of two 16 bit numbers using immediate addressing and store the result in memory. APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Clear register Ro Step 2: Make the datapointer to point the address 4500 and move first data LB to R1 register. Step 3: Increment the datapointer and move the firtdata HB to R2 register. Step 4: Increment the datapointer and add the LB of 1st data with LB of 2nd data and store in R1 register. Step 5: Increment the datapointer and add with carry HB of 2nd data with HB of 1st data. Step 6 :Check the carry flag. If no carry occur, go to step8 , otherwise do next step. Step 7: Increment the register Ro. Step 8: Store the sum (content of accumulator)to the address pointed by the data pointer. Step 9: Make the data pointer to point the next address by increment the DPTR. Step 10: Store the carry to that address. Step 11: Stop the process.
FLOWCHART:
Start
Clear R0 reg, Make DP to point 4500H Move 1st data LB to R1 reg .Increment DPTR move 1st data HB to R2 reg.Increment DPTR
NO
Stop
PROGRAM:
LABEL START ADDRESS
OPCODE
OPERAND
COMMENTS
4106
MOV R1,A
4107 4108
4109
MOV R2,A
410A 410B
410C
ADD A,RI
410D
MOV R1,A
410E 410F
Move the data 00H to reg Ro. Move the address 4500H to DPTR Move the data from address pointed by DPTR to the accumulator Move the content of LB of 1st data from accumulator to reg R1 Increment Data pointer Move the data from address pointed by DPTR to the accumulator Move the content of LB of 1st data from accumulator to reg R2 Increment Data pointer Move the data from address pointed by DPTR to the accumulator Add the content of LB of 2nd data from reg R1with accumulator Move the content of accumulator to reg R1 Increment Data pointer Move the data from address pointed by DPTR to the accumulator Add with carry the content of HB of 2nd data from reg R2 with accumulator Move the content of
4110
ADDC A,R2
4111
MOV R2,A
LOOP
4116 4117
4118
MOV A,R2
4119 411A
411B
MOV A,R0
411C 411D
411E
NOP
accumulator to the reg R2. If no carry occurs go to address 4115 Increment reg R0 Move the content of reg R1 to accumulator .Increment the DPTR. Move the data from accumulator to the address pointed by DPTR Move the content of reg R2 to accumulator Increment the DPTR Move the data from accumulator to the address pointed by DPTR Move the content of reg R0 to accumulator Increment the DPTR Move the data from accumulator to the address pointed by DPTR No operation.
RESULT: Thus the addition of two 8-bit data using immediate addressing is performed and executed.
1. 2. 3. 4. 5.
What is the use of POP instruction? What is called Vector Location? Define Interrupt? What is the length of Stack pointer? What is the length of Instruction Register?
Experiment No:
Date:
AIM: To write an Assembly Language Program to transfer the block of data starting from Internal memory location 31 to the memory location 4401H. The total number of data is stored at 4400H. APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Make the data pointer to point the address 4400H. Step 2: Move the total number of data to the R0 register. Step 3: Move the internal RAM Memory location 31 to the register R1. Step 4: Increment the destination block pointer. Step 5: Move the indirect Ram to the accumulator. Step 6: Store the first data to the destination address. Step 7: Increment the source block pointer. Step 8: Decrement the R0 register. Step 9: If ZF=0, go to step 4.otherwise go to next step. Step 10: Stop the Process.
FLOWCHART: Start
Decrement R0 reg
PROGRAM:
LABEL START ADDRESS
4200H 4203
OPCODE
OPERAND
COMMENTS
4204
MOV R0,A
4205
LOOP
420E
NOP
Move the address 4400H to DPTR Move the data from address pointed by DPTR to the accumulator Get count of total number of data bytes in R0 reg. Move immediate data to the reg R1 Increment datapointer Movev indirect RAM to accumulator Move the data from accumulator to the address pointed by DPTR Increment the register R1 Decrement the register R0 If ZF=0,program control jump to label. No operation
RESULT: Thus the assembly language program to transfer the block of data from Internal memory location 31 to 4401H has been written and verified.
OUTPUT
1. 2. 3. 4. 5.
What is the length of Memory Address Register? What is the length of Data buffer Register? What is the length of Program Counter? What is the length of Temporary Register? What is the length of Accumulator?
Experiment No:
Date:
AIM: To write an Assembly Language Program to transfer the block of data starting from memory location 4501H to 4800H. The total number of data is stored at 4500H. APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Make the data pointer to point the address 4500H. Step 2: Move the total number of data to the R0 register. Step 3: Move the Higher order byte of source to R1 register Step 4: Move the Higher order byte of destination to R2 register Step 5: Move the content of register R1 to datapointer. Step 6: Increment the destination block pointer. Step 7: Store the first data to the destination address. Step 8: Decrement the R0 register. Step 9: If ZF=0, go to step 5.otherwise go to next step. Step 10: Stop the Process.
FLOWCHART: Start
Decrement R0 reg
PROGRAM:
LABEL START ADDRESS
4300H 4303H
OPCODE
OPERAND
COMMENTS
4305H 4307H
4308H
MOV R0,A
LOOP
4309H
MOV DPH,R1
430B 430C
430D
MOV DPH,R2
430F
MOV X @DPTR,A
4310 4311
4313
NOP
Move the address 4300H to DPTR Move the higher order byte of Data pointer to R1 register. Move the direct data to R2 register. Move the data from address pointed by DPTR to the accumulator Get count of total number of data bytes in R0 reg. Move the content of the reg R1 to higher order byte of thev Datapointer. Increment datapointer Move the data from address pointed by DPTR to the accumulator Move the content of the register R2 to the destination Move the data from accumulator to the address pointed by DPTR Decrement the register R0 If ZF=0,program control jump to label. No operation
RESULT: Thus the assembly language program to transfer the block of data from memory location 4501H to 4800H has been written and verified.
OUTPUT
1. 2. 3. 4. 5.
How many I/O ports can be accessed in Direct Method? How many lines are there in address bus What is called Program Counter? What is called Instruction Register ? What is the direction of databus?
Experiment No:
Date:
AIM: To write an Assembly Language Program to convert a ASCII number to Hexadecimal number. The ASCII data is stored in 4600H and Hexadecimal data is store in 4601H.
ALGORITHM: Step 1: Make the data pointer to point the address 4600H. Step 2: Move the ASCIIl number to accumulator. Step 3: Move the direct byte 30 to the register R1. Step 4: Subtract with borrow the content of the register R1 with the accumulator. Step 5:Increment the Data pointer. Step 6: Store the equivalent hexa decimal number to the datapointer. Step 7: Stop the Process.
FLOWCHART: START
Increment DPTR
PROGRAM:
LABEL START ADDRESS
4300H 4303
OPCODE
OPERAND
COMMENTS
4304 4306
4307 4308
4309
NOP
Move the address 4600H to DPTR Move the data from address pointed by DPTR to the accumulator Move the direct byte to the register R1 Subtract with borrow the content of register R1 with accumulator Increment datapointer Move the data from accumulator to the address pointed by DPTR No operation
RESULT: Thus the assembly language program to convert a ASCII number to equivalent Hexadecimal number has been written and verified.
1. 2. 3. 4. 5.
Which byte of an instruction is loaded into IR register What is the length of Stackpointer? What is the length of Status word? How many interrupts are there in 8051 What is PSW?
Experiment No:
Date:
AIM: To write an Assembly Language Program to convert a Hexadecimal number to its equivalent ASCII number The Hexadecimal data is stored in 4600H and ASCII data is stored in 4601H.
ALGORITHM: Step 1: Make the data pointer to point the address 4600H. Step 2: Move the content of datapointer to accumulator. Step 3: Move the direct byte 30 to the register R1. Step 4: Add the content of the register R1 with the accumulator. Step 5:Increment the Data pointer. Step 6: Store the equivalent ASCII number to the datapointer. Step 7: Stop the Process.
FLOWCHART: START
Increment DPTR
PROGRAM:
LABEL START ADDRESS
4300H 4303H
OPCODE
OPERAND
COMMENTS
4304H 4306H
4307H 4308H
4309H
NOP
Move the address 4600H to DPTR Move the data from address pointed by DPTR to the accumulator Move the direct byte to the register R1 Add the content of register R1 with accumulator Increment datapointer Move the data from accumulator to the address pointed by DPTR No operation
RESULT: Thus the assembly language program to convert a ASCII number to equivalent Hexadecimal number has been written and verified
1. 2. 3. 4. 5.
How many I/o ports can be accessed by direct method How many I/o ports can be accessed by Memory mapped method What is called Vectored Interrupt? What is called Maskable interrupt? When interrupt service request is serviced
AIM: To write an Assembly Language Program to arrange the given data in Ascending Order. APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Move the datapointer to point to 4500H Step 2: Get the count 1, number of repetitions (i.e., total number of data-1) in R0 register. Step 3: Get the count 2, number of comparisons (i.e., total number of data-1) in A register. Step 4: Save the count 2 in R1 register. Step 5: Move the datapointer to point to 4501H Step 6: Move DPL to R2 Step 7: Move the 1st data to B register and increment DPTR and move the 2nd data to the accumulator. Step 8: Compare the data from next memory location with the content of accumulator. Step 9: Compare and jump if not equal goto step11 else do next step. Step 10: Check ZF. If zero flag is set goto step else do next step Step 11: check CF. If carry flag is not set (accumulator content is smaller than the other number), go to step 13 otherwise do next step. Step 12: Store the smallest number to the previous memory location & greatest to the current memory location. Step 13: Decrement the number of comparisons (count 2). Step 14: If the number of comparison is not equal to zero, go to step 6, otherwise do the next step. Step 15: Decrement the number of repetitions (count 1). Step 16: If the number of repetitions is not completed go to step 3, otherwise do next step. Step 17: Stop the Process.
NO
Interchange Numbers
Decrement COUNT 2 NO Is COUNT 2 Zero? YES Decrement COUNT 1 NO Is COUNT 1 zero? YES Store sum as result
Stop
AGAIN
4106 4107
BACK
MOV DPTR,#4501 MOV R2,DPL MOVX A,@DPTR MOV B,A INC DPTR MOVX A,@DPTR CJNE A,B LOOP1
LOOP1
JZ SKIP JNC SKIP MOV DPL,R2 MOVX @DPTR,A INC DPTR MOV A,B
Interchange numbers if not in order Decrement count2 Decrement count 1 Stop the Process
SKIP
RESULT: Thus the Assembly Language Program to arrange the given data in ascending order has been written and executed & the results are stored in desired memory location.
OUTPUT
1. 2. 3. 4. 5.
Which interrupt remains enabled even after a reset operation What instruction is used to enable the interrupt? What instruction is used to enable the TRAP interrupt? What is the use of RIM instruction? What is the purpose of READY signal?
Date:
AIM: To write an Assembly Language Program to arrange the given data in Descending Order. APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Move the datapointer to point to 4500H Step 2: Get the count 1, number of repetitions (i.e., total number of data-1) in R0 register. Step 3: Get the count 2, number of comparisons (i.e., total number of data-1) in A register. Step 4: Save the count 2 in R1 register. Step 5: Move the datapointer to point to 4501H Step 6: Move DPL to R2 Step 7: Move the 1st data to B register and increment DPTR and move the 2nd data to the accumulator. Step 8: Compare the data from next memory location with the content of accumulator. Step 9: Compare and jump if not equal goto step11 else do next step. Step 10: Check ZF. If zero flag is set goto step else do next step Step 11: check CF. If carry flag is set (accumulator content is smaller than the other number), go to step 13 otherwise do next step. Step 12: Store the smallest number to the previous memory location & greatest to the current memory location. Step 13: Decrement the number of comparisons (count 2). Step 14: If the number of comparison is not equal to zero, go to step 6, otherwise do the next step. Step 15: Decrement the number of repetitions (count 1). Step 16: If the number of repetitions is not completed go to step 3, otherwise do next step. Step 17: Stop the Process.
Start
NO
Interchange Numbers
Decrement COUNT 2 NO Is COUNT 2 zero? YES Decrement COUNT 2 NO Is COUNT 1 zero? YES Store sum as result
Stop
AGAIN
4106 4107
BACK
MOV DPTR,#4501 MOV R2,DPL MOVX A,@DPTR MOV B,A INC DPTR MOVX A,@DPTR CJNE A,B LOOP1
LOOP1
JZ SKIP JC SKIP MOV DPL,R2 MOVX @DPTR,A INC DPTR MOV A,B
Interchange numbers if not in order Decrement count2 Decrement count 1 Stop the Process
SKIP
RESULT: Thus the Assembly Language Program to arrange the given data in descending order has been written and executed & the results are stored in desired memory location.
OUTPUT
1. 2. 3. 4. 5.
What is the purpose of ALE signal? What addressing mode is used in the instruction MOV A,#data1? What addressing mode is used in the instruction MOVX @DPTR, A? What addressing mode is used in the instruction ADD A,R1? What addressing mode is used in the instruction MOV A,@R1?
Date:
AIM: To write an Assembly Language Program to fill the data starting from memory location 4200H to 4300H. The total number of data is stored at 4500H APPARATUS REQUIRED: (i) 8051 Microprocessor. (ii) Power Cable. ALGORITHM: Step 1: Make the data pointer to point the address 4500H. Step 2: Move the total number of data to the R0 register. Step 3: Increment datapointer. Step 4: Move the first data to Accumulator Step 5: Make the data pointer to point the address 4200H. Step 6: Store the first data to the destination address . Step 7: Increment the destination block pointer. Step 8:.Decrement the R0 register. Step 9: If ZF=0, go to step 6.otherwise go to next step. Step 10: Stop the Process.
FLOWCHART: Start
Decrement R0 reg
PROGRAM:
LABEL START ADDRESS
4100H 4103H
OPCODE
OPERAND
COMMENTS
4104H
MOV R0,A
4105H 4106H
4107H
LOOP1
410AH
Move the address 4500H to DPTR Move the data from address pointed by DPTR to the accumulator Move the content of accumulator to R0 register. Increment datapointer Move the data from address pointed by DPTR to the accumulator Move the address 4200H to DPTR Move the data from accumulator to the address pointed by DPTR Increment datapointer Decrement the register R0 If ZF=0,program control jump to label. No operation
410FH
NOP
RESULT: Thus the assembly language program to fill the data starting from memory location 4200H to 4300H and internal memory 30 to 40 has been written and verified.
OUTPUT
1. What is the use of JUMP instruction? 2. How many ports are used in 8051 3. The crystal oscillator is connected to pins__________ &________________ 4. What is the use of RST pin? 5. Pushing the stack refers to___________ operation in a LIFO memory.
Experiment No: STEPPER MOTOR INTERFACE AIM: To run a stepper motor at different speed in two directions.
Date:
APPARATUS REQUIRED: (i) 8085 Microprocessor. (ii) Power Cable. (iii)Stepper Motor Interface. THEORY: The hardware setup consists of a microprocessor motherboard and stepper motor interface board. The motherboard consists of 8085 MPU, 8KB EPROM, 8KB RAM, Keyboard and display controller 8279, 21-key Hex-keypad and six numbers of seven segment LEDs and Bus Expansion connector. The stepper motor interface consists of driver transistors for stepper motor windings and address decoding circuit. The microprocessor output the binary sequence through data bus, which are converted to current pulses by the driver transistors and used to drive stepper motor. The software for the system is developed in 8085 assembly language.
ALGORITHM: Step 1: Initialize HL register pair with address 4150H. Step 2: Initialize register B with total number of data for rotation. Step 3: Get the data for rotation in accumulator. Step 4: Send the data from accumulator to port address of stepper motor interface. Step 5: Initialize DE register pair with data 030H. Step 6: Decrement DE register pair. Step 7: Check the value of DE reg pair. If it is not equal to zero go to step 3. Otherwise go to step 1.
FLOWCHART: Start
Dcrment DE reg
Is NO DE=00
Decrement B reg
Is B=0 YES
NO
PROGRAM:
LABEL START ADDRESS MNEMONICS OPCODE OPERAND COMMENTS
LXI H,411AH 21 MVI B,04H MOV A,M OUT C0H LXI D,0303H NOP DCX D MOV A,E ORA D JNZ DELAY INX H DCR B JNZ REPEAT JMP START 06 7E D3 11 00 1B 7B B2 C2 23 05 C2 C3
1A,41 04
REPEAT
C0 03,03
DELAY
0B,41
05,41 00,41
Initialize HL reg with 411AH. Load data 04H to B reg. Send data to accumulator. Send data to output port. Initialize DE reg pair with 0303H. No operation. Decrement DE reg pair. Move data from E to A. OR the accumulator content with D reg. If DE#0, go to DELAY. Increment HL reg pair. Decrement B reg. If B#0, go to REPEAT. Go to start.
RESULT: Thus the program has been written and the stepper motor is rotated in two directions. The stepper motor is also rotated at different speed.
OBSERVATION: ADDRESS 411AH 411BH 411CH 411DH Stepper motor DATA 0A 09 06 05 05 06 09 0A Rotated in forward COMMENTS Data to rotate in forward direction
INPUT
OUTPUT
Direction
1. What is the use of JUMP instruction? 2. How many machine cycles needed for the execution of ORA? 3. What is the difference between unipolar and two phase steeping scheme? 4. A state during which nothing happens is known as ________________ 5. microprocessor 8085 is the enhanced version of ____________ with essentially the same construction set
Experiment No:
Date:
ADC INTERFACING
AIM:
To write a program to initiate ADC and to store the digital data in memory APPARATUS REQUIRED: 8085 Trainer Kit ADC Interface board
THEORY:
The ADC0809 is an 8-bit successive approximation type ADC with inbuilt 8-channel multiplexer. The ADC0809 is suitable for interface with 8086 microprocessor. The ADC0809 is available as a 28 pin IC in DIP (Dual Inline Package). The ADC0809 has a total unadjusted error of 1 LSD (Least Significant Digit).The ADC0808 is also same as ADC0809 except the error. The total unadjusted error in ADC0808 is 1/2 LSD.
ALGORITHM:
Step 1: Load data 10 to accumulator. Step 2: Send the data from accumulator to output port address of ADC interface Step 3: clear accumulator. Step 4: Load data 10 to accumulator Step 5: Send the data from accumulator to output port address of ADC interface Step 6: Send the data from accumulator to input port address of ADC interface Step 7: AND the contents 01 with accumulator and compare with it. Step 8:check for zero flag if not set go to step 6,otherwise do the next step Step 9: Send the data from accumulator to input port address of ADC interface Step10:store the result and stop the operation
FLOWCHART:
START TT Initialize HL reg with 411AH & Initialize B reg with 04H
Decrement B reg
Is B=0 YES
NO
PROGRAM: ADDRESS LABEL MNEMONICS OPCODE OPERAND COMMENTS 4100 START: MVI A,10 Load 10 to A-reg 4101 OUT C8 Send data to output port 4102 MVI A,10 Load 10 to A-reg 4103 OUT C8 Send data to output port 4104 MVI A,10 Load 10 to A-reg 4105 OUT D0 Send data to output port 4106 XRA A Clear accumulator 4107 XRA A Clear accumulator 4108 XRA A Clear accumulator 4109 MVI A,00 Load 00 to A-reg 410A OUT D0 Send data to output port 410B LOOP IN D8 Send data to input port 410C ANI 01 And 01 with accumulator 410D CPI 01 Compare 01 with accumulator 410E JNZ LOOP If zero flag is not set,go to specified label 4111 IN C0 Send data to input port 4112 STA 4150 Store accumulator 4115 HLT Stop operation
RESULT: Thus the ADC was initiated and the digital data was stored at desired location
OBSERVATION: Compare the data displayed at the LEDs with that stored at location 4150
VIVA VOCE QUESTIONS 1. 2. 3. 4. 5. What is the difference between LXI H,4100 and LHLD 4100? What are the application of microprocessor? What is called LIFO? How many interrupts are there in 8085? Which group of ports of 8255 PPI can be operated in 2modes
Date
AIM:
To interface DAC with 8085 to demonstrate the generation of square,saw tooth and rectangular wave.
THEORY: DAC 0800 is an 8-bit DAC and the output voltage variation is between -5V and + 5V. the output voltage varied in steps of 10/256=0.04(appx). The digital data input and the corresponding output voltages are presented in the table.1 Input Data in HEX 00 01 02 7F FD FE FF Output Voltage -5.00 -4.96 -4.92 0.00 4.92 4.96 5.00
Referring to Table.1, with 00H as input to DAC,the analog output is -5v. Similarly, with FFH as input ,The output is +5v. Outputting digital data 00 and FF at regular intervals to DAC,results in different waveforms namely square,triangular etc. the port address of DAC is 08H. ALGORITHM: 1. SQUARE WAVE GENERATION: (i) Load the initial value (00) to accumulator and move it to DAC (ii) Call the delay program (iii) Load the final value (FF) to accumulator and move it to DAC (iv) Call the delay program (v) Repeat steps 2 to 5
2. SAW TOOTH WAVE GENERATION: (i) Load the initial value 00 to accumulator (ii) Move the accumulator content to DAC (iii) Increment the accumulator content by 1 (iv) Repeat steps 3 and 4.
3. TRIANGULAR WAVE GENERATION: (i) (ii) (iii) (iv) (v) (vi) (vii) (viii) Load the initial value (00) to accumulator Move the accumulator content to DAC Increment the accumulator content by1 If accumulator content is zero proceed to next step. Else go to step 3 Load value (FF) to accumulator Move the accumulator content to DAC Decrement the accumulator content by 1 If accumulator content is zero go to step2. Else go to step 7.
Decrement C reg
YES
Is B#0 NO Return
YES
Increment A
YES
YES
YES
PROGRAM: Square Wave Generation: ADDRESS LABEL 4100 START: 4101 4102 4103 4104 4105 4106 4107 4108 4109 MNEMONICS MVI A,00 OUT C8 CALL DELAY OUT C8 CALL DELAY JMP START DELAY: MVI B,05 L1: MVI C,FF L2: DCR C JNZ L2 OPCODE OPERAND COMMENTS Load 00 to accumulator Send data to output port Call operation Load 00 to accumulator Call operation Jump tothe label specified Load 05 to B-reg Load FF to C-reg Dec C-reg Jump to the label specified if zero flag is not set Decrement B-reg Jump to the label specified if zero flag is not set Return to the mainprogram
410A 410B
DCR B JNZ L1
410C
RET
Saw tooth Wave Generation: ADDRESS LABEL 4100 START: 4101 4102 4103 L1 MNEMONICS OPCODE OPERAND COMMENTS MVI A,00 Load 00 to accumulator OUT C8 Load 00 to accumulator INR A Increment A-reg JNZ L1 Jump to the label specified if zero flag is not set JMP START Jump to the label specified
4104
Triangular Wave Generation: ADDRESS LABEL 4100 START: 4101 4102 4103 4104 L1: MNEMONICS OPCODE MVI L,00 MOV A,L OUT C8 INR L JNZ L1 OPERAND COMMENTS Load 00 to Lreg Load 00 to accumulator Send data to output port incrementLreg Jump to the label specified if zero flag is not set Load FF to Lreg Load FF to accumulator Send data to output port Decrement Lreg Jump to the label specified if zero flag is not set Jump to the label specified
410E
JMP START
RESULT: Thus the square,triangular and saw tooth waveform were generated by interfacing DAC with 8085 trainer kit..
1. 2. 3. 4. 5.
Write the two ways to initialize stack pointer at FFFFH? Define instruction set? is it possible to check AC flag status of 8085,how?? What is difference between PUSH and POP instruction? How many flags are affected for the HALT?
Date:
APPARATUS REQUIRED: (i) 8085 Microprocessor. (ii) Power Cable. (iii)Traffic Light Interfacing. (iii)Lights for traffic signaling. THEORY: The traffic lights are interfaced to Microprocessor system through buffer and ports of programmable peripheral Interface 8255.So the traffic lights can be automatically switched ON/OFF in desired sequence. The Interface board has been designed to work with parallel port of Microprocessor system. The hardware of the system consists of two parts. The first part is Microprocessor based system with 8085. Microprocessor as CPU and the peripheral devices like EPROM, RAM, Keyboard & Display Controller 8279, Programmable as Peripheral Interface 8255, 26 pin parallel port connector, 21 keys Hexa key pad and six number of seven segment LEDs. The second part is the traffic light controller interface board, which consist of 36 LEDs in which 20 LEDs are used for vehicle traffic and they are connected to 20 port lines of 8255 through Buffer. Remaining LEDs are used for pedestrian traffic. The traffic light interface board is connected to Main board using 26 core flat cables to 26-pin Port connector. The LEDs can be switched ON/OFF in the specified sequence by the Microprocessor.
ALGORITHM: Step 1: Initialize HL pair with 4500H and C reg with 02H. Step 2: Send control word to CNT register. Step 3: Send data to port A & B. Step 4: Call delay and increment HL pair. Step 5: Decrement C reg. Step 6: if C=0 go to step 1, otherwise go to step 3.
FLOWCHART:
Start
Call Delay
Increment HL pair
Decrement C register
If C=0 YES
NO
Is DE=0
NO
NO
Return
PROGRAM:
LABEL START ` ADDRESS MNEMONICS OPCODE OPERAND COMMENTS
4100H 4103H 4105H 4106H 4108H 4109H 410AH 410CH 410DH 410EH 4110H 4113H 4114H 4115H 4118H 411BH 411DH 4120H 4121H 4122H 4123H 4126H 4127H 412AH
LXI H,4500H MVI C,02H MOV A,M OUT CNT INX H MOV A,M OUT APRT INX H MOV A,M OUT BPRT CALL DELAY INX H DCR C JNZ LOOP1
21 0E 7E D3 232 7E D3 23 7E D3 CD 23 0D C2
00,45 02
0F
LOOP1
0C
0D 1B,41
Initialize HL pair with 4500H Move data 02H to C reg. Get data from memory to accumulator. Send data to control reg. Increment HL pair reg. Get data from memory to accumulator. Send data to port A. Increment HL pair reg. Get data from memory to accumulator. Send data to port B. Call delay routine. Increment HL pair reg. Decrement HL pair. If C reg value is non-zero go to loop1. Go to start. Move 05H to B reg. Initialize DE reg pair with FFFFH. Decrement DE reg pair. Move data from D to A reg. OR reg with E reg. Go to loop2. Decrement B reg. Go to loop3. Return.
JMP START C3 MVI B.05H 06 LXI D,FFFFH 11 DCX D MOV A,D ORA E JNZ LOOP2 DCR B JNZ LOOP3 RET 1B 7A B3 C2 05 C2 09
20,41 1D,41
RESULT: Thus the Assembly Language Program to control the traffic light system has been written and output is verified.
OBSERVATION: ADDRESS 4500H 4501H 4502H 4503H 4504H DATA 80 1A A1 81 5A COMMENTS Control Word First Step Data First Step Data Second Step Data Second Step Data
6. What is the use of latch? 7. What is the use of IN/OUT instruction? 8. What addressing mode is used for the instruction MOV A,M? 9. What is called buffer? 10. How many modes are there in 8255
Date
AIM: To interface 8279 Programmable Keyboard Display Controller to 8085 Microprocessor. APPARATUS REQUIRED: 8085 Microprocessor toolkit 8279 Interface Board VXT Parallel bus Regulated D.C Power supply
THEORY:
& 310
A programmable keyboard and display interfacing chip. It Scans and encodes up to a 64-ey keyboard and it controls up to a 16-digit numerical display. The keyboard section has a builtin FIFO 8 character buffer. The display is controlled from an internal 16x8 RAM has stores the coded display information.
PROGRAM: ADDRESS LABEL 4100 START: 4101 4102 4103 4104 4107 4108 4109 410A LOOP: MNEMONICS OPCODE LXI H,4130H MVI D,0FH MVI A,10H OUT C2H MVI A,CCH OUT C2H MVI A,90H OUT C2H MOV A,M OPERAND COMMENTS Initialize HL pair with 4130H Load 0F to D-reg Load 10 to A-reg Send data to outport port Load CC to A-reg Send data to outport port Load 90 to A-reg Send data to outport port Move content of memory to accumulator Send data to outport port Call delay Increment HL pair Decrement D-reg Jump to the label specified if zero flag is not set Jump to the label specified Load A0 to B-reg Load FF to C-reg Decrement C-reg Jump to the label specified if zero flag is not set Decrement B-reg Jump to the label specified if zero flag is not set Return to the main program
JMP START DELAY: MVI B,A0H LOOP2 MVI C,FFH LOOP1 DCR C JNZ LOOP1
4131 4132
4135
RET
RESULT: Thus 8279 controller was interfaced with 8085 and program for rolling display was executed successfully.
OBSERVATION:
Pointer equal to 4130 FF repeated eight times. 4130 -FF 4131 -FF 4132 FF 4133 -FF 4134 -FF 4135 -FF 4136 -FF 4137 -FF 4138 -FF 4139 -FF 413A -FF 413BFF 413C -FF 413D-FF 413E-FF 413F-FF
11. What is the use of CALL instruction? 12. What is the use of RETURN instruction? 13. What addressing mode is used for the instruction MVI C,FF? 14. What is the Jump range? 15. How many machine cycles are used for the instruction LXI H,4130H
Date
AIM: To exhibit the RAM direct addressing and bit addressing schemes of 8051 microcontroller. APPARATUS REQUIRED: 8051 Interfacing board power supply
ALGORITHM: For Bit addressing, select Bank 1 of RAM by setting 3rd bit of PSW Using Register 0 of Bank 1 and accumulator perform addition For direct addressing provide the address directly(30 in this case) Use the address and Accumulator to perform addition Verify the results.
PROGRAM: Bit Addressing: SETB PSW.3 MOV R0,#data1 MOV A,#data2 ADD A,R0 MOV DPTR,#4500 MOVX @DPTR,A SJMP HERE
HERE:
Direct Addressing: MOV 30,#data1 MOV A,#data2 ADD A,30 MOV DPTR,#4500 MOVX @DPTR,A SJMP HERE
HERE:
OBSERVATION:
OUTPUT: 79(4500)
OUTPUT: 79(4500)
RESULT: Thus the program to exhibit different RAM addressing schemes of 8051 was executed.