Sie sind auf Seite 1von 64

SMK FOMRA INSTITUTE OF TECHNOLOGY

Old Mahabalipuram Road, (I.T.High Way), Kelambakkam,Chennai, Tamilnadu 603103

DEPARTMENT ELECTRONICS AND COMMUNICATION ENGINEERING EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB V SEMSTER 2010-2011 NAME:___________________________________ YEAR/SEM: _______________BRANCH:_______ REG. NO.:________________________________

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

EXPT NO:

8086 PROGRAMMING ADDITION & SUBTRACTION

DATE:

AIM: To write an Assembly Language Program (ALP) for performing the addition and subtraction operation of two byte numbers. APPARATUS REQUIRED: SL.N O 1. 2. ITEM Microprocessor kit Power Supply SPECIFICATION 8086 kit +5 V dc QUANTITY 1 1

PROBLEM STATEMENT: Write an ALP in 8086 to add and subtract two byte numbers stored in the memory location 1000H to 1003H and store the result in the memory location 1004H to 1005H.Also provide an instruction in the above program to consider the carry also and store the carry in the memory location 1006H. ALGORITHM: (i) 16-bit addition h) Initialize the MSBs of sum to 0 i) Get the first number. j) Add the second number to the first number. k) If there is any carry, increment MSBs of sum by 1. l) Store LSBs of sum. m) Store MSBs of sum. (ii) 16-bit subtraction f) Initialize the MSBs of difference to 0 g) Get the first number h) Subtract the second number from the first number. i) If there is any borrow, increment MSBs of difference by 1. j) Store LSBs of difference k) Store MSBs of difference.

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

FLOWCHART ADDITION START SET UP COUNTER (CY) SUBTRACTION START SET UP COUNTER (CARRY) GET FIRST OPERAND TO A

GET FIRST OPERAND

GET SECOND OPERAND TO A

SUBTRACT SECOND OPERAND FROM MEMORY

A=A+B IS THERE ANY CY YES IS THERE ANY CARRY NO COUNTER = COUNTER + 1

YES

COUNTER = COUNTER + 1

NO STORE THE SUM

STORE THE DIFFERENCE

STORE THE CARRY

STORE THE CARRY STOP

STOP

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

ADDITION PROGRAM MOV CX, 0000H MOV AX,[1200] MOV BX, [1202] ADD AX,BX JNC L1 INC CX L1 : MOV [1206],CX MOV [1204], AX HLT SUBTRACTION PROGRAM MOV CX, 0000H MOV AX,[1200] MOV BX, [1202] SUB AX,BX JNC L1 INC CX L1 : MOV [1206],CX MOV [1204], AX HLT COMMENTS Initialize counter CX Get the first data in AX reg Get the second data in BX reg Add the contents of both the regs AX & BX Check for carry If carry exists, increment the CX Store the carry Store the sum Stop the program

COMMENTS Initialize counter CX Get the first data in AX reg Get the second data in BX reg Subtract the contents of BX from AX Check for borrow If borrow exists, increment the CX Store the borrow Store the difference Stop the program

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB RESULT:. ADDITION

DEPT OF ECE

MEMORY DATA

SUBTRACTION

MEMORY

DATA

MANUAL CALCULATION

Thus addition & subtraction of two byte numbers are performed and the result is stored.

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8086 PROGRAMMING MULTIPLICATION & DIVISION AIM: DATE:

DEPT OF ECE

To write an Assembly Language Program (ALP) for performing the multiplication and division operation of 16-bit numbers . APPARATUS REQUIRED: SL.N O 1. 2. ITEM Microprocessor kit Power Supply SPECIFICATION 8086 +5 V dc QUANTITY 1 1

PROBLEM STATEMENT: Write an ALP in 8086 MP to multiply two 16-bit binary numbers and store the result in the memory location. Write instructions for dividing the data and store the result. ALGORITHM: (i) Multiplication of 16-bit numbers: a) Get the multiplier. b) Get the multiplicand c) Initialize the product to 0. d) Product = product + multiplicand e) Decrement the multiplier by 1 f) If multiplicand is not equal to 0,repeat from step (d) otherwise store the product.
(ii)

a) b) c) d)
e)

f) g)

Division of 16-bit numbers. Get the dividend Get the divisor Initialize the quotient to 0. Dividend = dividend divisor If the divisor is greater, store the quotient. Go to step g. If dividend is greater, quotient = quotient + 1. Repeat from step (d) Store the dividend value as remainder.

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB FLOWCHART MULTIPLICATION Start

DEPT OF ECE

DIVISION Start

Get Multiplier & Multiplicand MULTIPLICAND

Load Divisor & Dividend

REGISTER=00

QUOTIENT = 0

REGISTER = REGISTER + MULTIPLICAND

DIVIDEND = DIVIDEND-DIVISOR

QUOTIENT = QUOTIENT+1 Multiplier=MU LTIPLIER 1

NO NO IS MULTIPLIER =0? YES STORE THE RESULT

IS DIVIDEN D< DIVISOR ?

YES STORE QUOTIENT STORE REMAINDER = DIVIDEND NOW

STOP

STOP

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB MULTIPLICATION PROGRAM MOV AX,[1200] MOV BX, [1202] MUL BX MOV [1206],AX MOV AX,DX MOV [1208],AX HLT DIVISION PROGRAM MOV AX,[1200] MOV DX, [1202] MOV BX, [1204] DIV BX MOV [1206],AX MOV AX,DX MOV [1208],AX HLT COMMENTS Get the first data Get the second data

DEPT OF ECE

COMMENTS Get the first data Get the second data Multiply both Store the lower order product Copy the higher order product to AX Store the higher order product Stop the program

Divide the dividend by divisor Store the lower order product Copy the higher order product to AX Store the higher order product Stop the program Get the first data

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB RESULT:. MULTIPLICATION

DEPT OF ECE

MEMORY DATA

DIVISON

MEMORY

DATA

MANUAL CALCULATION

Thus multiplication & division of two byte numbers are performed and the result is stored.

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8086 PROGRAMMING ASCENDING & DESCENDING AIM: DATE:

DEPT OF ECE

To write an Assembly Language Program (ALP) to sort a given array in ascending and descending order. APPARATUS REQUIRED: SL.N O 1. 2. ITEM Microprocessor kit Power Supply SPECIFICATION 8086 +5 V dc QUANTITY 1 1

PROBLEM STATEMENT: An array of length 10 is given from the location. Sort it into descending and ascending order and store the result. ALGORITHM: (i) Sorting in ascending order:
a. Load the array count in two registers C1 and C2.

b. Get the first two numbers. c. Compare the numbers and exchange if necessary so that the two numbers are in ascending order. d. Decrement C2. e. Get the third number from the array and repeat the process until C2 is 0. f. Decrement C1 and repeat the process until C1 is 0. (ii) Sorting in descending order:
a. Load the array count in two registers C1 and C2.

b. Get the first two numbers. c. Compare the numbers and exchange if necessary so that the two numbers are in descending order. d. Decrement C2. e. Get the third number from the array and repeat the process until C2 is 0. f. Decrement C1 and repeat the process until C1 is 0.

10

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB FLOWCHART ASCENDING ORDER

DEPT OF ECE

DESCENDING ORDER START

START

INITIALIZE POINTER COUNT = COUNT 1 FLAG = 0 IS POINTER POINTER +1 NO TEMP = POINTER POINTER = POINTER + 1 POINTER + 1 = TEMP

INITIALIZE POINTER COUNT = COUNT 1 FLAG = 0 IS POINTER POINTER +1 NO TEMP = POINTER POINTER = POINTER + 1 POINTER + 1 = TEMP YES

YES

POINTER = POINTER +1 COUNT = COUNT + 1

POINTER = POINTER +1 COUNT = COUNT + 1

NO

IS COUNT =0 YES IS FLAG = 0 YES

NO

IS COUNT =0 YES IS FLAG = 0 YES

NO

STOP

STOP

11

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB ASCENDING PROGRAM MOV SI,1200H MOV CL,[SI] L4 : MOV SI,1200H MOV DL,[SI] INC SI MOV AL,[SI] L3 : INC SI MOV BL,[SI] CMP AL,BL JNB L1 DEC SI MOV [SI],AL MOV AL,BL JMP L2 L1 : DEC SI MOV [SI],BL L2 : INC SI DEC DL JNZ L3 MOV [SI],AL DEC CL JNZ L4 HLT DESCENDING PROGRAM MOV SI,1200H MOV CL,[SI] L4 : MOV SI,1200H MOV DL,[SI] INC SI MOV AL,[SI] L3 : INC SI MOV BL,[SI] CMP AL,BL

DEPT OF ECE

COMMENTS Initialize memory location for array size Number of comparisons in CL Initialize memory location for array size Get the count in DL Go to next memory location Get the first data in AL Go to next memory location Get the second data in BL Compare two datas If AL < BL go to L1 Else, Decrement the memory location Store the smallest data Get the next data AL Jump to L2 Decrement the memory location Store the greatest data in memory location Go to next memory location Decrement the count Jump to L3, if the count is not reached zero Store data in memory location Decrement the count Jump to L4, if the count is not reached zero Stop

COMMENTS Initialize memory location for array size Number of comparisons in CL Initialize memory location for array size Get the count in DL Go to next memory location Get the first data in AL Go to next memory location Get the second data in BL Compare two datas

12

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB JB L1 DEC SI MOV [SI],AL MOV AL,BL JMP L2 L1 : DEC SI MOV [SI],BL L2 : INC SI DEC DL JNZ L3 MOV [SI],AL DEC CL JNZ L4 HLT RESULT:. ASCENDING If AL > BL go to L1 Else, Decrement the memory location Store the largest data Get the next data AL Jump to L2 Decrement the memory location

DEPT OF ECE

Store the smallest data in memory location Go to next memory location Decrement the count Jump to L3, if the count is not reached zero Store data in memory location Decrement the count Jump to L4, if the count is not reached zero Stop

MEMORY DATA

DESCENDING

MEMORY

DATA

Thus given array of numbers are sorted in ascending & descending order.

13

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

EXPT NO:

8086 PROGRAMMING LARGEST& SMALLEST

DATE:

AIM:

To write an Assembly Language Program (ALP) to find the largest and smallest number in a given array. APPARATUS REQUIRED: SL.N O 1. 2. ITEM Microprocessor kit Power Supply SPECIFICATION 8086 +5 V dc QUANTITY 1 1

PROBLEM STATEMENT: An array of length 10 is given from the location. Find the largest and smallest number and store the result. ALGORITHM: (i) Finding largest number:
a. Load the array count in a register C1.

b. Get the first two numbers. c. Compare the numbers and exchange if the number is small. d. Get the third number from the array and repeat the process until C1 is 0.
(ii)

Finding smallest number:

e. Load the array count in a register C1.

f. Get the first two numbers. g. Compare the numbers and exchange if the number is large. h. Get the third number from the array and repeat the process until C1 is 0.

14

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB FLOWCHART LARGEST NUMBER IN AN ARRAY START INITIALIZE COUNT POINTER MAX = 0 PONITER = POINTER + 1

DEPT OF ECE

SMALLEST NUMBER IN AN ARRAY START

INITIALIZE COUNT POINTER MIN = 0 PONITER = POINTER + 1

YES

IS MAX POINTE R ? NO MAX = POINTER

YES

IS MIN POINTER ? NO MIN = POINTER

COUNT = COUNT-1 NO IS COUNT = 0 ? NO

COUNT = COUNT-1

IS COUNT = 0 ?

YES STORE MAXIMUM

YES STORE MINIIMUM

STOP

STOP

15

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB LARGEST PROGRAM MOV SI,1200H MOV CL,[SI] INC SI MOV AL,[SI] DEC CL L2 : INC SI CMP AL,[SI] JNB L1 MOV AL,[SI] L1 : DEC CL JNZ L2 MOV DI,1300H MOV [DI],AL HLT SMALLEST PROGRAM MOV SI,1200H MOV CL,[SI] INC SI MOV AL,[SI] DEC CL L2 : INC SI CMP AL,[SI] JB L1 MOV AL,[SI] L1 : DEC CL JNZ L2 MOV DI,1300H MOV [DI],AL HLT Initialize array size Initialize the count Go to next memory location Move the first data in AL Reduce the count Move the SI pointer to next data Compare two datas If AL < [SI] then go to L1 ( no swap) Else move the large number to AL Decrement the count If count is not zero go to L2 Initialize DI with 1300H COMMENTS Initialize array size Initialize the count Go to next memory location Move the first data in AL Reduce the count Move the SI pointer to next data Compare two datas If AL > [SI] then go to L1 ( no swap) Else move the large number to AL Decrement the count If count is not zero go to L2 Initialize DI with 1300H COMMENTS

DEPT OF ECE

Else store the biggest number in 1300 location Stop

Else store the biggest number in 1300 location Stop

16

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

RESULT:. LARGEST

MEMORY DATA

SMALLEST

MEMORY

DATA

Thus largest and smallest number is found in a given array.

17

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: AIM: To move a string of length FF from source to destination. ALGORITHM: a. Initialize the data segment .(DS) b. Initialize the extra data segment .(ES) c. Initialize the start of string in the DS. (SI) d. Initialize the start of string in the ES. (DI) e. Move the length of the string(FF) in CX register. f. Move the byte from DS TO ES, till CX=0.
START

DEPT OF ECE

8086 PROGRAMMING COPYING A STRING

DATE:

Initialize DS,ES,SI,DI `

CX=length of string, DF=0.

Move a byte from source string (DS) to destination string (ES)

Decrement CX

` NO
Check for ZF=1

STOP

18

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB COPYING A STRING PROGRAM MOV SI,1200H MOV DI,1300H MOV CX,0006H CLD REP MOVSB HLT

DEPT OF ECE

COMMENTS Initialize destination address Initialize starting address Initialize array size Clear direction flag Copy the contents of source into destination until count reaches zero Stop

RESULT: INPUT MEMORY DATA

OUTPUT MEMORY

DATA

Thus a string of a particular length is moved from source segment to destination segment.

19

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: AIM: 8086 PROGRAMMING SEARCHING A STRING DATE:

DEPT OF ECE

To scan for a given byte in the string and find the relative address of the byte from the starting location of the string. ALGORITHM: a. Initialize the extra segment .(ES) b. Initialize the start of string in the ES. (DI) c. Move the number of elements in the string in CX register. d. Move the byte to be searched in the AL register. e. Scan for the byte in ES. If the byte is found ZF=0, move the address pointed by ES:DI to BX.
START

Initialize DS,ES ,SI,DI

CX=length of the string, DF=0.

Scan for a particular character specified in AL Register.

NO

Check for ZF=1

Move DI to BX

STOP

20

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB SEARCHING FOR A CHARACTER IN THE STRING PROGRAM COMMENTS MOV DI,1300H MOV SI, 1400H MOV CX, 0006H CLD MOV AL, 08H REPNE SCASB DEC DI MOV BL,[DI] MOV [SI],BL HLT RESULT: INPUT MEMORY DATA Initialize destination address Initialize starting address Initialize array size Clear direction flag

DEPT OF ECE

Store the string to be searched Scan until the string is found Decrement the destination address Store the contents into BL reg Store content of BL in source address Stop

OUTPUT MEMORY LOCATION DATA

Thus a given byte or word in a string of a particular length in the extra segment(destination) is found .

21

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8086 PROGRAMMING FIND AND REPLACE AIM: To find a character in the string and replace it with another character. DATE:

DEPT OF ECE

ALGORITHM: a. Initialize the extra segment .(E S) b. Initialize the start of string in the ES. (DI) c. Move the number of elements in the string in CX register. d. Move the byte to be searched in the AL register. e. Store the ASCII code of the character that has to replace the scanned byte in BL register. f. Scan for the byte in ES. If the byte is not found, ZF1 and repeat scanning. g. If the byte is found, ZF=1.Move the content of BL register to ES:DI.

START

Initialize DS, ES, SI, DI

CX=length of the string in ES, DF=0. DF=0.

Scan for a particular character specified in AL Register.

NO
Check for ZF=1

YES
Move the content of BL to ES:DI

STOP

22

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB FIND AND REPLACE A CHARACTER IN THE STRING PROGRAM COMMENTS MOV DI,1300H MOV SI,1400H MOV CX, 0006H CLD MOV AL, 08H MOV BH,30H REPNE SCASB DEC DI MOV BL,[DI] MOV [SI],BL MOV [DI],BH HLT RESULT: INPUT MEMORY DATA Initialize destination address Initialize starting address Initialize array size Clear direction flag Store the string to be searched Store the string to be replaced Scan until the string is found Decrement the destination address Store the contents into BL reg

DEPT OF ECE

Store content of BL in source address Replace the string Stop

OUTPUT MEMORY

DATA

Thus a given byte or word in a string of a particular length in the extra segment(destination) is found and is replaced with another character.

23

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO:

DEPT OF ECE

8086 INTERFACING DATE: INTERFACING ANALOG TO DIGITAL CONVERTER

AIM: To write an assembly language program to convert an analog signal into a digital signal using an ADC interfacing. APPARATUS REQUIRED: SL.NO ITEM SPECIFICATION QUANTITY 1. Microprocessor kit 8086 1 2. Power Supply +5 V dc,+12 V dc 1 3. ADC Interface board 1 PROBLEM STATEMENT: 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 a memory location. 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 0809 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 location. ALGORITHM: (i) Select the channel and latch the address. (ii) Send the start conversion pulse. (iii) Read EOC signal. (iv) If EOC = 1 continue else go to step (iii) (v) Read the digital output. (vi) Store it in a memory location. FLOW CHART: START SELECT THE CHANNEL AND LATCH ADDRESS SEND THE START CONVERSION PULSE NO YES READ THE DIGITALOUTPUT STORE THE DIGITAL VALUE IN THE MEMORY LOCATION SPECIFIED

IS EOC = 1?

STOP 24

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB


PROGRAM TABLE

DEPT OF ECE

PROGRAM MOV AL,00 OUT 0C8H,AL MOV AL,08 OUT 0C8H,AL MOV AL,01 OUT 0D0H,AL MOV AL,00 MOV AL,00 MOV AL,00 MOV AL,00 OUT 0D0H,AL L1 : IN AL, 0D8H AND AL,01 CMP AL,01 JNZ L1 IN AL,0C0H MOV BX,1100 MOV [BX],AL HLT RESULT:
ANALOG VOLTAGE

COMMENTS Load accumulator with value for ALE high Send through output port Load accumulator with value for ALE low Send through output port Store the value to make SOC high in the accumulator Send through output port Introduce delay

Store the value to make SOC low the accumulator Send through output port Read the EOC signal from port & check for end of conversion If the conversion is not yet completed, read EOC signal from port again Read data from port Initialize the memory location to store data Store the data Stop
DIGITAL DATA ON LED DISPLAY HEX CODE IN MEMORY LOCATION

Thus the ADC was interfaced with 8086 and the given analog inputs were converted into its digital equivalent. EXPT NO: AIM : 25 8086 INTERFACING DATE: INTERFACING DIGITAL TO ANALOG CONVERTER

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

1. To write an assembly language program for digital to analog conversion 2. To convert digital inputs into analog outputs & To generate different waveforms APPARATUS REQUIRED: SL.NO ITEM SPECIFICATION QUANTITY 1. Microprocessor kit 8086 Vi Microsystems 1 2. Power Supply +5 V, dc,+12 V dc 1 3. DAC Interface board 1 PROBLEM STATEMENT: The program is executed for various digital values and equivalent analog voltages are measured and also the waveforms are measured at the output ports using CRO. THEORY: Since DAC 0800 is an 8 bit DAC and the output voltage variation is between 5v and +5v. The output voltage varies in steps of 10/256 = 0.04 (approximately). The digital data input and the corresponding output voltages are presented in the table. 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 H as input, the output is +5v. Outputting digital data 00 and FF at regular intervals, to DAC2, results in a square wave of amplitude 5v.Output digital data from 00 to FF in constant steps of 01 to DAC2. Repeat this sequence again and again. As a result a saw-tooth wave will be generated at DAC2 output. Output digital data from 00 to FF in constant steps of 01 to DAC2. Output digital data from FF to 00 in constant steps of 01 to DAC2. Repeat this sequence again and again. As a result a triangular wave will be generated at DAC2 output. ALGORITHM: Measurement of analog voltage: (i) Send the digital value of DAC. (ii) Read the corresponding analog value of its output. Waveform generation: Square Waveform: (i) Send low value (00) to the DAC. (ii) Introduce suitable delay. (iii) Send high value to DAC. (iv) Introduce delay. (v) Repeat the above procedure. Saw-tooth waveform: (i) Load low value (00) to accumulator. (ii) Send this value to DAC. (iii) Increment the accumulator. (iv) Repeat step (ii) and (iii) until accumulator value reaches FF. (v) Repeat the above procedure from step 1. Triangular waveform: (i) Load the low value (00) in accumulator. (ii) Send this accumulator content to DAC. (iii) Increment the accumulator. (iv) Repeat step 2 and 3 until the accumulator reaches FF, decrement the accumulator and send the accumulator contents to DAC. (v) Decrementing and sending the accumulator contents to DAC. (vi) The above procedure is repeated from step (i) FLOWCHART: MEASUREMENT OF ANALOG VOLTAGE SQUARE WAVE FORM START START 26

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

SEND THE DIGITALVALUE TO ACCUMULATOR TRANSFER THE ACCUMULATOR CONTENTS STOP TO DAC

INTIALISE THE ACCUMULATOR SEND ACC CONTENT TO DAC

DELAY LOAD THE ACC WITH MAX VALUE SEND ACC CONTENT TO DAC DELAY

READ THE CORRESPONDING ANALOG VALUE

TRIANGULAR WAVEFORM START SAWTOOTH WAVEFORM START INITIALIZE ACCUMULATOR SEND ACCUMULATOR CONTENT TO DAC INCREMENT ACCUMULATOR CONTENT IS ACC FF YES YES NO DECREMENT ACCUMULATOR CONTENT SEND ACCUMULATOR CONTENT TO DAC IS ACC 00 COMMENTS

INITIALIZE ACCUMULATOR SEND ACCUMULATOR CONTENT TO DAC INCREMENT ACCUMULATOR CONTENT NO IS ACC FF

MEASUREMENT OF ANALOG VOLTAGE: PROGRAM YES

NO

27

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB MOV AL,7FH OUT C0,AL HLT

DEPT OF ECE

Load digital value 00 in accumulator Send through output port Stop

DIGITAL DATA

ANALOG VOLTAGE

PROGRAM TABLE: Square Wave


PROGRAM L2 : MOV AL,00H OUT C0,AL CALL L1 MOV AL,FFH OUT C0,AL CALL L1 JMP L2 L1 : MOV CX,05FFH L3 : LOOP L3 RET COMMENTS Load 00 in accumulator Send through output port Give a delay Load FF in accumulator Send through output port Give a delay Go to starting location Load count value in CX register Decrement until it reaches zero Return to main program

PROGRAM TABLE: Saw tooth Wave


PROGRAM L2 : MOV AL,00H L1 : OUT C0,AL INC AL JNZ L1 JMP L2 COMMENTS Load 00 in accumulator Send through output port Increment contents of accumulator Send through output port until it reaches FF Go to starting location

28

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

PROGRAM TABLE: Triangular Wave


PROGRAM L3 : MOV AL,00H L1 : OUT C0,AL INC AL JNZ L1 MOV AL,0FFH L2 : OUT C0,AL DEC AL JNZ L2 JMP L3 COMMENTS Load 00 in accumulator Send through output port Increment contents of accumulator Send through output port until it reaches FF Load FF in accumulator Send through output port Decrement contents of accumulator Send through output port until it reaches 00 Go to starting location

RESULT:WAVEFORM GENERATION:

WAVEFORMS

AMPLITUDE

TIMEPERIOD

Square Waveform
Saw-tooth waveform Triangular waveform MODEL GRAPH: Square Waveform Saw-tooth waveform

Triangular waveform

Thus the DAC was interfaced with 8085 and different waveforms have been generated. 29

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXP.NO: STEPPER MOTOR INTERFACING

DEPT OF ECE DATE:

AIM: To write an assembly language program in 8086 to rotate the motor at different speeds. APPARATUS REQUIRED: SL.NO 1. 2. 3. 4. ITEM Microprocessor kit Power Supply Stepper Motor Interface board Stepper Motor SPECIFICATION 8086 +5 V, dc,+12 V dc QUANTITY 1 1 1 1

PROBLEM STATEMENT: Write a code for achieving a specific angle of rotation in a given time and particular number of rotations in a specific time. 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 stepwise manner from one equilibrium position to the next.Two-phase scheme: Any two adjacent stator windings are energized. There are two magnetic fields active in quadrature and none of the rotor pole faces can be in direct alignment with the stator poles. A partial but symmetric alignment of the rotor poles is of course possible. ALGORITHM: For running stepper motor clockwise and anticlockwise directions (i) Get the first data from the lookup table. (ii) Initialize the counter and move data into accumulator. (iii) Drive the stepper motor circuitry and introduce delay (iv) Decrement the counter is not zero repeat from step(iii) (v) Repeat the above procedure both for backward and forward directions. SWITCHING SEQUENCE OF STEPPER MOTOR: MEMORY LOCATION 4500 4501 4502 4503 A1 1 0 0 1 A2 0 1 1 0 B1 0 0 1 1 B2 0 1 0 0 HEX CODE 09 H 05 H 06 H 0A H

30

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB FLOWCHART: START INTIALIZE COUNTER FOR LOOK UP TABLE GET THE FIRST DATA FROM THE ACCUMULATOR MOVE DATA INTO THE ACCUMULATOR DRIVE THE MOTOR CIRCUITARY DELAY DECREMENT COUNTER YES IS B = 0 ? NO GET THE DATA FROM LOOK UP TABLE PROGRAM TABLE PROGRAM START : MOV DI, 1200H MOV CX, 0004H LOOP 1 : MOV AL,[DI] OUT 0C0,AL MOV DX, 1010H L1 : DEC DX JNZ L1 INC DI LOOP LOOP1 JMP START 1200 : 09,05,06,0A Go to next memory location Loop until all the datas have been sent Go to start location for continuous rotation Array of datas Introduce delay

DEPT OF ECE

COMMENTS Initialize memory location to store the array of number Initialize array size Copy the first data in AL Send it through port address

RESULT: Thus the assembly language program for rotating stepper motor in both clockwise and anticlockwise directions is written and verified.

31

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXP.NO: DATE: AIM : To display the rolling message HELP US in the display. APPARATUS REQUIRED: 8086 Microprocessor kit, Power supply, Interfacing board. ALGORITHM : Display of rolling message HELP US 1. Initialize the counter 2. Set 8279 for 8 digit character display, right entry 3. Set 8279 for clearing the display 4. Write the command to display 5. Load the character into accumulator and display it 6. Introduce the delay 7. Repeat from step 1. 1. Display Mode Setup: Control word-10 H 0 0 DD 00- 8Bit character display left entry 01- 16Bit character display left entry 10- 8Bit character display right entry 11- 16Bit character display right entry KKK- Key Board Mode 000-2Key lockout. 2.Clear Display: Control word-DC H 1 1 1 1 0 0 1 CD 1 CD 1 CD 0 CF 0 0 0 0 1 D 0 D 0 K 0 K

DEPT OF ECE

INTERFACING PRGRAMMABLE KEYBOARD AND DISPLAY CONTROLLER- 8279

0 K

0 CA

11

A0-3; B0-3 =FF

1-Enables Clear display 0-Contents of RAM will be displayed

1-FIFO Status is cleared

1-Clear all bits (Combined effect of CD) 32

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 3. Write Display: Control word-90H 1 1 0 0 0 0 1 0 0 0 0

DEPT OF ECE

AI

Selects one of the 16 rows of display. Auto increment = 1, the row address selected will be incremented after each of read and write operation of the display RAM. FLOWCHART: SET UP POINTER INITIALIZE THE COUNTER SET 8279 FOR 8-DIGIT CHARACTER DISPLAY SET 8279 FOR CLEARING THE DISPLAY WRITE THE COMMAND TO DISPLAY LOAD THE CHARACTER INTO ACCUMULATOR AND DISPLAY DELAY

33

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB


PROGRAM TABLE

DEPT OF ECE

PROGRAM START : MOV SI,1200H MOV CX,000FH MOV AL,10 OUT C2,AL MOV AL,CC OUT C2,AL MOV AL,90 OUT C2,AL L1 : MOV AL,[SI] OUT C0,AL CALL DELAY INC SI LOOP L1 JMP START DELAY : MOV DX,0A0FFH LOOP1 : DEC DX JNZ LOOP1 RET LOOK-UP TABLE: 1200 1204 98 FF 68 1C 7C 29 C8 FF Initialize array

COMMENTS Initialize array size Store the control word for display mode Send through output port Store the control word to clear display Send through output port Store the control word to write display Send through output port Get the first data Send through output port Give delay Go & get next data Loop until all the datas have been taken Go to starting location Store 16bit count value Decrement count value Loop until count values becomes zero Return to main program

RESULT: MEMORY LOCATION 1200H 1201H 1202H 1203H 1204H 1205H 1206H 1207H d 1 0 0 1 1 0 0 1 7-SEGMENT LED FORMAT c b a dp e g 0 0 1 1 0 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 HEX DATA f 0 0 0 0 1 0 1 1 98 68 7C C8 FF 1C 29 FF

Thus the rolling message HELP US is displayed using 8279 interface kit. 34

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXP. NO: AIM : To study different modes of operation of programmable timer 8253 APPARATUS REQUIRED: SL.NO 1. 2. 3. 4. ITEM Microprocessor kit Power Supply 8253 interfacing kit CRO SPECIFICATION 8086 Vi Microsystems +5V dc INTERFACING PROGRAMMABLE TIMER-8253

DEPT OF ECE DATE:

QUANTITY 1 1 1 1

THEORY: i. ii. iii. iv. The main features of the timer are, Three independent 16-bit counters Input clock from DC to 2 MHz Programmable counter modes Count binary or BCD The control signals with which the 8253 interfaces with the CPU are CS, RD, WR, A1, A2.The basic operations performed by 8253 are determined by these control signals. It has six different modes of operation, viz, mode 0 to mode 5.

MODE 2 RATE GENERATOR


It is a simple divide - by N counter. The output will be low for one input clock period. The period from one output pulse to the next equals the number of input counts in the count register. If the count register is reloaded between output pulses, the present period will not be affected, but the subsequent period will reflect the new value.

MODE 3 SQUARE WAVE GENERATOR


It is similar to mode 2, except that the output will remain high until one half for even number count, If the count is odd, the output will be high for (count+1)/2 counts and low for (count-1)/2 counts ALGORITHM: Mode 21. Initialize channel 0 in mode 2 2. Initialize the LSB of the count. 3. Initialize the MSB of the count. 4. Trigger the count 5. Read the corresponding output in CRO.

35

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB Mode 31. Initialize channel 0 in mode 3 2. Initialize the LSB of the count. 3. Initialize the MSB of the count. 4. Trigger the count 5. Read the corresponding output in CRO. PORT ADDRESS : 1. CONTROL REGISTER 2. COUNTER OF CHANNEL 0 3. COUNTER OF CHANNEL 1 4. COUNTER OF CHANNEL 2 5. O/P PORT OF CHANNEL 0 6. O/P PORT OF CHANNEL 1 7. O/P PORT OF CHANNEL 2 CONTROL WORD FORMAT: D7 SC1 0 0 SC1 0 0 1 1 BCD M2 0 0 0 0 1 1 D6 SC0 0 0 SC0 D5 RL1 1 1 D4 RL0 1 1 D3 M2 0 0 D2 M1 1 1 D1 M0 0 1 RL1 D0 BCD 0 0 RL0 -

DEPT OF ECE

Mode 2 = 34 H Mode 3 = 36 H READ/LOAD

CHANNEL SELECT

0 CHANNEL 0 1 CHANNEL 1 0 CHANNEL 2 1 ------0 BINARY COUNTER M1 M0 MODE MODE 0 MODE 1 MODE 2 MODE 3 MODE 4 MODE 5

0 0 LATCH 0 1 LSB 1 0 MSB 1 1 LSB FIRST, MSB NEXT 1 --BCD COUNTER

1 CLK 0 0 0 0 2 CLK 1 1 1 0 1 3 CLK 2 1 0 0 0 4 OUT 0 1 5 OUT 1 6 OUT 2 7 GATE 0 8 GATE 1 9 GATE 2 10 GND

PORT PIN ARRANGEMENT CONNECTION

DEBOUNCE CIRCUIT

* *

36

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

MODE 2 RATE GENERATOR:


PROGRAM MOV AL, 34H OUT 0BH MOV AL, 0AH OUT 08H MOV AL, 00H OUT 08H HLT COMMENTS Store the control word in accumulator Send through output port Copy lower order count value in accumulator Send through output port Copy higher order count value in accumulator Send through output port Stop

MODE 3 SQUARE WAVE GENERATOR:


PROGRAM MOV AL, 36H OUT 0BH MOV AL, 0AH OUT 08H MOV AL, 00H OUT 08H HLT COMMENTS Store the control word in accumulator Send through output port Copy lower order count value in accumulator Send through output port Copy higher order count value in accumulator Send through output port Stop

37

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB MODEL GRAPH: RATE GENERATOR

DEPT OF ECE

SQUARE WAVE GENERATOR

FLOW CHART START

INITIALIZE ACCUMULATOR WITH MODE SET WORD

INITIALIZE LSB OF COUNT

INITIALIZE MSB OF COUNT

TRIGGER THE COUNT STOP

RESULT: Thus an ALP for rate generator and square wave generator are written and executed.

38

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXP. NO: AIM: INTERFACING USART 8251

DEPT OF ECE DATE:

To study interfacing technique of 8251 (USART) with microprocessor 8086 and write an 8086 ALP to transmit and receive data between two serial ports with RS232 cable. APPARATUS REQUIRED: 8086 kit (2 Nos), RS232 cable. 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 then converts them into a continuous serial data stream for 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 the USART at any time. These include data transmission errors and control signals. The control signals define the complete functional definition of the 8251. Control words should be written into the control register of 8251.These control words are split into two formats: 1) Mode instruction word & 2) Command instruction word. Status word format is used to examine the error during functional operation.

1...transmit enable 1...data terminal ready 1... receive enable 1... send break character 1.... reset error flags (pe,oe,fe) 1..... request to send (rts) 1...... internal reset 1....... enter hunt mode (enable search for sync characters)

1 ransmitter ready 1. receiver ready 1.. transmitter empty 1... parity error (pe) 1.... overrun error (oe) 1..... framing error (fe), async only 1...... sync detect, sync only 1....... data set ready (dsr)

39

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

ALGORITHM: 1. Initialize 8253 and 8251 to check the transmission and reception of a character 2. Initialize8253 to give an output of 150Khz at channel 0 which will give a 9600 baud rate of 8251. 3. The command word and mode word is written to the 8251 to set up for subsequent operations 4. The status word is read from the 8251 on completion of a serial I/O operation, or when the host CPU is checking the status of the device before starting the next I/O operation FLOW CHART: START

Check TX/RX Ready


No

Is it High
Yes

Write Data into data register STOP 40

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

PROGRAM: TRANSMITTER END PROGRAM COMMENTS MOV AL,36 Initialize 8253 in mode 3 square wave generator OUT CE,AL Send through port address MOV AL,10 Initialize AL with lower value of count (clock frequency 150KHz) OUT C8,AL Send through port address MOV AL,00 Initialize AL with higher value of count OUT C8,AL Send through port address MOV AL,4E Set mode for 8251(8bit data, No parity, baud rate factor 16x & 1 stop bit) OUT C2,AL Send through port address MOV AL,37 Set command instruction(enables transmit enable & receive enable bits) OUT C2,AL Send through port address L1:IN AL,C2 Read status word AND AL,04 Check whether transmitter ready JZ L1 If not wait until transmitter becomes ready MOV AL,41 Set the data as 41 OUT C0,AL Send through port address INT 2 Restart the system RECEIVER END PROGRAM COMMENTS MOV AL,36 Initialize 8253 in mode 3 square wave generator OUT CE,AL Send through port address MOV AL,10 Initialize AL with lower value of count (clock frequency 150KHz) OUT C8,AL Send through port address MOV AL,00 Initialize AL with higher value of count OUT C8,AL Send through port address MOV AL,4E Set mode for 8251(8bit data, No parity, baud rate factor 16x & 1 stop bit) OUT C2,AL Send through port address MOV AL,37 Set command instruction(enables transmit enable & receive enable bits) OUT C2,AL Send through port address L1:IN AL,C2 Read status word AND AL,02 Check whether receiver ready JZ L1 If not wait until receiver becomes ready IN AL,C0 If it is ready, get the data MOV BX,1500 Initialize BX register with memory location to store the data MOV [BX],AL Store the data in the memory location INT 2 Restart the system RESULT: Thus ALP for serial data communication using USART 8251 is written and the equivalent ASCII 41 for character A is been transmitted & received.

41

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXP. NO: AIM: INTERFACING PPI 8255

DEPT OF ECE DATE:

To write ALP by interfacing 8255 with 8086 in mode 0, mode 1 and mode 2 APPARATUS REQUIRED: 8086 kit, 8255 interface kit. ALGORITHM: Mode 0 1. Initialize accumulator to hold control word 2. store control word in control word register 3. Read data port A. 4. Store data from port A in memory 5. Place contents in port B Mode 1 & Mode 2 1. Initialize accumulator to hold control word (for port A) 2. Store control word in control word register 3. Initialize accumulator to hold control word (for port B) 4. Place contents in control word register. 5. Disable all maskable interrupts, enable RST 5.5 6. send interrupt mask for RST 6.5 & 7.5 7. Enable interrupt flag 8. Read data from port A, place contents in port B FLOWCHART Mode 0 START Store control word in control register Store control word in control register Input to be read from port A Input to be read from port A STOP Store into accumulator Store output to port B Output written on port B STOP Disable all interrupts except RST 6.5 Mode 1 & 2 START

42

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB

DEPT OF ECE

MODE 0
PROGRAM MOV AL,90H OUT C6,AL IN AL,C0 OUT C2,AL HLT Set the control word Send it to control port Get the contents of port A in AL Send the contents of port B to port address Stop COMMENTS

MODE 1
PROGRAM MOV AL,0B0H OUT C6,AL MOV AL,09H OUT C6,AL MOV AL,13H OUT 30,AL MOV AL,0AH OUT 32,AL MOV AL,0FH OUT 32,AL MOV AL,00H OUT 32,AL STI HLT ISR: IN AL,C0 OUT C2,AL HLT Set trap flag Stop Subroutine Read from Port A Send it to Port B Stop PROGRAM MOV AL,0C0H OUT C6,AL MOV AL,09H OUT C6,AL MOV AL,13H OUT 30,AL MOV AL,0AH OUT 32,AL Through 8259 Send it to control port Control for BSR mode Send it to control port Interrupt generation COMMENTS Set the control word for mode 2 Higher order count Using IR2 interrupt(lower order count) Through 8259 Send it to control port Control for BSR mode Send it to control port Interrupt generation COMMENTS Set the control word for mode 1

MODE 2

43

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB MOV AL,0FH OUT 32,AL MOV AL,00H OUT 32,AL STI HLT ISR: IN AL,C0 OUT C2,AL HLT BSR mode
D7 0 (0=BSR) Bit B2 0 0 0 0 1 1 1 1 D6 X

DEPT OF ECE

Using IR2 interrupt(lower order count) Higher order count Set trap flag Stop Subroutine Read from Port A Send it to Port B Stop

Bit set/reset, applicable to PC only. One bit is S/R at a time. Control word: D5 X D4 X D3 B2 D2 B1 D1 B0 D0 S/R (1=S,0=R)

select: (Taking Don't care's as 0) B1 B0 PC bit Control word (Set) Control word (reset) 0 0 0 0000 0001 = 01h 0000 0000 = 00h 0 1 1 0000 0011 = 03h 0000 0010 = 02h 1 0 2 0000 0101 = 05h 0000 0100 = 04h 1 1 3 0000 0111 = 07h 0000 0110 = 06h 0 0 4 0000 1001 = 09h 0000 1000 = 08h 0 1 5 0000 1011 = 0Bh 0000 1010 = 0Ah 1 0 6 0000 1101 = 0Dh 0000 1100 = 0Ch 1 1 7 0000 1111 = 0Fh 0000 1110 = 0Eh

I/O mode
D7 1 (1=I/O) D6 D5 D4 PA D3 PCU D2 GB mode select D1 PB D0 PCL GA mode select

D6, D5: GA mode select: o 00 = mode0 o 01 = mode1 o 1X = mode2 D4(PA), D3(PCU): 1=input 0=output D2: GB mode select: 0=mode0, 1=mode1 D1(PB), D0(PCL): 1=input 0=output

Result: Input Mode 0 Output Mode 1 Input Output Mode 2 Input Output

The programs for interfacing 8255 with 8085 are executed & the output is obtained for modes 0,1 & 2

44

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8051 PROGRAMMING 8 BIT ADDITION AIM:

DEPT OF ECE DATE:

To write a program to add two 8-bit numbers using 8051 microcontroller. ALGORITHM: 1. Clear Program Status Word. 2. Select Register bank by giving proper values to RS1 & RS0 of PSW. 3. Load accumulator A with any desired 8-bit data. 4. Load the register R 0 with the second 8- bit data. 5. Add these two 8-bit numbers. 6. Store the result. 7. Stop the program.

FLOW CHART: START

Clear PSW Select Register Bank Load A and R 0 with 8- bit datas Add A & R 0 Store the sum STOP

45

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 8 Bit Addition (Immediate Addressing) ADDRESS LABEL MNEMONIC OPERAND 4100 4101 4103 4105 4108 4109 L1 CLR MOV ADDC MOV MOVX SJMP C A,# data1 A, # data 2 DPTR, # 4500H @ DPTR, A L1

DEPT OF ECE

HEX CODE C3 74,data1 24,data2 90,45,00 F0 80,FE

COMMENTS Clear CY Flag Get the data1 in Accumulator Add the data1 with data2 Initialize the memory location Store the result in memory location Stop the program

RESULT: OUTPUT MEMORY LOCATION 4500

DATA

Thus the 8051 ALP for addition of two 8 bit numbers is executed.

46

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8 BIT SUBTRACTION

DEPT OF ECE DATE:

AIM: To perform subtraction of two 8 bit data and store the result in memory. ALGORITHM: a. Clear the carry flag. b. Initialize the register for borrow. c. Get the first operand into the accumulator. d. Subtract the second operand from the accumulator. e. If a borrow results increment the carry register. f. Store the result in memory. FLOWCHART:
START

CLEAR CARRY FLAG

GET IST OPERAND IN ACCR

SUBTRACT THE 2ND OPERAND FROM ACCR

N
IS CF=1

Y
INCREMENT THE BORROW REGISTER

STORE RESULT IN MEMORY STOP

47

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 8 Bit Subtraction (Immediate Addressing) ADDRESS LABEL MNEMONIC OPERAND 4100 4101 4103 4105 4108 4109 L1 CLR MOV SUBB MOV MOVX SJMP C A, # data1 A, # data2 DPTR, # 4500 @ DPTR, A L1

DEPT OF ECE

HEX CODE C3 74, data1 94,data2 90,45,00 F0 80,FE

COMMENTS Clear CY flag Store data1 in accumulator Subtract data2 from data1 Initialize memory location Store the difference in memory location Stop

RESULT: OUTPUT MEMORY LOCATION 4500

DATA

Thus the 8051 ALP for subtraction of two 8 bit numbers is executed.

48

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8051 PROGRAMMING 8 BIT MULTIPLICATION

DEPT OF ECE DATE:

AIM: To perform multiplication of two 8 bit data and store the result in memory. ALGORITHM: a. Get the multiplier in the accumulator. b. Get the multiplicand in the B register. c. Multiply A with B. d. Store the product in memory. FLOWCHART:

START

GET MULTIPLIER IN ACCR

GET MULTIPLICAND IN B REG

MULTIPLY A WITH B

STORE RESULT IN MEMORY STOP

49

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 8 Bit Multiplication ADDRESS LABEL 4100 4102 4104 4106 4109 401A 410B 410D 410E STOP

DEPT OF ECE

MNEMONIC MOV MOV MUL MOV MOVX INC MOV MOV SJMP

OPERAND A ,#data1 B, #data2 A,B DPTR, # 4500H @ DPTR, A DPTR A,B @ DPTR, A STOP

HEX CODE 74, data1 75,data2 F5,F0 90,45,00 F0 A3 E5,F0 F0 80,FE

COMMENTS Store data1 in accumulator Store data2 in B reg Multiply both Initialize memory location Store lower order result Go to next memory location Store higher order result Stop

RESULT: INPUT MEMORY LOCATION 4500 4501 DATA OUTPUT MEMORY LOCATION 4502 4503 DATA

Thus the 8051 ALP for multiplication of two 8 bit numbers is executed.

50

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXPT NO: 8051 PROGRAMMING 8 BIT DIVISION AIM: To perform division of two 8 bit data and store the result in memory. ALGORITHM: 1. Get the Dividend in the accumulator. 2. Get the Divisor in the B register. 3. Divide A by B. 4. Store the Quotient and Remainder in memory. FLOWCHART:

DEPT OF ECE DATE:

START

GET DIVIDEND IN ACCR

GET DIVISOR IN B REG

DIVIDE A BY B

STORE QUOTIENT & REMAINDER IN MEMORY STOP

51

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 8 Bit Division ADDRESS LABEL 4100 4102 4104 4015 4018 4109 410A 410C 410D STOP

DEPT OF ECE

MNEMONIC MOV MOV DIV MOV MOVX INC MOV MOV SJMP

OPERAND A, # data1 B, # data2 A,B DPTR, # 4500H @ DPTR, A DPTR A,B @ DPTR, A STOP

HEX CODE 74,data1 75,data2 84 90,45,00 F0 A3 E5,F0

COMMENTS Store data1 in accumulator Store data2 in B reg Divide Initialize memory location Store remainder Go to next memory location Store quotient

F0 80,FE Stop

RESULT: INPUT MEMORY LOCATION 4500 (dividend) 4501 (divisor) DATA OUTPUT MEMORY LOCATION 4502 (remainder) 4503 (quotient) DATA

Thus the 8051 ALP for division of two 8 bit numbers is executed.

52

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EXP. NO: AIM: LOGICAL AND BIT MANIPULATION

DEPT OF ECE DATE:

To write an ALP to perform logical and bit manipulation operations using 8051 microcontroller. APPARATUS REQUIRED: 8051 microcontroller kit ALGORITHM: 1. 2. 3. 4. 5. 6. 7. 8. Initialize content of accumulator as FFH Set carry flag (cy = 1). AND bit 7 of accumulator with cy and store PSW format. OR bit 6 of PSW and store the PSW format. Set bit 5 of SCON. Clear bit 1 of SCON. Move SCON.1 to carry register. Stop the execution of program.

FLOWCHART: START

Set CY flag, AND CY with MSB of ACC Store the PSW format, OR CY with bit 2 IE reg Clear bit 6 of PSW, Store PSW Set bit 5 of SCON , clear bit 1 and store SCON Move bit 1 of SCON to CY and store PSW STOP

53

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB PROGRAM TABLE ADDRESS HEX CODE 4100 90,45,00 4103 4105 4016 4018 410A 410B 410C 410E 4110 4112 4113 4114 4116 4118 411A 411B 411C 411E 4120 4122 74,FF D3 82,EF E5,D0 F0 A3 72,AA C2,D6 E5,D0 F0 A3 D2,90 C2,99 E5,98 F0 A3 A2,99 E5,D0 F0 80,FE L2 LABEL MNEMONICS MOV MOV SETB ANL MOV MOVX INC ORL CLR MOV MOVX INC SETB CLR MOV MOVX INC MOV MOV MOVX SJMP OPERAND DPTR,#4500 A,#FF C C, ACC.7 A,DOH @DPTR,A DPTR C, IE.2 PSW.6 A,DOH @DPTR,A DPTR SCON.5 SCON.1 A,98H @DPTR,A DPTR C,SCON.1 A,DOH

DEPT OF ECE

COMMENT Initialize memory location Get the data in accumulator Set CY bit Perform AND with 7th bit of accumulator Store the result Go to next location OR CY bit with 2nd bit if IE reg Clear 6th bit of PSW Store the result Go to next location Set 5th of SCON reg Clear 1st bit of SCON reg Store the result Go to next location Copy 1st bit of SCON reg to CY flag Store the result

@DPTR,A L2 Stop

54

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB RESULT: MEMORY LOCATION 4500H (PSW) 4501H (PSW) 4502H (SCON) 4503H (PSW) SPECIAL FUNCTION REGISTER FORMAT CY CY AC AC FO FO RS1 RS1 RS0 OV RS0 OV P P

DEPT OF ECE

BEFORE

AFTER

EXECUTION EXECUTION 00H 88H 40H 88H 20H 09H

SM0 SM1 SM2 REN TB8 RB8 TI RI 0FH CY AC FO RS1 RS0 OV P FFH

Thus the bit manipulation operation is done in 8051 microcontroller.

55

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EX.NO DATE : a) Program to generate a square wave of frequency --------. Steps to determine the count: Let the frequency of sqaurewave to be generated be Fs KHz. And the time period of the squarewave be Ts Sec. Oscillator Frequency = 11.0592MHz. One machine cycle = 12 clock periods

DEPT OF ECE

PROGRAMS TO VERIFY TIMER, INTERRUPTS & UART OPERATIONS IN 8031 MICROCONTROLLER

Time taken to complete one machine cycle=12*(1/11.0592MHz)= 1.085microsec. Y(dec) = (Ts/2)/(1.085microsec) Count(dec) = 65536(dec) Y(dec) = Count(hexa) MOV TMOD,#10h L1: ; To select timer1 & mode1 operation

MOV TL1,#LOWERORDER BYTE OF THE COUNT MOV TH1,#HIGHER ORDER BYTE OF THE COUNT SETB TR1 ; to start the timer (TCON.6) ; checking the status of timerflag1(TCON.7) for overflow CPL Px.x CLR TR1 CLR TF1 SJMP L1 b) Program to transfer a data serially from one kit to another. ; get the square wave through any of the portpins ; eg. P1.2 (second bit of Port 1) ; stop timer ; clear timer flag for the next cycle

BACK:JNB TF1,BACK

Transmitter: MOV TMOD,#20H MOV TL1,#FDH MOV TH1,#FFH MOV SCON,#50H SETB TR1 MOV A,#06h 56 ; Control word for serial communication to to select serial mode1 ; Start timer1 ; Mode word to select timer1 & mode 2 ; Initialize timer1 with the count

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB MOV SBUF,A LOOP: JNB TI, LOOP CLR TI HERE: Receiver: MOV TMOD,#20H MOV TL1,#FDH MOV TH1,#FFH MOV SCON,#50H SETB TR1 LOOP: JNB RI,LOOP MOV A,SBUF MOV DPTR,#4500H MOVX @DPTR,A CLR RI HERE: SJMP HERE SJMP HERE

DEPT OF ECE

; Transfer the byte to be transmitted to serial Buffer register. ; checking the status of Transmit interrupt flag

57

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EX.NO. DATE : SERIAL COMMUNICATION 8051>H HELP MENU D E S G B C F10 T : A Z Display data, program, internal, bit memory or registers Edit data, program, internal, bit memory or registers Single step from specified address, press SP to terminate Execute the program till user break Set address till where the program is to be executed Clear break points Key followed by 4 key at the PC to upload data to a file (DOS) Test the onboard peripherals Download a file from PC mem to the SDA-SI-MEL kit (DOS) Assembler Disassembler

DEPT OF ECE

COMMUNICATION BETWEEN 8051 MICROCONTROLLER KIT & PC

TEST FOR ONBOARD PERIPHERALS For SDA SI-MEL kit, following menu is displayed on pressing the option "T" 8051>T ALS-SDA SI-MEL Kit Test monitor 1. Test internal Data RAM 2. Test external Data Memory (U6) 3. Test external Data memory (U7) 4. 8255 loop test 5. Test 8253 58

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 6. Exit Select (1-6):

DEPT OF ECE

Suppose the user presses the key '1', following message is displayed if the internal data RAM is OK. Testing internal data RAM: Pass After displaying the message, the menu is displayed once again waits for user to enter a key EDITING MEMORY COMMAND: 8051>E EDIT (R,B,M,P,D)D - EXTERNAL DATA RAM Enter STA address = 0400 0400 = 0401 = 0402 = 0403 = 0404 = 0405 = 0406 = 0407 = 0408 = 0409 = 040A = 040B = 040C = 040E = 8051>E EDIT (R,B,M,P,D)B - BITS 59 7F:55 Press 'N' key to go to the next address D5:66 D3:77 73:88 6F:12 CB:01 A7:02 Press 'P' key to go to the previous address 6F:03 7B:04 29:05 6F:06 73:07 FF:08 09:90 Press 'ESC' Key to abort the command

040D =7D:09 Press 'CR' key to have the same address

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB Enter STA address = 00 00 = 0:1 01= 0:1 02 = 0:0 03 = 0:1 03 = 1: 03 = 1: 02 = 0: 8051>E EDIT (R,B,M,P,D)R- REGISTERS ACC = 00:33 PSW = 00:44 DPH = 00:55 DPL = 00:00 DPL = 00:00 8051>E EDIT (R,B,M,P,D)-P = PROGRAM CODE 8000 = FF:78 8001 = FF:10 8002 = FF:79 8003 = FF:20 8004 = FF:7A 8005 = FF: 12 8007 = FF : 00 8008 = FF : 03 8009 = FF : 0F

DEPT OF ECE

8051>E EDIT (R,B,M,P,D)-M - INTERNAL RAM 0000 = 00 : 12 0001 = 00 : 34 60

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB 0002 = 00 : 00

DEPT OF ECE

DISPLAY COMMAND 8051>D EDIT (R,B,M,P,D)-EXTERNAL DATA RAM Enter STA address = 0400 Enter END address = 040F 0500 55 66 77 88 12 01 02 03 04 05 06 07 08 09 04 D7 SETTING BREAK COMMAND : 8051>B BR _ NO: R BR_ADD 0000 ERROR! ONLY A BREAKS ALLOWED 8051>B BR _ NO: 0 ERROR! BREAK NUMBERS MUST BE BETWEEN 1 & 8 CLEAR BREAK COMMAND: 8051>C BR_N0:A 8051>C BR_N0:1 Clears the break point number 1 Clears all the break point set by the user

61

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB PROGRAMME EXECUTION COMMAND: 8051>G PROGRAM EXECUTION ENTER START ADDRESS = 8000 ACC PSW DPH DPL PCH PCL SP B R0 R1 R2 R3 R3 R4 R5 R6 R7 33 44 55 00 10 34 00 00 00 00 00 00 ASSEMBLE MEMORY COMMAND 8051>A ENTER START ADDRESS = 8000 DISASSEMBLE MEMORY COMMAND 8051>Z

DEPT OF ECE

62

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EX. NO. 8086) DATE:

DEPT OF ECE

PROGRAMS FOR DIGITAL CLOCK AND STOP WATCH (USING

Program that places a message on the screen every 10 seconds, using int 1ah; CODE SEGMENT TIMEDELAY: MOV SP,1000H MOV DI,10XD TIME OUT: MOV AH,00H INT 1AH MOV BX,DX TIMER: MOV AH, 00H INT 1AH SUB DX, BX CMP DX, 182XD JC TIMER MOV AH, 09H CS MOV DX,MSG INT 21H DEC DI JNZ TIMEOUT MOV AX,4C00H INT 21H MSG: DB 'TEN MORE SECONDS HAVE PASSED $' CODE ENDS

63

EC 2308 MICROPROCESSOR AND MICROCONTROLLER LAB EX.NO. Interfacing 8259 with 8085 microprocessor

DEPT OF ECE DATE:

Initialize 8259 with the following specifications: ICW4 needed, single 8259, Interval of ------(8085), Edge triggered mode, Vector address(8085)/ Type number(8086) of IR0 ------, ------- mode, Normal EOI, Non-buffered mode, Not special fully nested mode, Mask all interrupts except ---------. A0 Address with A0 = 0 A1 Address with A0 = 1 Using 8086: MOV AL,ICW1 OUT A0,AL MOV AL,ICW2 OUT A1,AL MOV AL,ICW4 OUT A1,AL MOV AL,OCW1 OUT A1,AL STI HLT Vector Table: offset address 0000: offsetaddress ISR: MOV AL,OCW2 OUT A0,AL HLT Interrupt type * 4 Segment Address : Offset address of the ISR

64

Das könnte Ihnen auch gefallen