Sie sind auf Seite 1von 124

EE8681 – Microprocessors and Microcontrollers Laboratory

SYLLABUS

EE8681- MICROPROCESSORS AND MICRO CONTROLLERS LABORATORY

OBJECTIVES:

 To provide training on programming of microprocessors and microcontrollers and


understand the interface requirements.
 To simulate various microprocessors and microcontrollers using KEIL or
Equivalent simulator.

LIST OF EXPERIMENTS:

1. Simple arithmetic operations: addition / subtraction / multiplication / division.

2. Programming with control instructions:


(i) Ascending / Descending order, Maximum / Minimum of numbers
(ii) Programs using Rotate instructions
(iii)Hex / ASCII / BCD code conversions.
3. Interface Experiments: with 8085
(i) A/D Interfacing & D/A Interfacing.
4. Traffic light controller.
5. I/O Port / Serial communication
6. Programming Practices with Simulators/Emulators/open source
7. Read a key, interface display
8. Demonstration of basic instructions with 8051 Micro controller execution, including:
(i) Conditional jumps, looping
(ii) Calling subroutines.
9. Programming I/O Port 8051
(ii (i) study on interface with A/D & D/A
(ii) study on interface with DC & AC motor .
10. Application hardware development using embedded processors

TOTAL: 60 PERIODS
OUTCOMES:

 Ability to understand and apply computing platform and software for


engineering problems.
 Ability to programming logics for code conversion.
 Ability to acquire knowledge on A/D and D/A.
 Ability to understand basics of serial communication.
 Ability to understand and impart knowledge in DC and AC motor interfacing.
 Ability to understand basics of software simulators

Department of Electrical and Electronics Engineering-SPCET


8085 MICROPROCESSOR
Ex. No: 1 SIMPLE ARITHMETIC OPERATIONS

AIM:

To write an assembly language program to add, subtract, multiply and divide the given
data stored at two consecutive locations using 8085 microprocessor.

a. 8 BIT DATAADDITION:

ALGORITHM:

1. Initialize memory pointer to data location.


2. Get the first number from memory in accumulator.
3. Get the second number and add it to the accumulator.
4. Store the answer at another memory location.
FLOW CHART:
START

[C]00H

[HL]4500H

[A] [M]

[HL] [HL]+1

[A] [A]+[M]

Is there a
NO
Carry ?

YE S

[C][C]+1

[HL][HL]+1

[M] [A]

[HL] [HL]+1

[M][C]

STOP
PROGRAM:

ADDRESS OPCODE LABEL MNEMONICS OPERAND COMMENT


4100 0E START MVI C, 00 Clear C reg.
4101 00
4102 21 LXI H, 4500 Initialize HL reg. to
4103 00 4500
4104 45
4105 7E MOV A, M Transfer first data to
accumulator
4106 23 INX H Increment HL reg. to
point next memory
Location.
4107 86 ADD M Add first number to
acc. Content.
4108 D2 JNC L1 Jump to location if
4109 0C result does not yield
410A 41 carry.
410B 0C INR C Increment C reg.
410C 23 L1 INX H Increment HL reg. to
point next memory
Location.
410D 77 MOV M, A Transfer the result from
acc. to memory.
410E 23 INX H Increment HL reg. to
point next memory
Location.
410F 71 MOV M, C Move carry to memory
4110 76 HLT Stop the program
b. 8 BIT DATA SUBTRACTION

ALGORITHM:

1. Initialize memory pointer to data location.


2. Get the first number from memory in accumulator.
3. Get the second number and subtract from the accumulator.
4. If the result yields a borrow, the content of the acc. is complemented and 01H is added
to it (2’s complement). A register is cleared and the content of that reg. is incremented
in case there is a borrow. If there is no borrow the content of the acc. is directly taken as
the result.
5. Store the answer at next memory location.
EE8681 – Microprocessors and Microcontrollers Laboratory
Laboratory Laboratory
START
FLOW CHART:

[C]00H

[HL]4500H

[A][M]

[HL][HL]+1

[A][A]-[M]

Is there a N
Borrow? O

YES

Complement [A]
Add 01H to [A]

[C][C]+1

[HL][HL]+1

[M][A]

[HL] [HL]+1

[M][C]

STOP
EE8681 – Microprocessors and Microcontrollers Laboratory

PROGRAM:

ADDRESS OPCODE LABEL MNEMONICS OPERAND COMMENT


4100 0E START MVI C, 00 Clear C reg.
4101 00
4102 21 LXI H, 4500 Initialize HL reg. to
4103 00 4500
4104 45
4105 7E MOV A, M Transfer first data to
accumulator
4106 23 INX H Increment HL reg. to
point next mem.
Location.
4107 96 SUB M Subtract first number
from acc. Content.
4108 D2 JNC L1 Jump to location if
4109 0F result does not yield
410A 41 borrow.
410B 0C INR C Increment C reg.
410C 2F CMA Complement the Acc.
content
410D C6 ADI 01H Add 01H to content of
410E 01 acc.
410F 23 L1 INX H Increment HL reg. to
point next mem.
Location.
4110 77 MOV M, A Transfer the result from
acc. to memory.
4111 23 INX H Increment HL reg. to
point next mem.
Location.
4112 71 MOV M, C Move carry to mem.
4113 76 HLT Stop the program

8
c. 8 BIT DATA MULTIPLICATION:

ALGORITHM:

LOGIC: Multiplication can be done by repeated addition.

1. Initialize memory pointer to data location.


2. Move multiplicand to a register.
3. Move the multiplier to another register.
4. Clear the accumulator.
5. Add multiplicand to accumulator
6. Decrement multiplier
7. Repeat step 5 till multiplier comes to zero.
8. The result, which is in the accumulator, is stored in a memory location.

9
FLOW CHART:
START

[HL] 4500

BM

[HL]  [HL]+1

A  00

[A]  [A] C+[


M] 00

Is there NO
any
carry YES
C  C+1

B  B-1

N
O IS B=0

YES

10
A

[HL][HL]+1

[M] [A]

[HL] [HL]+1

[M][C]

STOP

11
PROGRAM:

ADDRESS OPCODE LABEL MNEMONICS OPERAND COMMENT


4100 21 START LXI H, 4500 Initialize HL reg. to
4101 00 4500
4102 45
4103 46 MOV B, M Transfer first data to
reg. B
4104 23 INX H Increment HL reg. to
point next mem.
Location.
4105 3E MVI A, 00H Clear the acc.
4106 00
4107 0E MVI C, 00H Clear C reg for carry
4108 00

4109 86 L1 ADD M Add multiplicand


multiplier times.
410A D2 JNC NEXT Jump to NEXT if there
410B 0E is no carry
410C 41
410D 0C INR C Increment C reg
410E 05 NEXT DCR B Decrement B reg
410F C2 JNZ L1 Jump to L1 if B is not
4110 09 zero.
4111 41
4112 23 INX H Increment HL reg. to
point next mem.
Location.
4113 77 MOV M, A Transfer the result from
acc. to memory.
4114 23 INX H Increment HL reg. to
point next mem.
Location.
4115 71 MOV M, C Transfer the result from
C reg. to memory.
4116 76 HLT Stop the program

12
d. 8 BIT DIVISION:
ALGORITHM:

LOGIC: Division is done using the method Repeated subtraction.


1. Load Divisor and Dividend
2. Subtract divisor from dividend
3. Count the number of times of subtraction which equals the quotient
4. Stop subtraction when the dividend is less than the divisor .The dividend now becomes
the remainder. Otherwise go to step 2.
5. Stop the program execution.

13
START
FLOWCHART:

B  00

[HL] 4500

AM

[HL]  [HL]+1

M  A-M

[B]  [B] +1

IS No
A<0
Yes
AA+ M
YES

B  B-1

[HL] [HL]+1

[M] [A]

[HL] [HL]+1

[M][B]

STOP
14
PROGRAM:

ADDRESS OPCODE LABEL MNEMONICS OPERAND COMMENTS


4100 06 MVI B,00 Clear B reg for quotient
4101 00
4102 21 LXI H,4500 Initialize HL reg. to
4103 00 4500H
4104 45
4105 7E MOV A,M Transfer dividend to
acc.
4106 23 INX H Increment HL reg. to
point next mem.
Location.
4107 96 LOOP SUB M Subtract divisor from
dividend
4108 04 INR B Increment B reg
4109 D2 JNC LOOP Jump to LOOP if
410A 07 result does not yield
410B 41 borrow
410C 86 ADD M Add divisor to acc.
410D 05 DCR B Decrement B reg
410E 23 INX H Increment HL reg. to
point next mem.
Location.
410F 71 MOV M,A Transfer the remainder
from acc. to memory.
4110 23 INX H Increment HL reg. to
point next mem.
Location.
4111 70 MOV M,B Transfer the quotient
from B reg. to memory.
4112 76 HLT Stop the program

15
OBSERVATION:

ADDITION:

S.NO INPUT OUTPUT


ADDRESS DATA ADDRESS DATA
1 4500 40 4502 60
4501 20 4503 00
2 4500 FF 4502 01
4501 02 4503 01

SUBTRACTION:

S.NO INPUT OUTPUT


ADDRESS DATA ADDRESS DATA
1 4500 04 4502 03
4501 01 4503 00
2 4500 06 4502 04
4501 07 4503 01

MULTIPLICATION:

S.NO INPUT OUTPUT


ADDRESS DATA ADDRESS DATA
1 4500 02 4502 08
4501 04 4503 00
2 4500 FF 4502 01
4501 FF 4503 FE

DIVISION:

S.NO INPUT OUTPUT


ADDRESS DATA ADDRESS DATA
1 4500 06 4502(Remainder) 00
4501 02 4503(Quotient) 03
2 4500 23 4502 01
4501 11 4503 02

16
Viva Questions

1. What is Microprocessor?
2. Define Bus. What are the buses used in 8085 Microprocessor?
3. What Are The Various Registers In 8085?
4. What Are The Various Flags Used In 8085?
5. Define Program counter and Stack Pointer.
6. Define Tristate Logic?
7. What is the use of ALE?
8. What are the Addressing Modes used in 8085 microprocessor?
9. Operation of 8085 microprocessor.
10. What are the addressing capacity of 8085 microprocessor?
11. What are different data types in microprocessor?
12. What is the word or data length of 8085 microprocessor?
13. Why it is called 8085 microprocessor?
14. What is the function of an address bus and a data bus in a microprocessor 8085?
15. List the allowed register pairs of 8085.
16. What is an Opcode?
17. What is an instruction?
18. How does the microprocessor communicate with the memory and input / output
devices?
19. What is mnemonic?
20. In how many groups can the signals of 8085 be classified?
21. Why crystal is preferred for clock source?
22. Principles used in Multiplication and Division Program used in 8085 microprocessor

RESULT:

Thus the addition, subtraction, multiplication and division of two numbers were performed
using the 8085 microprocessor.

17
Ex. No: 2 Ascending / Descending order, Maximum / Minimum of numbers

AIM:

To write an assembly language program to arrange an array of data in ascending and


descending order and to find the smallest and largest data among the array.

a. ASCENDING ORDER

ALGORITHM:

1. Get the numbers to be sorted from the memory locations.


2. Compare the first two numbers and if the first number is larger than second then I
interchange the number.
3. If the first number is smaller, go to step 4
4. Repeat steps 2 and 3 until the numbers are in required order

18
FLOWCHART: START

[HL]  4200H
[C]  [HL]

[C]  [C] -1

[D]  [C]

[HL] 4201H

[A] 
[HL]
[HL  [HL] +
1

Ye
Is
s
[A] < [HL]?
No

[B]
[HL]
[HL]  [HL] - 1
[HL]  [A]
[HL]  [B]

[HL]  [HL] + 1

[D]  [D] – 01 H

19
A

IS No
[D] = 0?

Yes

[C]  [C]-1

IS No
[C] = 0?
Yes

STOP

20
PROGRAM:

ADDRESS OPC LABEL MNEMONICS OPERA COMMENTS


ODE ND
4100 21 LXI H,4200 Set pointer for array
4101 00
4102 42
4103 4E MOV C,M Load the Count
4104 0D DCR C Decrement Count
4105 51 LOOP 3 MOV D,C Transfer data from C to
D
4106 21 LXI H,4201 Load data from 4201
4107 01
4108 42
4109 7E LOOP2 MOV A,M Copy content of M to A
410A 23 INX H Increment HL reg. to
point next memory
location
410B BE CMP M Compare M & A
410C DA JC LOOP1 If A is lesser than M
then go to loop1
410D 14
410E 41
410F 46 MOV B,M Transfer data from M to
D reg
4110 77 MOV M,A Transfer data from acc
to M
4111 2B DCX H Decrement HL pair
4112 70 MOV M,B Transfer data from B to
M
4113 23 INX H Increment HL pair
4114 15 LOOP1 DCR D Decrement Dreg
4115 C2 JNZ LOOP2 If D is not zero go to
4116 09 loop2
4117 41
4118 0D DCR C Decrement Creg
4119 C2 JNZ LOOP3 If C is not Zero go to
411A 05 loop3
411B 41
411C 76 HLT Stop the program

21
b. DESCENDING ORDER

ALGORITHM:

1. Get the numbers to be sorted from the memory locations.


2. Compare the first two numbers and if the first number is smaller than second then I
interchange the number.
3. If the first number is larger, go to step 4
4. Repeat steps 2 and 3 until the numbers are in required order

22
FLOWCHART: START

[HL]  4200H
[C]  [HL]

[C]  [C] -1

[D]  [C]

[HL] 4201H

[A] 
[HL]
[HL  [HL] +
1

N
Is
o
[A] < [HL]?
Yes

[B]
[HL]
[HL]  [HL] - 1
[HL]  [A]
[HL]  [B]

[HL]  [HL] + 1

[D]  [D] – 01 H

23
A

IS No
[D] = 0?

Yes

[C]  [C]-1

IS No
[C] = 0?
Yes

STOP

24
PROGRAM:

ADDRESS OPC LABEL MNEMONICS OPERA COMMENTS


ODE ND
4100 21 LXI H,4200 Set pointer for array
4101 00
4102 42
4103 4E MOV C,M Load the Count
4104 0D DCR C Decrement Count
4105 51 LOOP 3 MOV D,C Transfer data from C to
D
4106 21 LXI H,4201 Load data from 4201
4107 01
4108 42
4109 7E LOOP2 MOV A,M Copy content of M to A
410A 23 INX H Increment HL reg. to
point next memory
location
410B BE CMP M Compare M & A
410C D2 JNC LOOP1 If A is lesser than M
then go to loop1
410D 14
410E 41
410F 46 MOV B,M Transfer data from M to
D reg
4110 77 MOV M,A Transfer data from acc
to M
4111 2B DCX H Decrement HL pair
4112 70 MOV M,B Transfer data from B to
M
4113 23 INX H Increment HL pair
4114 15 LOOP1 DCR D Decrement D reg
4115 C2 JNZ LOOP2 If D is not zero go to
4116 09 loop2
4117 41
4118 0D DCR C Decrement C reg
4119 C2 JNZ LOOP3 If C is not Zero go to
411A 05 loop3
411B 41
411C 76 HLT Stop the program

25
c. LARGEST ELEMENT IN AN ARRAY

ALGORITHM:
1. Place all the elements of an array in the consecutive memory locations.
2. Fetch the first element from the memory location and load it in the accumulator.
3. Initialize a counter (register) with the total number of elements in an array.
4. Decrement the counter by 1.
5. Increment the memory pointer to point to the next element.
6. Compare the accumulator content with the memory content (next
element).
7. If the accumulator content is smaller, then move the memory content
(largest element) to the accumulator. Else continue.
8. Decrement the counter by 1.
9. Repeat steps 5 to 8 until the counter reaches zero
10. Store the result (accumulator content) in the specified memory location.

26
FLOW CHART:
START

[HL]  [4200H]

[B] M , [B ]= [B ] – 1

[A]  [HL]

[HL  [HL] + 1

NO IS
[A] < [HL]?
YES

[A] [HL]

[B]  [B]-1

NO
IS
[B] = 0?
YES

[4300]  [A]

STOP

27
PROGRAM:

ADDRE OPCO LABEL MNEM OPER COMMENTS


SS DE ONICS AND
4101 21 LXI H,4200 Initialize HL reg. to
4102 00 4200H
4103 42
4104 46 MOV B,M Initialize B reg with no. of
4105 05 DCR B comparisons(n-1)
4106 23 INX H
4107 7E MOV A,M Transfer first data to acc.
4108 23 LOOP1 INX H Increment HL reg. to point
next memory location
4109 BE CMP M Compare M & A
410A D2 JNC LOOP If A is greater than M then go
410B 0E to loop
410C 41
410D 7E MOV A,M Transfer data from M to A reg
410E 05 LOOP DCR B Decrement B reg
410F C2 JNZ LOOP1 If B is not Zero go to loop1
4110 08
4111 41
4112 32 STA 4300 Store the result in a memory
4113 00 location.
4114 43
4115 76 HLT Stop the program

28
d. SMALLEST ELEMENT IN AN ARRAY

ALGORITHM:
1. Place all the elements of an array in the consecutive memory locations.
2. Fetch the first element from the memory location and load it in the accumulator.
3. Initialize a counter (register) with the total number of elements in an array.
4. Decrement the counter by 1.
5. Increment the memory pointer to point to the next element.
6. Compare the accumulator content with the memory content (next
element).
7. If the accumulator content is smaller, then move the memory content
(largest element) to the accumulator. Else continue.
8. Decrement the counter by 1.
9. Repeat steps 5 to 8 until the counter reaches zero
10. Store the result (accumulator content) in the specified memory location.

29
FLOW CHART:
START

[HL]  [4200H]

[B] M, [B]=[B] – 1

[A]  [HL]

[HL  [HL] + 1

YES IS
[A] > [HL]?

NO
[A] [HL]

[B]  [B]-1

IS NO
[B] = 0?

YES
[4300]  [A]

STOP

30
PROGRAM:

ADDRE OPCO LABEL MNEM OPER COMMENTS


SS DE ONICS AND
4101 21 LXI H,4200 Initialize HL reg. to
4102 00 4200H
4103 42
4104 46 MOV B,M Initialize B reg with no. of
4105 05 DCR B comparisons(n-1)
4106 23 INX H
4107 7E MOV A,M Transfer first data to acc.
4108 23 LOOP1 INX H Increment HL reg. to point
next memory location
4109 BE CMP M Compare M & A
410A DA JC LOOP If A is greater than M then go
410B 0E to loop
410C 41
410D 7E MOV A,M Transfer data from M to A reg
410E 05 LOOP DCR B Decrement B reg
410F C2 JNZ LOOP1 If B is not Zero go to loop1
4110 08
4111 41
4112 32 STA 4300 Store the result in a memory
4113 00 location.
4114 43
4115 76 HLT Stop the program

31
OBSERVATION:

A. ASCENDING ORDER

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4200(Array Size) 05
4201 08 4201 02
4202 02 4202 08
4203 1F 4203 10
4204 2A 4204 1F
4205 10 4205 2A

B. DESCENDING ORDER

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4200(Array Size) 05
4201 08 4201 2A
4202 02 4202 1F
4203 1F 4203 10
4204 2A 4204 08
4205 10 4205 02

32
C. SMALLEST ELEMENT

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4200(Array Size) 05
4201 08
4202 02 4300 02
4203 1F
4204 2A
4205 10

D. LARGEST ELEMENT

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4200(Array 05
Size)
4201 08
4202 02 4300 2A
4203 IF
4204 2A
4205 10

33
Viva Questions

1. What are the ways used to clear the accumulator? Atleast three
2. When does the carry flag is set?
3. Explain CMP instruction?
4. Explain about STA and LDA?
5. Specify the type of addressing mode for following instructions.
(i) STA 4000
(ii) LXI H, 4300
(iii) ADI 32
(iv) ADD B
(v) MOV B,C
(vi) MOV B,M
(vii) LDA 4000
(viii) MVI C, 00
6. How many machine cycles needed for following instructions.
(ix) STA 4000
(x) LXI H, 4300
(xi) ADI 32
(xii) ADD B
(xiii) MOV B,C
(xiv) MOV B,M
(xv) LDA 4000
(xvi) MVI C, 00
7. Difference between MVI and LXI instruction
8. Difference between INX and INR
9. H=00, L=00
INX H INR H
H=? H=?
L=? L=?

10. H=00, L=00


DCX H DCR H
H=? H=?
L=? L=?
11. Explain about logic concepts used for ascending , descending, largest and smallest
program in 8085.

RESULT:

Thus the sorting operations of arranging an array in ascending, descending order and the
largest and smallest element were found using the 8085 microprocessor.

34
Ex. No: 3 FIND THE NUMBER OF EVEN AND ODD NUMBER IN A
BLOCK OF DATA

AIM:

To find the number of even and odd number, and number of positive and negative
numbers in a block of data.

a. Odd and Even Number

ALGORITHM:
1. Start.
2. Load the given data.
3. Clear the data in accumulator.
4. Move the content of accumulator to D and B register.
5. Increment HL register pair and move the content of memory to accumulator.
6. Rotate the obtain data in the form of RAR.
7. If carry occur increment B else increment D.
8. Decrement C, if C ≠0 go to step 5. Else increment HL pair.
9. Move the content of D to memory and increment HL pair and move the content B to
memory.
10. Stop.

35
START

[HL]  [4200H]
[C]  [HL]

[A] 
00H
[B]  [A]
[D]  [A]

[HL  [HL] + 1
[A]  [HL]

Rotate the A right


through carry

Yes No
Is CY=1
[B] [B]+1, for odd [D] [D]+1, for even

[C]  [C]-1

Is No
[C] = 0?

Yes

[HL] [HL]+1, [HL]  D


[HL] [HL]+1, [HL]  B

STOP
36
ADDRE OPCO LABEL MNEM OPER COMMENTS
SS DE ONICS AND
4100 21 LXI H,4200 Load the number of data
4101 00
4102 42
4103 4E MOV C, M Move M to C
4104 AF XRA A Exclusive OR Reg A
4105 57 MOV D, A Move A to D
4106 47 MOV B, A Move A to B
4107 23 L3 INX H H Increment H
4108 7E MOV A,M Move M to A
4109 1F Rotate right through
RAR carry
410A D2 JNC L1 Jump no carry
410B 11
410C 41
410D 14 INR D Increment D
410E C3 JMP L2 Jump to L2
410F 12
4110 41
4111 04 L1 INR B Increment B
4112 0D L2 DCR C Decrement C
4113 C2 JNZ L3 Jump non Zero
4114 07
4115 41
4116 23 INX H Increment H
4117 72 LOOP MOV M, D Move D to M
4118 24 INX H H Increment H
4119 70 MOV M, B Move B to M
411A 76 HLT Halt the program

37
b. Positive and Negative Number

ALGORITHM:
1. Start.
2. Load the given data.
3. Clear the data in accumulator.
4. Move the content of accumulator to D and B register.
5. Increment HL register pair and move the content of memory to accumulator.
6. Rotate the obtain data in the form of RAL.
7. If carry occur increment B else increment D.
8. Decrement C, if C ≠0 go to step 5. Else increment HL pair.
9. Move the content of D to memory and increment HL pair and move the content B to
memory.
10. Stop.

38
START

[HL]  [4200H]
[C]  [HL]

[A] 
00H
[B]  [A]
[D]  [A]

[HL  [HL] + 1
[A]  [HL]

Rotate the A left


through carry

Yes No
Is CY=1
[B] [B]+1, [D] [D]+1, positive
negative

[C]  [C]-1

Is No
[C] = 0?

Yes

[HL] [HL]+1, [HL]  D


[HL] [HL]+1, [HL]  B

STOP
39
ADDRE OPCO LABEL MNEM OPER COMMENTS
SS DE ONICS AND
4100 21 LXI H,4200 Load the number of data
4101 00
4102 42
4103 4E MOV C, M Move M to C
4104 AF XRA A Exclusive OR reg A
4105 57 MOV D, A Move A to D
4106 47 MOV B, A Move A to B
4107 23 L3 INX H H Increment H
4108 7E MOV A,M Move M to A
4109 17 RAL Rotate left through carry
410A D2 JNC L1 Jump no carry
410B 11
410C 41
410D 14 INR D Increment D
410E C3 JMP L2 Jump to L2
410F 12
4110 41
4111 04 L1 INR B Increment B
4112 0D L2 DCR C Decrement C
4113 C2 JNZ L3 Jump non Zero
4114 07
4115 41
4116 23 INX H Increment H
4117 72 LOOP MOV M, D Move D to M
4118 23 INX H H Increment H
4119 70 MOV M, B Move B to M
411A 76 HLT Halt the program

40
Observation
a. Odd and even number
INPUT: OUTPUT:
4200 = 04 (Array Size) 4205=03(Odd numbers)
4201= 01 4206=01(Even numbers)
4202 =05
4203 =03
4204 =04

b. Positive and negative number


INPUT: OUTPUT:
4200 = 04 (Array Size) 4205=01 (Negative numbers)
4201= 01 4206=03(Positive numbers)
4202 =F5
4203 =03
4204 =74

Viva Questions
1. Difference between RAR and RRC
2. Difference between RAL and RLC
3. A=99, CY=0
RAR RRC RAL RLC
A=? A=? A=? A=?
4. A=66, CY=0
RAR RRC RAL RLC
A=? A=? A=? A=?
5. A=99, CY=1
RAR RRC RAL RLC
A=? A=? A=? A=?
6. A=66, CY=1
RAR RRC RAL RLC
A=? A=? A=? A=?
7. Explain about logic concepts used for Positive & Negative and Odd & Even program in
8085

RESULT:
Thus the number of even and odd number, and positive and negative number has been
found from the given numberof list.

41
Ex. No: 4 CODE CONVERSIONS

AIM:

To write an assembly language program to perform the conversions of ASCII to


hexadecimal number, hexadecimal to ASCII, hexadecimal to decimal number, decimal number
to hexadecimal number and hexadecimal to binary number.

a. ASCII TO HEXADECIMAL

ALGORITHM:

We know that the ASCII of number 00H is 30H (48D), and ASCII of 09H is39H (57D). So all
other numbers are in the range 30H to 39H. The ASCII value of 0AH is 41H (65D) and ASCII
of 0FH is 46H (70D), so all other alphabets (B, C, D, E, F) are in the range 41H to 46H

1. Start the program


2. Load the data from address 4200 to A
3. Subtract the data 30 from A
4. Compare the content of accumulator with 0AH.
5. If content of accumulator is less than 0A then goto step 7 else goto step 5.
6. Subtract 07H from accumulator.
7. Store content of accumulator to memory location 4300.
8. Terminate the program.

42
FLOWCHART:

Start

Get the ASCII value

Subtract 30 from A

Compare No
“Acc”
with 0AH
Subtract 07 from A
Yes

Store the hex value

Stop

43
PROGRAM:

ADDRE OPCO LABEL MNEM OPER COMMENTS


SS DE ONICS AND
4100 3A LDA 4200 Load data 4200 to A
4101 00
4102 42
4103 D6 SUI 30 Subtract 30 from A
4104 30
4105 FE CPI 0A compare immediately
0AH with the data of
accumulator.
4106 0A
4107 DA JC SKIP check for carry if yes
then go to SKIP
4108 0C
4109 41
410A D6 SUI 07 subtracts 07H
immediately from
accumulator
410B 07
410C 32 SKIP STA 4300 store the content of
accumulator to memory
location 3050.
410D 00
410E 43
410F 76 HLT stops the execution of
program

44
b. HEXADECIMAL TO ASCII

ALGORITHM:

We know that the ASCII of number 00H is 30H (48D), and ASCII of 09H is39H
(57D). So all other numbers are in the range 30H to 39H. The ASCII value of
0AH is 41H (65D) and ASCII of 0FH is 46H (70D), so all other alphabets (B, C,
D, E, F) are in the range 41H to 46H.
1. Start the program
2. Load the data from address 4200 to A
3. Compare Accumulator value with 0A
4. If Carry is set, Add 30 and 07 to Accumulator
Else, Add 30 to Accumulator
5. Store the result to 4300
6. Stop the Execution

45
FLOWCHART:

Start

Get the Hexadecimal value

Compare No
“Acc”
with 0AH
Add 07 to A
Yes

Add 30 to A

Store the ASCII Value

Stop

46
PROGRAM:

ADDRE OPCO LABEL MNEM OPERAND COMMENTS


SS DE ONICS
4100 3A LDA 4200H Load the hex data
4101 00
4102 42
4103 FE CPI 0A compare accumulator
content with 0AH value
4104 0A
4105 DA JC SKIP jump to memory location
SKIP if the carry bit is set.
4106 0A
4107 41
4108 C6 ADI 07H add 07H value to the
content of accumulator
4109 07
410A C6 SKIP ADI 30H add 30H value to the
content of accumulator
410B 30
410C 32 STA 4300H store the content of
accumulator in the
memory location 4300H
410D 00
410E 43
410F 76 HLT stops executing the
program and halts any
further execution

47
c. HEXADECIMAL TO BINARY

ALGORITHM:

1. Start the program


2. Move the content of memory to accumulator
3. Move data 0B o register B
4. Increment the content of HL register pair
5. Rotate the accumulator right
6. Jump to the specified address if carry generated
7. Move 00 to memory
8. Jump to specified address if there is no zero
9. Move 01 to memory
10. Jump to specified address if there is no zero
11. End the program

48
FLOWCHART:
Start

Load address in HL pair

Move data from M to A

Initialize counter B to 08

Increments HL register pair

Rotate accumulator right

Check for YES


Carry?
NO
Move data from 00 to M

Move data from 01 to M

NO
Decrement B register
If B=0?

YES

Stop

49
PROGRAM:

ADDRE OPCO LABEL MNEM OPERAND COMMENTS


SS DE ONICS
4100 21 LXI H,4200 Load address in HL pair
4101 00
4102 42
4103 7E MOV A,M Move content of M to A
4104 06 MVI B, 08 Move 0B to register pair
4105 08
4106 23 L3 INX H Increment the content of
HL pair
4107 0F RRC Rotate accumulator right
4108 DA JC L1 Jump to specified address
if carry
4109 10
410A 41
410B 36 MVI M, 00 Move 00 to M
410C 00
410D C3 JMP L2 Decrement B register
410E 12
411F 41
4110 36 L1 MVI M, 01 Move 01 to M
4111 01
4112 05 L2 DCR B Decrement B by 1
4113 C2 JNZ L3 Jump to the specified
address if no zero
4114 06
4115 41
4116 76 HLT Stop the program

50
d. BCD TO HEXADECIMAL
ALGORITHM:

1. Start the Program


2. Load the address in HL pair
3. Move the content of M to C Reg
4. AMove the content of M Reg to Accumulator
5. Extract Lower nibble of A Reg& copy to E Reg
6. Copy Value of C Reg to A Reg
7. Move Values of Higher nibble to Lower nibble
8. Copy Value of A Reg to D Reg
9. Clear A Reg
10. ADD 0A with ‘D’ no of times
11. 4300 A (o/p- Hexadecimal)
12. A=A+E
13. Stop

51
FLOWCHART:

Extract Lower nibble of A Reg


Start
& copy to E Reg

HL 4200(Load BCD value) M


CA M

Copy Value of CReg to A Reg

Move values of Higher nibble to Lower nibble

Copy Value of AReg to D Reg

Clear AReg

ADD 0A with ‘D’ no of times

A=A+E

4300  A (o/p- Hexadecimal)

Stop

52
PROGRAM:

ADDRE OPCO LABEL MNEM OPERAND COMMENTS


SS DE ONICS
4100 21 LXI H, 4200 Load address in HL pair
4101 00
4102 42
4103 4E MOV C,M Move content of M to C
4104 79 MOV A,C Move content of C to A
4105 E6 ANI 0F And the data byte of
OFHwith the content of
aaccumulator
4106 0F
4107 5F MOV E,A Move content of A to E
4108 79 MOV A,C Add B content with A
4109 E6 ANI F0 And the data byte
FOHwith the content of
410A F0
410B 0F RRC Rotate right through
carry the accumulator
410C 0F RRC Rotate right through
carry the accumulator
410D 0F RRC Rotate right through
carry the accumulator
410E 0F RRC Rotate right through
carry the accumulator
410F 57 MOV D,A Move content of D to A
4110 3E MVI A,00 Move immediate
00Hto the
accumulator

4111 00
4112 C6 L1 ADI 0A Add immediate data
OAHto the accumulator
4113 0A
4114 15 DCR D Decrement the D
register
4115 C2 JNZ L1 Jump if no zero to
4112H
4116 12
4117 41
4118 83 ADD E Add the content of E
register to Accumulator

53
4119 32 STA 4300 Store the accumulator
content at 4300h
411A 00
411B 43
411C 76 HLT Halt the execution

e. HEXADECIMAL TO DECIMAL
ALGORITHM:

1. Start the program


2. Load the address in HL pair
3. Move the content from HL to A
4. Subtract 64 from A
5. Increment BC pair
6. Jump to address 4207
7. Subtract 0A from A
8. Increment HL pair
9. Rotate accumulator left
10. Increment HL pair
11. End the program

54
FLOWCHART:

Start

Load address in HL pair

Initialize D register

Clear accumulator
Move HL to C register

Add 01 with A

Adjust A to BCD

YES
Check
Carry?
NO
Increment D register

Increment C register

NO
Check
Carry?
YES
Store A in 4151 H

Move D to accumulator

Store A in 4150 H

Stop

55
PROGRAM:

ADDRE OPCODE LABEL MNEM OPER COMMENTS


SS ONICS AND
4100 21 LXI H, 4150 Load data from 4150 to HL pair
4101 50
4102 41
4103 01 LXI B, 0000 Load data from address to BC
4104 00
4105 00
4106 7E MOV A, M Move the content from HL to A
4107 06 L4 SUI 64 Subtract 64 from A
4108 64
4109 DA JC L1 Stop if A has carry
410A 10
410B 41
410C 04 INR B Increment BC
410D C3 JMP L4 Jump to specified address
410E 07
410F 41
4110 C6 L1 ADI 64 Add 64 to A
4111 64
4112 D6 L3 SUI 0A Subtract 0A from A
4113 0A
4114 DA JC L2 Stop if A has carry
4115 1B
4116 41
4117 0C INR C Increment HL
4118 C3 JMP L3 Stop if A has no carry
4119 12
411A 41
411B C6 L2 ADI 0A Add 0A to A
411C 0A
411D 23 INX H Increment HL
411E 70 MOV M, B Move B to M
411F 47 MOV B, A Move A to B
4120 79 MOV A, C Move B to A
4121 07 RLC Rotate accumulator
4122 07 RLC Rotate accumulator
4123 07 RLC Rotate accumulator
4124 07 RLC Rotate accumulator
4125 80 ADD B Add B to A
4126 23 INX H Increment H by 1

56
4127 77 MOV M, A Move content of A to M
4128 76 HLT Stop the program

OBSERVATION:

a. ASCII TO HEXADECIMAL

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4200 42 4300 0B
4200 35 4300 05

b. HEXADECIMAL TO ASCII

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4200 06 4300 36
4200 0C 4300 43

c. HEXADECIMAL TO BINARY

INPUT OUTPUT
MEMORY DATA MEMORY DATA MEMORY DATA
LOCATION LOCATION LOCATION
A9 4201 01 4205 00
4200 4202 00 4206 01
4203 00 4207 00
4204 01 4208 01

d. BCD TO HEXADECIMAL

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
1D
4200 29 4300

57
e. HEXADECIMAL TO DECIMAL

INPUT OUTPUT
MEMORY DATA MEMORY DATA
LOCATION LOCATION
4150 21 4151 00
4152 33

Viva Questions
1. Explain the concepts used in 8085 ALP for following program
(i) ASCII to hexadecimal number,
(ii) hexadecimal to ASCII,
(iii) hexadecimal to decimal number,
(iv) decimal number to hexadecimal number and
(v) hexadecimal to binary number.
2. Covert 4F into binary
3. Convert 43 into hexadecimal
4. Convert 4F into decimal
5. Convert 0F and 08 into ASCII
6. Convert 39 and 44 into Hexadecimal

RESULT:
Thus the assembly language programs for various code conversions are executed using
8085 microprocessor.
EX.No:5 INTERFACING A/D AND D/A CONVERTER WITH 8085

58
AIM:
To write an assembly language program to convert an analog signal into a digital signal
and a digital signal into an analog signal using an ADC interfacing and DAC interfacing
respectively.

a. ADC INTERFACING WITH 8085

APPARATUS REQUIRED:

SL.NO ITEM SPECIFICATION QUANTITY


1 Microprocessor kit 8085,Vi Microsystems 1
2 Power supply +5 V dc 1
3 ADC Interface board Vi Microsystems 1

PROBLEM STATEMENT:

To program starts from memory location 4100H. The program is executed for various
values of analog voltage which are set with the help of a potentiometer. The LED display is
verified with the digital value that is stored in the memory location 4150H.

THEORY:
An ADC usually has two additional control lines: the SOC input to tell the ADC when
to start the conversion and the EOC output to announce when the conversion is complete. The
following program initiates the conversion process, checks the EOC pin of ADC 0419 as to
whether the conversion is over and then inputs the data to the processor. It also instructs the
processor to store the converted digital data at RAM 4200H.

ALGORITHM:
1. Select the channel and latch the address.
2. Send the start conversion pulse.
3. Read EOC signal.
4. If EOC =1 continue else go to step (3)
5. Read the digital output.
6. Store it in a memory location.

PROGRAM:

59
ADDRESS OPCODE LABEL MNEMON ICS OPERA COMMENTS
ND
4100 3E MVI A, 10 Select channel 0 and to
make accumulator low
4101 10
4102 D3 OUT C8 Output the data
4103 C8
4104 3E MVI A, 18 Make accumulator high
4105 18
4106 D3 OUT C8 Display the data
4107 C8
4108 3E MVI A, 01 Make 01 to accumulator
4109 01
410A D3 OUT D0 Display the data
410B D0
410C 00 NOP
410D 00 NOP
410E 00 NOP
410F 3E MVI A, 00 Make 00 to accumulator
4110 00
4111 D3 OUT D0 Load D0 in output port
4112 D0
4113 DB LOOP IN D8
4114 D8
4115 E6 ANI 01 Do and operation directly
4116 01
4117 FE CPI 01 Compare with accumulator
4118 01
4119 C2 JNZ LOOP Jump to specified address
411A 13
411B 41
411C DB IN C0
411D C0
411E 32 STA 4150 Store the data
411F 50
4120 41
4121 76 HLT End the program

60
ADC- CIRCUIT:

SOC JUMPER SELECTION:

J2: SOC Jumper selection


J5: Channel selection

61
OBSERVATION

ANALOG VOLTAGE DIGITAL DATA ON HEX CODE IN


LED DISPLAY LOCATION 4150
3.45 1011 1001 B9
4.69 1111 1101 FD
2.21 0111 0111 77

62
b. DAC INTERFACING WITH 8085

APPARATUS REQUIRED:

SL.NO ITEM SPECIFICATION QUANTITY


1 Microprocessor kit 8085,Vi Microsystems 1
2 Power supply +5 V dc 1
3 DAC Interface board Vi Microsystems 1

SOFTWARE EXAMPLES

The following examples illustrate how to control the DAC using 8085 and generate sine
wave, saw tooth wave by means of software.

(a) SQUARE WAVE GENERATION:

The basic idea behind the generation of waveforms is the continuous generation of
Analog output of DAC. With 00(HEX) as input to DAC2, the analog output is -5V.
Similarly, with FF (Hex) as input, the output is +5V. Outputting digital data 00 and FF at
regular intervals, to DAC2, results in a square wave of amplitude I5 Volts

ALGORITHM:
1. Load the initial value (00) to Accumulator and move it to DAC.
2. Call the delay program
3. Load the final value (FF) to accumulator and move it to DAC.
4. Call the delay program.
5. Repeat steps 2 to 5.
PROGRAM:

ADDRESS OPCO LABEL MNEMON ICS OPERAND COMMENT


DE
4100 3E START MVI A, 00 Move 00 to A register
4101 00
4102 D3 OUT C8 Load C8 to output port
4103 C8
4104 CD CALL DELAY Call delay program
4105 11
4106 41
4107 3E MVI A, FF Load FF to B register
4108 FF
4109 D3 OUT C8
410A C8
410B CD CALL DELAY

63
410C 11
410D 41
410E C3 JMP START START Jump to start of address
410F 00
4110 41
4111 06 DELAY MVI B, 05 Move 05 to B register
4112 05
4113 OE L1 MVI C, FF Move FF to C register
4114 FF
4115 0D L2 DCR C Decrement C
4116 C2 JNZ L2 Jump to L2 if no zero
4117 15
4118 41
4119 05 DCR B Decrement B register
411A C2 JNZ L1 Jump to L1 if no zero
411B 13
411C 41
411D C9 RET

Execute the program and using a CRO, verify that the waveform at the DAC2 output is a
square-wave. Modify the frequency of the square-wave, by varying the time delay.
(b) SAW TOOTH GENERATION:

ALGORITHM:
1. Load the initial value (00) to Accumulator
2. Move the accumulator content to DAC.
3. Increment the accumulator content by 1.
4. Repeat steps 3 and 4.
Output digital data from 00 to FF constant steps of 01 to DAC1 repeat this sequence again and
again. As a result a saw – tooth wave will be generated at DAC1 output.
PROGRAM:

ADDRESS OPCO LABEL MNEMON ICS OPERAND COMMENT


DE
4100 3E START MVI A, 00 Load 00 to accumulator
4101 00
4102 D3 L1 OUT C0 Load CO in output port
4103 C0
4104 3C INR A Increment A register
4105 C2 JNZ L1 Jump to L1 if no zero
4106 02
4107 41

64
4108 C3 JMP START Go to START unconditionally
4109 00
410A 41

(c) TRIANGULAR WAVE GENERATION:

ALGORITHM:

1. Load the initial value (00) to Accumulator.


2. Move the accumulator content to DAC
3. Increment the accumulator content by 1.
4. If accumulator content is zero proceed to next step. Else go to step 3.
5. Load value (FF) to accumulator.
6. Move the accumulator content to DAC.
7. Decrement the accumulator content by 1.
8. If accumulator content is zero go to step 2. Else go to step 2.

The following program will generate a triangular wave at DAC2 output.


PROGRAM:

ADDRESS OPCOD LABE MNEMON ICS OPERA COMMENT


E L ND
4100 2E START MVI L, 00 Move 00 to L register
4101 00
4102 7D L1 MOV A, L Load L to a register
4103 D3 OUT C8 Load c8 to output port
4104 C8
4105 2C INR L Increment L register
4106 C2 JNZ L1 Jump to L1 if no zero
4107 02
4108 41
4109 2E MVI L, FF Load FF to L register
410A FF
410B 7D L2 MOV A, L Move L to a register
410C D3 OUT C8 Load C8 to output port
410D C8
410E 2D DCR L Decrement L register
410F C2 JNZ L2 Jump to L2 if no zero
4110 0B
4111 41
4112 C3 JMP START Go to START unconditionally
4113 00
4114 41

65
DAC - CIRCUIT:

WAEFORMS:

66
OBSERVATION:

WAVE FORMS AMPLITUDE TIME PERIOD


Square waveform 1.6 X 5 = 8V 2.6 X 5 =13
Saw tooth waveform 1.6 X 5 = 8V 1.8 X 5 = 9
Triangular waveform 1.6 X 5 = 8V 4X2=8

Viva Questions

1. Difference between Memory mapped I/O and Peripheral Mapped I/O.


2. Explain IN and OUT instructions.
3. Explain the concepts used in 8085 ALP for following program
(i) ADC (ii) DAC
4. Explain the Successive Approximation Register type ADC
5. Explain the R-2R and Inverted R-2R type DAC
6. Explain NOP operation.
7. Is it affects zero flag for ANI instruction, If not How to check zero flag.
8. What are the control signals are needed to initiate the peripheral mapped devices
9. What are the control signals are needed to initiate the memory mapped devices
10. How to generate various control signals in 8085?

Result:
Thus the conversion of an analog signal into a digital signal and a digital signal into an
analog signal was done using interfacing of ADC and DAC respectively with 8085.

67
EX.No:6 TRAFFIC LIGHT CONTROLLER WITH 8085
AIM
To write an assembly language program to simulate the traffic light at an intersection
using a traffic light interface.

APPARATUS REQUIRED:

SL.NO ITEM SPECIFICATION QUANTITY


1 Microprocessor kit 4185,Vi Microsystems 1
2 Power supply +5 V dc 1
3 Traffic light interface kit Vi Microsystems 1

ALGORITHM:
1. Initialize the ports.
2. Initialize the memory content, with some address to the data.
3. Read data for each sequence from the memory and display it through the ports.
4. After completing all the sequences, repeat from step2.

A SAMPLE SEQUENCE:
1. (a) Vehicles from south can go to straight or left.
(b) Vehicles from west can cross the road.
(c) Each pedestrian can cross the road.
(d) Vehicles from east no movement.
(e) Vehicles from north can go only straight.

2. All ambers are ON, indicating the change of sequence.

3. (a) Vehicles from east can go straight and left.


(b) Vehicles from south can go only left.
(c) North pedestrian can cross the road.
(d) Vehicles from north, no movement.
(e) Vehicles from west can go only straight.

4. All ambers are ON, indicating the change of sequence.

5. (a) Vehicles from north can go straight and left.


(b) Vehicles from east can go only left.
(c) West pedestrian can cross the road.
(d) Vehicles from west, no movement.
(e) Vehicles from south can go only straight.

68
6. All ambers are ON, indicating the change of sequence.

7. (a) Vehicles from west can go straight and left.


(b) Vehicles from north can go only left.
(c) South pedestrian can cross the road.
(d) Vehicles from south, no movement.
(e) Vehicles from east can go only straight.

8. All ambers are ON, indicating the change of sequence.

9. (a) All vehicles from all directions no movement.


(b) All pedestrian can cross the road.

BIT ALLOCATION:

BIT LED BIT LED BIT LED

PA0 SOUTH LEFT PB0 NORTH LEFT PC0 WEST STRAIGHT


PA1 SOUTH RIGHT PB1 NORTH RIGHT PC1 NORTH STRAIGHT
PA2 SOUTH AMBER PB2 NORTH AMBER PC2 EAST STRAIGHT
PA3 SOUTH RED PB3 NORTH RED PC3 SOUTH STRAIGHT
PA4 EAST LEFT PB4 WEST LEFT PC4 NORTH PD
PA5 EAST RIGHT PB5 WEST RIGHT PC5 WEST PD
PA6 EAST AMBER PB6 WEST AMBER PC6 SOUTH PD
PA7 EAST RED PB7 WEST RED PC7 EAST PD

69
PATH REPRESENTATION:

CONTROL------0F(FOR 8255 PPI)


PORT A-----0C
PORT B----------0D
PORT C----------0E

70
PROGRAM:

ADD OPCODE LABEL MNEMON OPERAND COMMENT


RESS ICS
4100 21, 00, 45 START LXI H,DATA Initialize HL reg.to Data
4103 0E, 04 MVI C,04 Initialize C reg with no of
comparisons
4105 7E MOV A,M Move M content to
accumulator
4106 D3, 0F OUT CNT Load address 417B to HL
register
4108 23 INX H Increment H register
4109 7E LOOP 1: MOV A,M Move M content to
accumulator
410A D3, 0C OUT APRT Output contents of
accumulator to OF port
410C 23 INX H Increment H register
410D 7E MOV A,M Move M content to
accumulator
410E D3, 0D OUT BPRT Move M content to
accumulator
4110 CD, 1B, 41 CALL DELAY Call DELAY address
4113 23 INX H Increment H register
4114 0D DCR C Decrement C register
4115 C2, 09, 41 JNZ LOOP 1 Jump to LOOP 1 if no zero
4118 C3, 00, 41 JMP START Jump to start
411B C5 DELAY: PUSH B Push the register B
411C 0E, 05 MVI C,05 Move 05 H immediately to
accumulator.
411E 11, FF, FF LOOP3: LXI D,FFFF Load FF FF in DE register
pair
4121 1B LOOP2 DCX D Decrement D register
4122 7A MOV A,D Move D content to
accumulator
4123 B3 ORA E OR content of E with
accumulator
4124 C2,21,41 JNZ LOOP2 Jump To L2 IF no zero
4127 0D DCR C Decrement C register
4128 C2, 1E, 41 JNZ LOOP3 Jump to LOOP 2 if no zero
412B C1 POP B POP the register B

71
412C C9 RET Return to subroutine
4500 80,1A, A1, 64 DATA 80, 1A, A1,
64
4504 A4, 81, 5A, 64 A4,81,5A,64
4508 54, 8A, B1, A8 54,8A,B1,A8
450C B4, 88, DA, 68 B4,88,DA,68
4510 D8, 1A, E8, 46 D8,1A,E8,46
4514 E8, 83, 78, 86 E8,83,78,86,
74 74

Viva Questions

1. How many ports are available in 8255, what are they?


2. Explain the PORT A , PORT B and PORT C IN 8255.
3. Explain the control word register of 8255.
4. Explain the Modes of 8255.
5. Explain the Status register of 8255.
6. How to select Port A, Port B, Port C and Control register of 8255 using 8085.
7. How to configure BSR mode and I/O Mode in 8255.
8. Explain BSR mode and its uses.
9. How many Modes are available in 8255, what are they?

RESULT:
Thus an assembly language program to simulate the traffic light at an intersection using
a traffic light interfaces was written and implemented.

72
EX.No:7 INTERFACING 8251 WITH 8085
AIM:

To write a program to initiate 8251 and to check the transmission and reception
of character.

APPARATUS REQUIRED:

1. 8085 Microprocessor kit


2. 8251 Interface board
3. DC regulated power supply.
THEORY:

The 8251 is used as a peripheral device for serial communication and is


programmed by the CPU to operate using virtually any serial data transmission technique.
The USART accepts data characters from the CPU in parallel format and the converts them
in a continuous serial data stream of transmission. Simultaneously, it can receive serial data
streams and convert them into parallel data characters for the CPU. The CPU can read the
status of USART at any time. These include data transmissions errors and control signals.

Prior to starting data transmission or reception, the 8251 must be loaded with a
set of control words generated by the CPU.These control signals define the complete
functional definition of the 8251 and must immediately follow a RESET operation. Control
words should be written in to the control register of 8251. Words should be written in to the
control register of 8251.words should be written in to the control register of
8251.Thesecontrol words are split into two formats.
1. MODE INSTRUCTION WORD
2. COMMAND INSTRUCTION WORD.

1. MODE INSTRUCTION WORD

This format defines the BAUD rate, character length, parity and stop bits required to
work with asynchronous data communication. By selecting the appropriate BAUD
factor synchronous mode, the 8251 can be operated in synchronous mode.

Initializing 8251 using the Mode instructions to the following conditions.

8 bit data
No parity
Baud rate factor (16X)
1 stop bit
Gives a mode command word of 01001110=4E(X)

73
ALGORITHM
1. Initialize timer (8253) IC
2. Move the Mode command word (4EH) to A reg.
3. Output it port address C2
4. Move the command instruction word (37H) to A reg.
5. Output it to port address C2
6. Move the data to be transfer to A reg.
7. Output it to port address C0.
8. Reset the system
9. Get the data through input port address C0.
10. Store the value in memory
11. Reset the system
PROGRAM:

ADDRESS OPCODE L MNEMON OPERAND COMMENT


A ICS
BE
L
4100 3E,36 MVI A, 36 Move 36 to A
4102 D3, CE OUT CE Output contents of accumulator to
CE port
4104 3E,0A MVI A, 0A Move 0A to accumulator
4106 D3,C8 OUT C8 Output contents of accumulator to
C8 port
4108 3E,00 MVI A, 00 Move 00 to accumulator
410A D3,C8 OUT C8 Output contents of accumulator to
C8 port
410C 3E,4E MVI A, 4E Move 4E to accumulator
410E D3,C2 OUT C2 Output contents of accumulator to
C2 port
4110 3E,37 MVI A, 37 Move 37 to accumulator
4112 D3,C2 OUT C2 Output contents of accumulator to
C2 port
4114 3E,41 MVI A, 41 Move 41 to accumulator
4116 D3,C0 OUT C0 Output contents of accumulator to
C0 port
4118 CF RST1
4119 DB,00 IN C0 Input the contents from port C0 to
accumulator
411B 32,50,41 STA 4150 Store the output from accumulator
to 4150
411E CF RST1

74
SYNCHRONOUS MODE:

EP PEN L2 L1 B2 B1

0 1 0 1
0 0 1 1
5 6 7 8
BIT BIT BIT BIT
PARITY ENABLE
1-Enable 0-Disable
EVEN PARITY GENERATION
0-Odd 1-Even
EXTERNAL SYNC DETECT
1-Sysdetect is an input 0-
Sysdetect is an output

SINGLE CHARACTER SYNC


1-Single sync character 0-
Double sync character

75
ASYNCHRONOUS MODE:

S2 S1 EPPENL2 L1 B2 B1

0 1 0 1
0 0 1 1
Synch (1 X) (16 X) (64 X)
mode

0 1 0 1
0 0 1 1
5 6 7 8
BIT BIT BIT BIT

PARITY ENABLE
1-Enable 0-
Disable

EVEN PARITY GENERATION


0-Odd 1-Even

0101
0011
Invalid61BIT1.5BIT2 BIT

76
OBSERVATION:

MEMORY LOCATION INPUT DATA OUTPUT DATA


4150 41 41

Viva Questions
1. What are the differences between Serial communication and Parallel Communication?
2. What are the differences between Synchronous communication and Asynchronous
Communication?
3. Explain the command word format of 8251
4. Explain the mode word format of 8251
5. Define BAUD rate.
6. Explain the structure of Asynchronous mode format.
7. How to choose the baud rate with 8051?

RESULT:
Thus the program to initiate 8251 was written and the transmission and reception of
character was checked by interfacing 8251 with 8085.

77
Ex No. 8 INTERFACING 8279 WITH 8085

AIM:
To interface 8279 Programmable Keyboard Display Controller to 8085 Microprocessor.

APPARATUS REQUIRED:

1.8085 Microprocessor toolkit.


2. 8279 Interface board
3. Regulated D.C. power supply.

PROGRAM:
a) Rolling Display

ADDRESS OPCODE LABEL MNEMON ICS OPERAN COMMENT


D

4100 21,30,41 START LXI H, 4130 Store the 16 bit address in


HL pair
4103 16,0F MVI D, 0F Move 0F to D register
4105 3E,10 MVI A, 10 Move 10 to A

4107 D3 OUT C2 Output the contents of A to


C2 output port
C2
4109 3E,CC MVI A, CC Move CC to A
410B D3,C2 OUT C2 Output the contents of A to
C2 output port
410D 3E,90 MVI A, 90 Move 90 to A
410F D3,C2 OUT C2 Output the contents of A to
C2 output port
4111 7E LOOP MOV A, M Move content of M to A

4112 D3,C0 OUT C0 Output the contents of M to


A
4114 CD,1F,41 CALL DELAY Call the delay address
4117 23 INX H Increment H register

4118 15 DCR D Decrement D register

4119 C2,11,41 JNZ LOOP Jump to specified address

78
411C C3,00,41 JMP START START Jump to START address
411F 06,A0 DELAY MVI B, A0 Move a to B register
4121 0E,FF LOOP2 MVI C, FF Move FF to C register
4123 0D LOOP1 DCR C Decrement C register

4124 C2,23,41 JNZ LOOP 1 Jump to LOOP 1 if no zero


4127 05 DCR B Decrement B register
4128 C2,21,41 JNZ LOOP 2 Jump to LOOP 2 if no zero
412B C9 RET

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 98
4139 68
413ª 7C
413B C8
413C 1C
413D 29
413E FF
413F FF

79
SEGMENT DEFINITION:

DATA BUS D7 D6 D5 D4 D3 D2 D1 D0
SEGMETS d c b a dp g f e

OBSERVATION:

LETTER 7 DATA BUS


SEGMENT HEXADECIMAL
D7 D6 D5 D4 D3 D2 D1 D0

H fegbc 1 0 0 1 1 0 0 0 98
E fegad 0 1 1 0 1 0 0 0 68
L fed 0 1 1 1 1 1 0 0 7C
P fegab 1 1 0 0 1 0 0 0 C8
U fedbc 0 0 0 1 1 1 0 0 1C
S fgacd 0 0 1 0 1 0 0 1 29

80
b) Accept a Key and display the same (Two key lock out)

ADDRESS OPCO LABEL MNEMON ICS OPERAN COMMENT


DE D

4100 06,08 MVI B, 08


4102 3E,00 MVI A, 00
4104 D3,C2 OUT C2 Set mode and display
4106 3E,CC MVI A, 0CC Clear Display
4108 D3,C2 OUT C2
410A 3E,90 MVI A, 90 Write display
410C D3,C2 OUT C2
410E 3E,FF MVI A, 0FF
4110 D3,C0 BACK OUT C0 Clear the display ram
4112 05 DCR B
4113 C2,10,4 JNZ BACK
1
4116 DB,C2 LOP IN C2 Pressing of a key
4118 E6,07 ANI 07
411A CA,16,4 JZ LOP
1
411D 3E,40 MVI A, 40 Set to read FIFO ram
411F D3,C2 OUT C2
4121 DB,C0 IN C0
4123 E6,0F ANI 0F get the corresponding code
from lookup table
4125 6F MOV L, A
4126 26,42 MVI H, 42
4128 7E MOV A,M
4129 D3,C0 OUT C0
412B C3,16,4 JMP LOP
1
4200 0C 9F 4A 0B
4204 99 29 28 8F
4208 08 09 88 38
420C 6C 1A 68 E8

81
c) Accept a Key and display the same( N Key rollover)
ADDRESS OPCO LABEL MNEMON ICS OPERAN COMMENT
DE D

4100 06,08 MVI B, 08


4102 3E,02 MVI A, 02
4104 D3,C2 OUT C2 Set mode and display
4106 3E,CC MVI A, 0CC Clear Display
4108 D3,C2 OUT C2
410A 3E,90 MVI A, 90 Write display
410C D3,C2 OUT C2
410E 3E,FF MVI A, 0FF
4110 D3,C0 BACK OUT C0 Clear the display ram
4112 05 DCR B
4113 C2,10,4 JNZ BACK
1
4116 DB,C2 LOP IN C2 Pressing of a key
4118 E6,07 ANI 07
411A CA,16,4 JZ LOP
1
411D 3E,40 MVI A, 40 Set to read FIFO ram
411F D3,C2 OUT C2
4121 DB,C0 IN C0
4123 E6,0F ANI 0F get the corresponding code
from lookup table
4125 6F MOV L, A
4126 26,42 MVI H, 42
4128 7E MOV A,M
4129 D3,C0 OUT C0
412B C3,16,4 JMP LOP
1
4200 0C 9F 4A 0B
4204 99 29 28 8F
4208 08 09 88 38
420C 6C 1A 68 E8

82
Viva Questions

1. Difference between CALL and JMP instruction


2. Difference between Conditional and Unconditional Jump instruction.
3. What are the major sections of 8279.
4. What are the keyboard modes of operations in 8279.
5. Difference between Twokey Lock out and N-Key Rollover
6. What is the output mode used in 8279?
7. What are the input and output operational modes of 8279?
8. How Many Ways the Keyboard is Interfaced with the CPU?
9. What are the important features of 8279
10. Difference between Encoded scan and Decoded Scan

RESULT:
Thus 8279 controller was interfaced with 8085 and program for read a key and display
and rolling display were executed successfully.

83
MICROCONTROLLER

84
Ex. No: 9 8051 –BASIC SIMPLE PROGRAM

AIM:

To write an assembly language program to add, subtract, multiply and divide the given
data stored at two consecutive locations using 8051 microcontroller.

a. ADDITION OF TWO 8 BIT NUMBERS

Algorithm:

1. Set DPTR as pointer for data.


2. Move first data from external memory to accumulator and save it in R1 register.
3. Increment DPTR.
4. Move second data from external memory to accumulator
5. Clear R0 register to account for carry.
6. Add the content of R1 register to accumulator.
7. Check for carry. If carry is not set go to step 8. Otherwise go to next step.
8. Increment R0 register.
9. Increment DPTR and save the sum in external memory.
10. Increment DPTR, move carry to accumulator and save it in external memory.
11. Stop

85
Start

LOAD THE ADDRESS IN DPTR

MOVE THE 1ST DATA TO A – REG


AND SAVE IT IN R1 REG

INCREMENT DPTR AND MOVE THE 2ND DATA TO A –


REG
CLEAR R0 REGISTER

ADD A – REG WITH R1 REG TO GET SUM

Yes
If INCREMENT R0 REG
CY=1

No

INCREMENT DPTR AND SAVE A –


REG
CONTENT IN MEMORY
INCREMENT
DPTR

MOVE R0 TO A – REG AND THEN SAVE A – REG


CONTENT IN MEMORY

Stop

86
Label Program Comments
MOV DPTR,#4500 Load address of 1st data in DPTR
MOVX A,@DPTR Move the 1st data to A
MOV R1,A Save the first data in R1
INC DPTR Increment DPTR to point 2nd data
MOVX A,@DPTR Load the 2nd data in A
MOV R0,#00 Clear R0 for the account of carry
ADD A,R1 Get the sum in A reg
JNC AHEAD Check carry flag
INC R0 If carry is set increment R0
AHEAD: INC DPTR Increment DPTR
MOVX @DPTR, A Save the sum in external memory
INC DPTR Increment DPTR
MOV A,R0 Move carry to A reg
MOVX @DPTR, A Save the carry in external memory
HERE: SJMP HERE Remain idle in infinite loop

Observation:

Input:

4500: 05 [Addend]
4501: 06 [Augend]

Output:

4502: 0B [Sum]
4503: 00 [Carry]

87
Start

LOAD THE ADDRESS IN DPTR

MOVE THE MINUEND TO A – REG


AND SAVE IT IN R1 REG

INCREMENT DPTR AND


MOVE THE SUBTRAHEND TO
A – REG
EXCHANGE R1 WITH A ‐ REG

CLEAR R0 REGISTER AND CARRY FLAG

SUBTRACT R1 FROM A ‐ REG

Yes COMPLEMENT A AND


If THEN INCREMENT
Cy=1

INCREMENT R0 REG
No

INCREMENT DPTR AND SAVE A –


REG
CONTENT (DIFFERENCE) IN
MEMORY
INCREMENT
DPTR

MOVE R0 TO A – REG AND THEN SAVE A – REG


CONTENT (SIGN) IN MEMORY

Stop

88
b. SUBTRACTION OF TWO 8 BIT NUMBERS

Algorithm:

1. Set DPTR as pointer for data.


2. Move the minuend from external memory to accumulator and save it in R1 register.
3. Increment DPTR.
4. Move subtrahend from external memory to accumulator
5. Exchange the contents of R1 and A such that minuend is in A and subtrahend is in
R1
6. Clear R0 register to account for sign.
7. Clear carry flag.
8. Subtract the content of R1 register from accumulator.
9. Check for carry. If carry is not set go to step 12. Otherwise go to next step.
10. Complement the content of A – reg and increment by 1 to get 2’s complement of
result in A – reg
11. Increment R0 register.
12. Increment DPTR and save the result in external memory.
13. Increment DPTR, move R0 (sign bit) to accumulator and then save it in external
memory.
14. Stop

89
Label Program Comments
MOV DPTR,#4500 Load address of minuend in DPTR
MOVX A,@DPTR Move the minuend to A
MOV R1,A Save the minuend in R1
INC DPTR Increment DPTR to point subtrahend
MOVX A,@DPTR Load the subtrahend in A
XCH A,R1 Get minuend in A and Subtrahend in R1
MOV R0,#00 Clear R0 for the account of Sign
CLR C Clear carry
SUBB A,R1 Subtract R1 from A
JNC AHEAD Check Carry flag. If carry is set then
CPL A Get 2’s complement of result in A
INC A
INC R0 Set R0 to indicate negative sign
AHEAD: INC DPTR Increment DPTR
MOVX @DPTR,A Save the result in external memory
INC DPTR Increment DPTR
MOV A,R0 Move sign bit to A reg
MOVX @DPTR,A Save the sign in external memory
HERE: SJMP HERE Remain idle in infinite loop

Observation:
Input:
4500: 09 [Minuend]
4501: 04 [Subtrahend]
Output:
4502: 05 [Difference]
4503: 00 [Sign Bit]

90
Start

LOAD THE ADDRESS IN DPTR

MOVE THE 1ST DATA TO A – REG


AND SAVE IT IN B REG

INCREMENT DPTR AND


MOVE THE 2ND DATA TO A
– REG
MULTIPLY A AND B

INCREMENT DPTR

SAVE A – REG CONTENT (LOWER BYTE OF


PRODUCT) IN MEMORY

INCREMENT DPTR

MOVE B (HIGHER BYTE OF PRODUCT) TO


A–
REG AND THEN SAVE A – REG CONTENT
IN MEMORY
Stop

91
c. MULTIPLICATION OF TWO 8 BIT NUMBERS

Algorithm:

1. Load address of data in DPTR


2. Move the first data from external memory to A and save in B.
3. Increment DPTR and move second data from external memory to B.
4. Perform multiplication to get the product in A and B.
5. Increment DPTR and save A ( lower byte of product) in memory
6. Increment DPTR , move B ( lower byte of product) to A and save it in memory
7. Stop

Label Program Comments


st
MOV DPTR,#4500 Load address of 1 data in DPTR
MOVX A,@DPTR Move the 1st data to A
MOV B,A Save the 1st data in B
INC DPTR Increment DPTR to point 2nd data
MOVX A,@DPTR Load the 2nd data in A
MUL AB Get the product in A and B
INC DPTR Increment DPTR
MOVX @DPTR,A Save the lower byte of result in external memory
INC DPTR Increment DPTR
MOV A,B Move the higher byte of product to A reg
MOVX @DPTR,A Save it in external memory
HERE: SJMP HERE Remain idle in infinite loop

92
Observation:

Input:

4500: 22 [1st data]


4501: 43 [2nd data]

Output:

4502: E6 [Lower byte of product]


4503: 08 [Higher byte of product]

93
Start

LOAD THE ADDRESS IN DPTR

LOAD THE DIVIDEND TO A – REG


AND SAVE IT IN R0 REG

INCREMENT DPTR

LOAD THE DIVISOR IN A – REG AND SAVE IT IN B ‐


REG

MOVE THE DIVIDEND FROM R0 TO A ‐ REG

DIVIDE A – REG CONTENT BY B – REG

INCREMENT DPTR

SAVE A – REG CONTENT (QUOTIENT) IN


MEMORY

INCREMENT DPTR

MOVE B (REMAINDER) TO A – REG AND


THEN SAVE A – REG CONTENT IN
MEMORY

Stop

94
d. DIVISION OF TWO 8 BIT NUMBERS

Algorithm:

1. Load address of data in DPTR


2. Move the dividend from external memory to A and save it in R0 register.
3. Increment DPTR and move the divisor from external memory to A and save it in B
reg.
4. Move the dividend from R0 to A.
5. Perform division to get quotient in A and remainder in B.
6. Increment DPTR and save quotient (content of A - reg) in memory
7. Increment DPTR.
8. Move the remainder (Content of B – reg) to A and save in memory.
9. Stop

Label Program Comments


MOV DPTR,#4500 Load address of dividend in DPTR
MOVX A,@DPTR Move the dividend to A
MOV R0,A Save the dividend in R0
INC DPTR Increment DPTR to point divisor
MOVX A,@DPTR Load the divisor in A
MOV B,A Move the divisor to B
MOV A,R0 Move the dividend to A
DIV AB Divide the content of A by B
INC DPTR Increment DPTR
MOVX @DPTR,A Save the quotient in external memory
INC DPTR Increment DPTR
MOV A,B Move the remainder to A reg
MOVX @DPTR,A Save it in external memory
HERE: SJMP HERE Remain idle in infinite loop

95
Observation:

Input:

4500: 99 [Dividend]
4501: 12 [Divisor]

Output:

4502: 08 [Quotient]
4503: 09 [Remainder]

Viva Questions
1. Define Microcontroller
2. Difference Between Microprocessor and Microcontroller
3. What are the features of Microcontroller
4. Explain the ports of 8051
5. Explain the memory structure of RAM in 8051
6. Specify the RAM and ROM size of 8051 Microcontroller
7. What is the use of EA pin?
8. What is the use of DPTR?
9. Specify the type of addressing mode for following instruction
i. MOV A, RO
ii. MOV A,55
iii. MOV A,#55
iv. MOVX A, @DPTR
10. Explain MUL and DIV instruction.

Result:

Thus the addition, subtraction, multiplication and division of two numbers were
performed using the 8051 microcontroller.

96
Ex. No. 10 A) SUM OF ELEMENTS IN AN ARRAY

AIM:
To find the sum of elements in an array.

ALGORITHM:
1. Load the array in the consecutive memory location and initialize the
memory pointer with the starting address.
2. Load the total number of elements in a separate register as a counter.
3. Clear the accumulator.
4. Load the other register with the value of the memory pointer.
5. Add the register with the accumulator.
6. Check for carry, if exist, increment the carry register by 1. otherwise,
continue
7. Decrement the counter and if it reaches 0, stop. Otherwise increment the
memory pointer by 1 and go to step 4.

97
START

[DPTR]  [4200H],
Clear B, R1 and CY

[A]  [DPTR] [R0]  [A]

[A]  [DPTR+1]

[A]  [A] +[B]


[A]  [B]

No
Is Cy=1

Yes

[R1] [R1]+1

[R0]  [R0]-1

No
IS [R0] = 0?
Yes

[4500]  [A] [B]


[4501][A] [R1]

STOP

98
PROGRAM:

Label Program Comments


MOV DPTR, #4200 Load 4200 to DPTR, get array size
MOVX A, @DPTR Copy array size value to A
MOVR0, A Move contents of A to R0
MOV B, #00
MOVR1, B
CLR C Clear B, R1 & Carry Flag
AGAIN INCDPTR Get value from datapointer
MOVX A, @DPTR
ADD A, B Sum of two numbers
MOV B, A
JNC NC If no carry jump to NC
INC R1 Else increment R1
NC DJNZ R0,AGAIN Decrement size of array, if not zero fetch data from
DPTR and add to the resultant value
MOV DPTR, #4500 Store the result in 4500 memory locations
MOV A, B
MOVX @DPTR, A
INC DPTR
MOV A, R1
MOVX @DPTR, A
HERE SJMP HERE

99
OBSERVATION:

INPUT OUTPUT
4200(Array Size) 05 4500
60
4201 15
4202 20 00
4501
4203 1A
4204 09
4205 08

RESULT:
The sum of elements in an array is calculated.

100
Exp. No 10 B) 8051–Check Odd or Even using Call Option
AIM:
To checkwhether given number is Odd or Even using call function.

ALGORITHM:
1. Start
2. Move the data to DPTR
3. Move the data to accumulator
4. Call check function whether given number is odd or even
5. Increment DPTR
6. Resultant value stored in DPTR-4201
7. Halt
Check Function
8. Rotate right through carry
9. If carry copy 00 to B reg (odd number)
10. Else copy EE to B reg (even number)
11. return

101
START

[DPTR]  [4200H]
[A]  [DPTR]

Check Even &


odd

[DPTR]  [DPTR] +1
[A]  [B][DPTR]  [A]

STOP

Check Even & odd

Rotate the A right


through carry

Yes No
Is CY=1

[B] 00H, for odd [B] EEH, for even

Return

102
PROGRAM:
Label Program Comments
MOV DPTR, #4200 Load 4200 to DPTR, get a number
MOVX A, @DPTR Copy value to A
ACALL CHECK_EV_OD Call check function whether given number is
odd or even
INC DPTR
MOV A,B
MOVX @DPTR, A Resultant value stored in DPTR-4201
HERE SJMP HERE

CHECK_EV_OD RRC A Rotate right through carry


JC L1 If carry copy 00 to B reg (odd number)
MOV B,#0EEH Else copy EE to B reg (even number)
SJMP LAST
L1 MOV B,#00H
LAST RET

OBSERVATION:

INPUT OUTPUT
4200 20 4201 EE

Viva Questions
1. Explain the different types of jumps instruction used in 8051 microcontroller
2. Explain DJNZ instruction
3. Explain the different types of CALL instruction used in 8051 microcontroller
4. Difference between JUMP and CALL instructions
RESULT:
Thus the given number is either even or odd has been found using 8051 microcontroller.

103
Ex. No: 11 INTERFACING A/D & D/A CONVERTER WITH 8051

a. ADC INTERFACING WITH 8051

APPARATUS REQUIRED:

SL.NO ITEM SPECIFICATION QUANTITY


1 Microcontroller kit 8051,Vi Microsystems 1
2 Power supply +5 V dc 1
3 ADC Interface board Vi Microsystems 1

PROBLEM STATEMENT:

To program starts from memory location 4100H. The program is executed for various
values of analog voltage which are set with the help of a potentiometer. The LED display is
verified with the digital value that is stored in the memory location 4150H.

THEORY:

An ADC usually has two additional control lines: the SOC input to tell the ADC when
to start the conversion and the EOC output to announce when the conversion is complete. The
following program initiates the conversion process, checks the EOC pin of ADC 0419 as to
whether the conversion is over and then inputs the data to the processor. It also instructs the
processor to store the converted digital data at RAM 4200H.

ALGORITHM:

1. Select the channel and latch the address.


2. Send the start conversion pulse.
3. Read EOC signal.
4. If EOC =1 continue else go to step (3)
5. Read the digital output.
6. Store it in a memory location.

PROGRAM:

104
Label Program Comments
MOV DPTR, #FFC8
MOV A,#10 Select Channel 0 and make ALE Low
MOVX @DPTR, A
MOV A,#18 make ALE High
MOVX @DPTR, A
MOV DPTR, #FFD0
MOV A,#01 SOC signal High
MOVX @DPTR, A
MOV A,#00 SOC signal low
MOVX @DPTR, A
MOV DPTR,
WAIT #FFD8 MOVX
A,@DPTR JNB Check for EOC
E0,WAIT MOV Read ADC data
DPTR,#FFC0
MOVX A,@DPTR Store the data in memory location
MOV DPTR,#4150
HERE MOVX @DPTR, A
SJMP HERE

ADC- CIRCUIT:

105
SOC JUMPER SELECTION:

J2: SOC Jumper selection


J5: Channel selection

OBSERVATION

106
ANALOG VOLTAGE DIGITAL DATA ON HEX CODE IN
LED DISPLAY LOCATION 4150

(b) INTERFACING D/A CONVERTER WITH 8051

107
APPARATUS REQUIRED:

SL.NO ITEM SPECIFICATION QUANTITY


1 Microprocessor kit 4185,Vi Microsystems 1
2 Power supply +5 V dc 1
3 DAC Interface board Vi Microsystems 1

THEORY:

SOFTWARE EXAMPLES

After going through the software examples you can learn how to control the
DAC using 8051 and generate sine wave, saw tooth wave etc by means of software.

ALGORITHM:

(a) SQUARE WAVE GENERATION:


1. Load the initial value (00) to Accumulator and move it to DAC.
2. Call the delay program
3. Load the final value (FF) to accumulator and move it to DAC.
4. Call the delay program.
5. Repeat steps 2 to 5.

DAC - CIRCUIT:

108
WAVEFORMS:

OBSERVATION:

WAVE FORMS AMPLITUDE TIME PERIOD


Square waveform
Saw tooth waveform
Triangular waveform

PROGRAM:
The basic idea behind the generation of waveforms is the continuous generation of
Analog output of DAC.
With 00(HEX) as input to DAC2, the analog output is -5V. Similarly, with FF (Hex) as
input, the output is +5V. Outputting digital data 00 and FF at regular intervals, to DAC2,
results in a square wave of amplitude I5 Volts.

109
ADDRESS LABEL MNEMON ICS OPCODE OPERAND COMMENT
MOV DPTR,#FFC8
START MOV A,#00
MOVX @DPTR,A
LCALL DELAY
MOV A,# FF
MOVX @DPTR,A
LCALL DELAY
LJMP START
DELAY MOV R1,#05
LOO[P MOV R2,#FF
DJNZ R2,HERE
DJNZ R1,LOOP
RET
SJMP START
Execute the program and using a CRO, verify that the waveform at the DAC2 output is
a square-wave. Modify the frequency of the square-wave, by varying the time delay.

(b) SAW TOOTH GENERATION


1. Load the initial value (00) to Accumulator
2. Move the accumulator content to DAC.
3. Increment the accumulator content by 1.
4. Repeat steps 3 and 4.
Output digital data from 00 to FF constant steps of 01 to DAC1 repeat this sequence again and
again. As a result a saw – tooth wave will be generated at DAC1 output.

PROGRAM:

ADDRESS LABEL MNEMON ICS OPCODE OPERAND COMMENT


MOV DPTR,#FFC0
MOV A,#00
LOOP MOVX @DPTR,A
INC A
SJMP LOOP

110
(c) TRIANGULAR WAVE GENERATION
1. Load the initial value (00) to Accumulator.
2. Move the accumulator content to DAC
3. Increment the accumulator content by 1.
4. If accumulator content is zero proceed to next step. Else go to step 3.
5. Load value (FF) to accumulator.
6. Move the accumulator content to DAC.
7. Decrement the accumulator content by 1.
8. If accumulator content is zero go to step 2. Else go to step 2.

The following program will generate a triangular wave at DAC2 output. The program is
self explanatory.

ADDRESS LABEL MNEMON ICS OPCODE OPERAND COMMENT


MOV DPTR,#FFC8
START MOV A,#00
LOOP1 MOVX @DPTR,A
INC A
JNZ LOOP1
MOV A,#FF
LOOP2 MOVX @DPTR,A
DEC A
JNZ LOOP2
LJMP START

OBSERVATION:

WAVE FORMS AMPLITUDE TIME PERIOD


Square waveform
Saw tooth waveform
Triangular waveform

Result:
Thus the square, triangular and saw tooth wave form were generated by interfacing
DAC with 8051 trainer kit

111
Ex.No:14 INTERFACING 8253 TIMER WITH 8085

AIM:

To interface 8253 Interface board to 8085 microprocessor to demonstrate the generation of


square wave.

APPARATUS REQUIRED:

1. 8085 microprocessor kit


2. 8253 Interface board
3. DC regulated power supply
4. CRO.

.
PROGRAM:

Address Opcode Label Mnemonic Operands Comments


4100 3E 36 START: MVI A, 36 Channel 0 in mode 3
4102 D3 CE OUT CE Send Mode Control word
4104 3E 0A MVI A, 0A LSB of count
4106 D3 C8 OUT C8 Write count to register
4108 3E 00 MVI A, 00 MSB of count
410A D3 C8 OUT C8 Write count to register
410C 76 HLT

Set the jumper, so that the clock 0 of 8253 is given a square wave of frequency 1.5
MHz. This program divides this PCLK by 10 and thus the output at channel 0 is 150 KHz.

Vary the frequency by varying the count. Here the maximum count is FFFF H. So, the
square wave will remain high for 7FFF H counts and remain low for 7FFF H counts. Thus
with the input clock frequency of 1.5 MHz, which corresponds to a period of 0.067
microseconds, the resulting square wave has an ON time of 0.02184 microseconds and an OFF
time of 0.02184 microseconds.

To increase the time period of square wave, set the jumpers such that CLK2 of 8253 is
connected to OUT 0. Using the above-mentioned program, output a square wave of frequency
150 KHz at channel 0. Now this is the clock to channel 2.

112
CONTROL WORD:

SC1 SC2 RW1 RW0 M2 M1 M0 BCD

SC-SELECT COUNTER:

SC1 SC0 SELECT COUNTER


0 0 Select counter 0
0 1 Select counter 1
1 0 Select counter 2

1 1 Read back command

M-MODE:

M2 M1 M0 MODE
0 0 0 Mode 0
0 0 1 Mode 1
X 1 0 Mode 2
X 1 1 Mode 3
1 0 0 Mode 4
1 0 1 Mode 5

READ/WRITE:

RW1 RW0
0 0 Counter latch command
0 1 R/W least significant bit only
1 0 R/W most significant bit only

1 1 R/W least sig first and most sig byte

113
BCD:

0 Binary counter 16-bit

1 Binary coded decimal counter

Result:
Thus the 8253 has been interfaced to 8085 p and with different modes of 8253 have
been studied.

114
Ex.No:15 STEPPER MOTOR INTERFACING WITH 8051

AIM:
To interface a stepper motor with 8051 microcontroller and operate it.

THEORY:
A motor in which the rotor is able to assume only discrete stationary angular position is
a stepper motor. The rotary motion occurs in a step-wise manner from one equilibrium position
to the next. Stepper Motors are used very wisely in position control systems like printers, disk
drives, process control machine tools, etc.
The basic two-phase stepper motor consists of two pairs of stator poles. Each of the
four poles has its own winding. The excitation of any one winding generates a North Pole. A
South Pole gets induced at the diametrically opposite side. The rotor magnetic system has two
end faces. It is a permanent magnet with one face as South Pole and the other as North Pole.
The Stepper Motor windings A1, A2, B1, B2 are cyclically excited with a DC current
to run the motor in clockwise direction. By reversing the phase sequence as A1, B2, A2, B1,
anticlockwise stepping can be obtained.

2-PHASE SWITCHING SCHEME:


In this scheme, any two adjacent stator windings are energized. The switching scheme
is shown in the table given below. This scheme produces more torque.

ANTICLOCKWISE CLOCKWISE
STEP A1 A2 B1 B2 DATA STEP A1 A2 B1 B2 DATA
1 1 0 0 1 9h 1 1 0 1 0 Ah
2 0 1 0 1 5h 2 0 1 1 0 6h
3 0 1 1 0 6h 3 0 1 0 1 5h
4 1 0 1 0 Ah 4 1 0 0 1 9h

ADDRESS DECODING LOGIC:


The 74138 chip is used for generating the address decoding logic to generate the device
select pulses, CS1 & CS2 for selecting the IC 74175.The 74175 latches the data bus to the
stepper motor driving circuitry.
Stepper Motor requires logic signals of relatively high power. Therefore, the interface
circuitry that generates the driving pulses use silicon Darlington pair transistors. The inputs for
the interface circuit are TTL pulses generated under software control using the Microcontroller
Kit. The TTL levels of pulse sequence from the data bus are translated to high voltage output
pulses using a buffer 7407 with open collector.

115
BLOCK DIAGRAM:

8051
MICROCONTROLLER 8255
DRIVER CIRCUIT STEPPER MOTOR

REPRESENTATION:

116
PROGRAM :

Label MNEMONICS OPERAND Comments


ORG 4100h

START MOV DPTR, #TABLE Load the start address of switching


scheme data TABLE into Data
Pointer (DPTR)
MOV R0, #04 Load the count in R0
LOOP: MOVX A, @DPTR Load the number in TABLE into A
PUSH DPH Push DPTR value to Stack
PUSH DPL
MOV DPTR, #0FFC0h Load the Motor port address into
DPTR
MOVX @DPTR, A Send the value in A to stepper
Motor port address
MOV R4, #0FFh Delay loop to cause a specific
DELAY: MOV R5, #0FFh amount of time delay before next
DELAY DJNZ R5, DELAY1 data item is sent to the Motor
1:
DJNZ R4, DELAY
POP DPL POP back DPTR value from Stack
POP DPH
INC DPTR Increment DPTR to point to next
item in the table
DJNZ R0, LOOP Decrement R0, if not zero repeat
the loop
SJMP START Short jump to Start of the program
to make the motor rotate
continuously
TABLE: DB 09 05 06 0Ah Values as per two-phase switching
scheme

PROCEDURE:
1. Enter the above program starting from location 4100.and execute the same.
2. The stepper motor rotates.
3. Varying the count at R4 and R5 can vary the speed.
4. Entering the data in the look-up TABLE in the reverse order can vary direction of
rotation.

RESULT:
Thus a stepper motor was interfaced with 8051 and run in forward and reverse
directions at various speeds.

117
Ex.No:12 8085 Programming Practices with Simulators/ Jubin Open source Software

Aim

To write an assembly language program to multiply the given data stored at two consecutive
locations using 8085 microprocessor simulator.

Motivation

Understanding of Intel 8085 microprocessor is fundamental to getting insight into the Von-
Neumann Architecture. It was first introduced in 1976, since then many generations of
computer architecture have come up, some still persists while others are lost in history. This
microprocessor still survives because it is still popular in university and training institutes to
get students acquainted with basic computer architecture. For this purpose 8085 trainer kit are
available on the market.
With this academic learning purpose in mind 8085 simulator software is designed. It helps in
get started easily with example codes, and to learn the architecture playfully. It also provides a
trainer kit as an appealing functional alternative to real hardware. The users can write
assembly code easily and get results quickly without even having the actual hardware.
Jubin 8085 simualor is open source software which is available
at https://8085simulator.codeplex.com/downloads/get/86234
Features
1.Assembler Editor
• Can load Programs written in other simulator
• Auto-correct and auto-indent features
• Supports assembler directives
• Number parameters can be given in binary, decimal and hexadecimal format
• Supports writing of comments
• Supports labeling of instructions, even in macros
• Has error checking facility
• Syntax Highlighting
2.Disassembler Editor
• Supports loading of Intel specific hex file format
• It can successfully reverse trace the original program from the assembly code,
in most of the cases
• Syntax Highlighting and Auto Spacing

118
3.Assembler Workspace
• Contains the Addressfield, Label, Mnemonics, Hex-code, MnemonicSize, M-Cycles
and T-states
• Static Timing diagram of all instruction sets are supported
• Dynamic Timing diagram during step by step simulation
• It has error checking facility also
4.Memory Editor
• Can directly update data in a specified memory location
• It has 3 types of interface, user can choose from it according to his need.
–Show entire memory content
–Show only loaded memory location
–Store directly to specified memory location
• Allows user to choose memory range
5.I/O Editor
• It is necessary for peripheral interfacing.
• Enables direct editing of content
6.Interrupt Editor
• All possible interrupts are supported. Interrupts are triggered by pressing the
appropriate column (INTR,TRAP,RST7.5,RST6.5,RST5.5) on the interrupt table.
The simulation can be reset any time by pressing the clear memory in the settings
tab.
7.Debugger
• Support of breakpoints
• Step by step execution/debugging of program.
• It supports both forward and backward traversal of programs.
• Allows continuation of program from the
breakpoint. 8.Simulator
• There are 3 level of speed for simulation:
–Step-by-step −→Automatic line by line execution with each line highlighting.
The time to halt at each line is be decided by the user.
–Normal−→Full execution with reflecting intermittent states periodically.
–Ultimate−→Full execution with reflecting final state directly.

119
• There are 2modes of simulator engine:
–Run all at a Time−→It takes the current settings from the simulation speed
level and starts execution accordingly.
-StepbyStep−→It is manual mode of control of FORWARD and BACKWARD
traversal of instruction set. It also displays the in-line comment if available for
currently executed instruction.
• Allows setting of starting address for the simulator.
• Users can choose the mnemonic where program execution should
terminate. 9.Helper
• Help on the mnemonics is integrated.
• CODEWIZARD is a tool added to enable users with very little knowledge of
assembly code could also 8085 assembly programs.
• Already loaded with plenty SAMPLE programs.
• Dynamic loading of user code if placed in user_code folder.
• It also includes a user manual.
10.Printing
• Assembler Content
• Workspace Content
11.Register Bank−→Each register content is accompanied with its equivalent binary value
• Accumulator, RegB, RegC, RegD, RegE, RegH, RegL, Memory(M)
• Flag Register
• Stack Pointer(SP)
• Memory Pointer(HL)
• Program Status Word(PSW)
• Program Counter(PC)
• Clock Cycle Counter
• Instruction Counter\
• Special blocks for monitoring Flag register and the usage of SIM and RIM
instruction.
12.Crash Recovery
• Can recover programs lost due to sudden shutdown or crash of
application. 13.8085 TRAINER KIT

120
• It simulates the kit as if the user is working in the lab. It basically uses the same
simulation engine at the back-end.
14.TOOLS
• Insert DELAY Subroutine TOOL
–It is a powerful wizard to generate delay subroutine with user defined delay
using any sets of register for a particular operating frequency of 8085
microprocessor.
• Interrupt Service Subroutine TOOL
–It is a handy way to set memory values at corresponding vector interrupt
address.
• Number Conversion Tool
–It is a portable interconversion tool for Hexadecimal, decimal and binary
numbers. So, that user do not need to open separate calculator for it.

Directives

Assembler
Directives Example Description

#ORGC000H The next block of instruction should be stored


ORG(Origin) In memory locations starting at C000H

#BEGIN2000H To start simulation from address 2000H


BEGIN (Start)
End of Assembly. It places the mnemonic
#END defined at "Settings→Stop Simulation at
END (Stop) Mnemonic"
#OUTBUFEQU3945 The value of the label OUTBUF is
EQU (Equal) H 3945H. This may be used as memory
location.
DB #DATA:DBF5H,12H Initializes an area byte by byte, in successive memory
(DefineByte) locations until all values are stored. Label DATA stores the
initial address.
DW #LABEL:DW2050H Initializes an area two bytes at a time.
(DefineWord)

DS (DefineStorage) #STACK:DS4 Reserves a specified number of memory locations


and set the initial address to label STACK.

121
Debugging Mode

The debug mode allows the user to view and/or manipulate the program’s internal state
for the purpose of debugging. The software allows stepwise or block wise line monitor with
both forward and backward traversal facility.

PROGRAM

#ORG 2000
#BEGIN 2000
LXI H, 4200
MOV B,M
INX H
MVI C,00
MVI A,00
L2: ADD M
JNC L1
INR C
L1: DCR B
JNZ L2
INX H
MOV M,A
INX H
MOV M,C
HLT
#ORG 4200
#DB 23,42

Click
ASSEMBLE, Run all at a Time and then Memory

Observation

Input Output
4200 4202
4201 4203

Result
Thus the multiplication of two numbers was performed using the 8085 microprocessor
simulator.

122
Appendix A - 8085 Instruction set and Opcodes (Hex code)

123
124

Das könnte Ihnen auch gefallen