0% found this document useful (0 votes)
26 views

Unit 4

The document describes programming operations for an 8051 microcontroller including addition, subtraction, multiplication, and division of 8-bit numbers. It also describes flow charts for these operations as well as finding the largest and smallest number in a set and sorting numbers in ascending and descending order. Code snippets are provided to demonstrate moving data between registers and memory locations to perform the various numeric operations and comparisons.

Uploaded by

Suresh Meesala
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

Unit 4

The document describes programming operations for an 8051 microcontroller including addition, subtraction, multiplication, and division of 8-bit numbers. It also describes flow charts for these operations as well as finding the largest and smallest number in a set and sorting numbers in ascending and descending order. Code snippets are provided to demonstrate moving data between registers and memory locations to perform the various numeric operations and comparisons.

Uploaded by

Suresh Meesala
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 12

8051 MICROCONTROLLER PROGRAMMING

ADDITION OF TWO 8 – BIT NUMBERS:

MOV DPTR, #9000H MOV DPTR, #9000H MOV DPTR, #9000H

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

MOV R1,A MOV R1,A MOV R1,A

INC DPTR INC DPTR INC DPTR

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

ADD A,R1 ADD A,R1 ADD A,R1

LJMP 03 INC DPTR MOV DPTR, # 9010H

MOVX @DPTR, A MOVX @DPTR, A

LJMP 03 LJMP 03

SUBTRACTION OF TWO 8 – BIT NUMBERS:

MOV DPTR, #9000H MOV DPTR, #9000H MOV DPTR, #9000H

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

MOV R1,A MOV R1,A MOV R1,A

INC DPTR INC DPTR INC DPTR

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

SUBB A,R1 SUBB A,R1 SUBB A,R1

LJMP 03 INC DPTR MOV DPTR, # 9010H

MOVX @DPTR, A MOVX @DPTR, A

LJMP 03 LJMP 03
MULTIPLICATION OF TWO 8 – BIT NUMBERS:

MOV DPTR, #9000H MOV DPTR, #9000H MOV DPTR, #9000H

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

MOV B,A MOV B,A MOV B,A

INC DPTR INC DPTR INC DPTR

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

MUL AB MUL AB MUL AB

LJMP 03 INC DPTR MOV DPTR, # 9010H

MOVX @DPTR, A MOVX @DPTR, A

MOV A,B MOV A,B

INC DPTR INC DPTR

MOVX A, @DPTR MOVX A, @DPTR

LJMP 03 LJMP 03
DIVISION OF TWO 8 – BIT NUMBERS:

MOV DPTR, #9000H MOV DPTR, #9000H MOV DPTR, #9000H

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

MOV B,A MOV B,A MOV B,A

INC DPTR INC DPTR INC DPTR

MOVX A, @DPTR MOVX A, @DPTR MOVX A, @DPTR

DIV AB DIV AB DIV AB

LJMP 03 INC DPTR MOV DPTR, # 9010H

MOVX @DPTR, A MOVX @DPTR, A

MOV A,B MOV A,B

INC DPTR INC DPTR

MOVX A, @DPTR MOVX A, @DPTR


LJMP 03 LJMP 03

FLOW CHART FOR ADDITON:

START

GET 1ST NUMBER INTO ACCUMULATOR

COPY DATA FORM ‘A’ TO ‘R1’

INCREMENT THE DPTR

GET 2ND NUMBER FROM DPTR TO ‘A’

ADDS THE CONTENTS AVAILABLE IN ‘A’ &’R1’

LJMP 03

FLOW CHART FOR SUBTRACTION:


START

GET 1ST NUMBER INTO ACCUMULATOR

COPY DATA FORM ‘A’ TO ‘R1’

INCREMENT THE DPTR

GET 2ND NUMBER FROM DPTR TO ‘A’

SUBTACTS THE CONTENTS AVAILABLE IN ‘A’ &’R1’

LJMP 03

FLOW CHART FOR MULTIPLICATION:


START

GET 1ST NUMBER INTO ACCUMULATOR

COPY DATA FORM ‘A’ TO ‘B’

INCREMENT THE DPTR

GET 2ND NUMBER FROM DPTR TO ‘A’

MULTIPLY THE CONTENTS AVAILABLE IN ‘A’ &’B’

LJMP 03

FLOW CHART FOR DIVISION:


START

GET 1ST NUMBER INTO ACCUMULATOR

COPY DATA FORM ‘A’ TO ‘B’

INCREMENT THE DPTR

GET 2ND NUMBER FROM DPTR TO ‘A’

DIVIDE THE CONTENTS AVAILABLE IN ‘A’ &’B’

LJMP 03

FINDING OF LARGEST AND SMALLEST NUMBER AMONG GIVEN SET OF NUMBERS:


SMALLEST NUMBER LARGEST NUMBER
MOV R3, #05H MOV R3, #05H
MOV DPTR, #9000H MOV DPTR, #9000H
MOVX A, @DPTR MOVX A, @DPTR
MOV R1,A MOV R1,A
NEXT BYTE INC DPTR NEXT BYTE INC DPTR
MOVX A, @DPTR MOVX A, @DPTR
CLR C CLR C
MOV R2,A MOV R2,A
SUBB A,R1 SUBB A,R1
JNC SKIP JC SKIP
MOV A,R2 MOV A,R2
MOV R1,A MOV R1,A
DJNZ R3, NEXT BYTE DJNZ R3, NEXT BYTE
MOV DPL, #10H MOV DPL, #10H
MOV A,R1 MOV A,R1
MOVX @DPTR, A MOVX @DPTR, A
LJMP 03 LJMP 03

FLOW CHART FOR SMALLEST:


START

GET THE COUNT TO REG’R3’

INITIALISE THE DPTR WITH ADDRESS 9000H

GET 1ST NUMBER FORM DPTR TO


ACCUMULATOR & COPY TO ‘R1’

INCREMENT THE DPTR

GET 2ND NUMBER FOR DPTR TO


ACCUMULAOR & COPY TO ‘R2’

CLERS THE CARRY

SUBTRACTS THE DATA AVAILABLE IN ‘A’ &


‘R1’
INITIALISE THE DPTR WITH 9010H
NO
IS CARRY =?

COPY THE DATA FROM ‘R1’ TO ‘A’

YES
EXCHAGE THE DATA FROM ‘R2’ TO ‘R1’
SEND THE RESULT FROM ACCUMULATOR TO
DPTR
NO
IS R3 = 0?

YES LJMP 03

FLOW CHART FOR LARGEST:

START
GET THE COUNT TO REG’R3’

INITIALISE THE DPTR WITH ADDRESS 9000H

GET 1ST NUMBER FORM DPTR TO


ACCUMULATOR & COPY TO ‘R1’

INCREMENT THE DPTR

GET 2ND NUMBER FOR DPTR TO


ACCUMULAOR & COPY TO ‘R2’

CLERS THE CARRY

SUBTRACTS THE DATA AVAILABLE IN ‘A’ &


‘R1’
INITIALISE THE DPTR WITH 9010H
YES
IS CARRY =?

COPY THE DATA FROM ‘R1’ TO ‘A’

NO
EXCHAGE THE DATA FROM ‘R2’ TO ‘R1’
SEND THE RESULT FROM ACCUMULATOR TO
DPTR
NO
IS R3 = 0?

YES LJMP 03

ARRANGE N NUMBERS IN ASCENDING AND DESCENDING ORDER

ASCENDING ORDER DESCENIG ORDER


MOV R0 , #05H MOV R0 , #05H
LOOP 1 MOV DPTR, #9000H LOOP 1 MOV DPTR, #9000H
MOV A, R0 MOV A, R0
MOV R1, A MOV R1, A
LOOP 2 MOVX A, @DPTR LOOP 2 MOVX A, @DPTR
MOV B,A MOV B,A
INC DPTR INC DPTR
MOVX A, @DPTR MOVX A, @DPTR
CLR C CLR C
MOV R2, A MOV R2, A
SUBB A, B SUBB A, B
JNC LOOP 3 JC LOOP 3
MOV A, B MOV A, B
MOVX @DPTR, A MOVX @DPTR, A
DEC DPL DEC DPL
MOV A, R2 MOV A, R2
MOVX @DPTR, A MOVX @DPTR, A
INC DPTR INC DPTR
LOOP 3 DJNZ R1, LOOP 2 LOOP 3 DJNZ R1, LOOP 2
DJNZ R0, LOOP1 DJNZ R0, LOOP1
LJMP 03 LJMP 03

START
COPY THE DATA FROM REG B TO A

INITIALISE THE ARRAY SIZE IN REG ‘R0’


COPY DATA FROM ‘A’ TO DPTR
INITIALISE DPRTWITH ADDRESS LOCATION DECREMENT DPTR
9000H

USING EXCHANGE REG COPY ARRAY SIZE COPY DATA FROM ‘R2’TO A
FROM R0 TO R1

GET 1ST NO FROM DPTR TO COPY THE DATA FROM ‘A’ TO DPTR
ACCUMULATOR

INCREMENT THE DPTR


COPY FROM ACCUMULATOR TO REG ‘B’

INCREMENT THE DPTR


YES
IS R1 IS NOT
EQUAL TO
GET 2ND NO FROM DPTR TO ZERO
ACCUMULATOR

CLEARS THE CARRY

IS R0 IS NOT
YES
EQUAL TO
COPY THE DATA FROM ACC TO R2 ZERO

SUBTRACT REG B FROM ACCUMULATOR STOP

NO IS
CARYR
YES ASCENDING ORDER
START
COPY THE DATA FROM REG B TO A

INITIALISE THE ARRAY SIZE IN REG ‘R0’


COPY DATA FROM ‘A’ TO DPTR
INITIALISE DPRTWITH ADDRESS LOCATION DECREMENT DPTR
9000H

USING EXCHANGE REG COPY ARRAY SIZE COPY DATA FROM ‘R2’TO A
FROM R0 TO R1

GET 1ST NO FROM DPTR TO COPY THE DATA FROM ‘A’ TO DPTR
ACCUMULATOR

INCREMENT THE DPTR


COPY FROM ACCUMULATOR TO REG ‘B’

INCREMENT THE DPTR


YES
IS R1 IS NOT
EQUAL TO
GET 2ND NO FROM DPTR TO ZERO
ACCUMULATOR

CLEARS THE CARRY

IS R0 IS NOT
YES
EQUAL TO
COPY THE DATA FROM ACC TO R2 ZERO

SUBTRACT REG B FROM ACCUMULATOR STOP

YES IS
CARYR
NO DESCENDING ORDER

You might also like