0% found this document useful (0 votes)
15 views47 pages

Microcontroller: Practical Manual

The Microcontroller Practical Manual outlines the practical exercises for Electrical and Electronics Engineering students from June to October 2020. It includes a detailed index of exercises covering arithmetic operations, data conversions, interfacing techniques, and control systems. The manual also provides step-by-step instructions for programming and using the microcontroller kit and Pinnacle software.

Uploaded by

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

Microcontroller: Practical Manual

The Microcontroller Practical Manual outlines the practical exercises for Electrical and Electronics Engineering students from June to October 2020. It includes a detailed index of exercises covering arithmetic operations, data conversions, interfacing techniques, and control systems. The manual also provides step-by-step instructions for programming and using the microcontroller kit and Pinnacle software.

Uploaded by

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

EEE

MICROCONTROLLER
PRACTICAL MANUAL
ME-SIT

JUNE 2020

TO

OCTOBER 2020
MICROCONTROLLER LAB MANUAL| 2

SESHASAYEE INSTITUTE OF TECHNOLOGY (AUTONOMOUS)


TIRICHIRAPALLI – 620010

PROGRAMME : ELECTRICAL & ELECTRONICS ENGINEERING

YEAR : III TERM : V

COURSE(SUBJECT) : MICROCONTROLLER PRACTICAL

PERIOD : JUNE 2020 TO OCTOBER 2020

NAME OF THE STAFF


:
HANDLED THE SUBJECT
MICROCONTROLLER LAB MANUAL| 3

INDEX

DAY DESCRIPTION

1 ADDITION , ADDITION WITH CARRY, SUBTRACTION

2 MULTIPLICATION , DIVISION

3 DECIMAL TO HEXADECIMAL, WORD DISASSEMBLY

4 HEXA DECIMAL TO DECIMAL, BLOCK TRANSFER

5 ASCII TO DECIMAL , SUM OF ‘N’ ELEMENTS

SETTING & MASKING A BIT, 1’S AND 2’S COMPLEMENT,


6
EVALUATION OF BOOLEAN EXPRESSION

NUMBER OF 1’S &0’S IN A GIVEN DATA,


7
EVEN PARITY GENERATOR , ODD PARITY GENERATOR

8 MULTIBYTE ADDITION, MULTIBYTE SUBTRACTION

9 LARGEST NUMBER , SMALLEST NUMBER IN A LIST , FACTORIAL OF N

10 ASCENDING ORDER , DESCENDING ORDER, SQUARE ROOT OF A GIVEN NUMBER

11 LEAST COMMON MULTIPLE, GREATEST COMMON DIVISOR

12 TIME DELAY PROGRAM [ DAC INTERFACING ]

13 HEXA KEYBOARD INTERFACING

14 7 SEGMENT LED DISPLAY INTERFACING, DIGITAL I/O

15 STEPPER MOTOR CONTROL , LCD DISPLAY INTERFACING

16 ADC INTERFACING , TRAFFIC LIGHT CONTOL


MICROCONTROLLER LAB MANUAL| 4

INDEX

SLNO DATE DESCRIPTION MARKS(10) INITIAL


01 ADDITION
02 ADDITION WITH CARRY
03 SUBTRACTION
04 MULTIPLICATION
05 DIVISION
06 DECIMAL TO HEXADECIMAL
07 HEXA DECIMAL TO DECIMAL
08 WORD DISASSEMBLY
09 BLOCK TRANSFER
10 ASCII TO DECIMAL
11 SUM OF ‘N’ ELEMENTS
12 SETTING & MASKING A BIT
13 1’S AND 2’S COMPLEMENT
14 EVALUATION OF BOOLEAN EXPRESSION
15 NUMBER OF 1’S &0’S IN A GIVEN DATA
16 ODD PARITY GENERATOR
17 EVEN PARITY GENERATOR
18 MULTIBYTE ADDITION
19 MULTIBYTE SUBTRACTION
20 LARGEST NUMBER IN A LIST
21 SMALLEST NUMBER IN A LIST
22 FACTORIAL OF N
23 ASCENDING ORDER
24 DESCENDING ORDER
25 SQUARE ROOT OF A GIVEN NUMBER
26 GREATEST COMMON DIVISOR
27 LEAST COMMON MULTIPLE
28 TIME DELAY PROGRAM
INTERFACING EXERCISES
1 HEXA KEYBOARD INTERFACING
2 LCD DISPLAY INTERFACING
3 7 SEGMENT LED DISPLAY INTERFACING
4 ADC/DAC INTERFACING
5 DIGITAL I/O
6 STEPPER MOTOR CONTROL
7 TRAFFIC LIGHT CONTOL

MARKS : LAB INCHARGE


MICROCONTROLLER LAB MANUAL| 5

MICROCONTROLLER KIT PROCEDURE

(1) ENTER THE PROGRAM (2) ENTER THE DATA (3) EXECUTE THE PROGRAM
(4) VIEW THE RESULT (5) VERIFY WITH DIFFERENT DATA (OPERANDS)

(I) STEPS TO ENTER OR TO EDIT THE PROGRAM. (II) STEPS TO ENTER THE DATA
(A) CONNECT THE POWER CABLE TO THE KIT
(B) CONNECT THE KEYBOARD TO THE KIT (A) PRESS RESET KEY, LCD SCREEN DISPLAY LIKE
(C ) AFTER POWER ON LCD SCREEN DISPLAY LIKE #
#
(B) TYPE THE FOLLOWING IN GIVEN ORDER
(D) TYPE THE FOLLOWING IN GIVEN ORDER (I) SD
(I) SD (II) STARTING ADDRESS OF THE DATA
(II) STARTING ADDRESS OF THE PROGRAM (III) PRESS ENTER KEY.
(III) PRESS ENTER KEY. (C) ENTER THE HEXA DATA (OPERAND(S)) ONE BY ONE
(E) ENTER THE HEXA CODE ONE BY ONE TILL END TILL END
(F) TO COMPLETE, PRESS DOT(.) AND THEN (D) TO COMPLETE, PRESS DOT(.) AND THEN PRESS
PRESS ENTER. ENTER.

(III) STEPS TO EXECUTE THE PROGRAM. (IV) STEPS TO VIEW THE RESULT.
(A) PRESS RESET KEY, LCD SCREEN DISPLAY LIKE
# (A) PRESS RESET KEY, LCD SCREEN DISPLAY LIKE
#
(B) TYPE THE FOLLOWING IN GIVEN ORDER
(I) GO (B) TYPE THE FOLLOWING IN GIVEN ORDER
(II) STARTING ADDRESS OF THE PROGRAM (I) GO
(III) PRESS ENTER KEY. (II) STARTING ADDRESS OF THE RESULT
(C) (III) PRESS ENTER KEY.
o IF NO ERROR IN THE #EXECUTING
PROGRAM, LCD
SCREEN DISPLAY LIKE
o -------------------------------------------------------
o IF ERROR IN THE #
PROGRAM, LCD
SCREEN DISPLAY LIKE
o ---------------------------------------------------
o IF ERROR, CORRECT IT & THEN AGAIN
EXECUTE

DO STEP II AND STEP IV IF WANT TO EXECUTE THE PROGRAM FOR DIFFERENT DATA SETS.
MICROCONTROLLER LAB MANUAL| 6

PINNACLE SOFTWARE PROCEDURE

(1) ENTER THE PROGRAM (2) ENTER THE DATA (3) EXECUTE THE PROGRAM (4) VIEW THE RESULT
(I) STEPS TO ENTER THE PROGRAM.

(A) SELECT PINNACLE SOFTWARE.


(B) SELECT FILE NEW

(C) EDIT SCREEN APPEARS. NOW ENTER THE PROGRAM.


▪ WHEN ENTERING THE PROGRAM, PRESS TAB KEY TWICE. THEN TYPE THE INSTRUCTION.
▪ IF THE INSTRUCTION HAS LABEL, THEN PRESS TAB ONCE, TYPE LABEL FOLLOWED BY COLON(:),
PRESS ONE BLANK SPACE AND THEN TYPE THE INSTRUCTION.
▪ AFTER ENTER ALL INSTRUCTIONS, SAVE THE PROGRAM ( SAY LABEX1.ASM)
▪ THE INSTRUCTION “HLT: SJMP HLT” SHOULD NOT BE TYPED AT THE END.
▪ IF THIS INSTRUCTION IS IN BETWEEN THE PROGRAM, ( AS IN LARGEST/SMALLEST PROGRAM)
THEN DO THE FOLLOWING:
----------
----------
SJMP HLT
---------
---------
HLT: MOV R1,#00 ; (THIS SHOULD BE AT THE END)
▪ WHILE ENTERING THE NUMBER/DATA, CARE SHOULD BE TAKEN.
• IF THE NUMBER IS NOT FOLLOWED BY THE LETTER “H” , IT SHOULD BE TAKEN AS DECIMAL.
• FOR HEXA DECIMAL DATA , ALPHABET SHOULD BE PRECEDED BY 0{ZERO).
• FOR HEXA DECIMAL DATA, THREE DIGITS SHOULD BE USED.
EXAMPLE : (A) MOV R1, #00FH ; (R1)  0FH
(B) MOV R1, #0A0H ; (R1)  A0H
(II) STEPS TO COMPILE AND LINK THE PROGRAM:
(A)SELECT PROJECT
(B) SELECT
COMPILE AND LINK LABEX1.ASM
(C) IF THERE IS ANY ERROR, IT SHOULD BE POINTED . THEN WE EDIT THE PROGRAM TO MAKE
THE CORRECTION AND SAVE THE PROGRAM.
(D) REPEAT STEP (A) TO (C) TILL NO ERRORS FOUND.

(III) STEPS TO ENTER THE DATA & EXECUTE THE PROGRAM.

(A) IMMEDIATE OPERAND:

• DATA SHOULD BE GIVEN IN THE INSTRUCTION ITSELF. EXECUTE THE PROGRAM AND
VIEW THE RESULT
• TO CHANGE THE DATA: EDIT THE PROGRAM AND CHANGE THE DATA. EXECUTE THE
PROGRAM AND VIEW THE RESULT.
(B) MEMORY OPERAND:

• FOR COMPUTER, ADDRESS SHOULD BE START WITH 00XXH.


• EXAMPLE : 0010H,0020H,0050H ETC
• SELECT
VIEW
MICROCONTROLLER LAB MANUAL| 7

• SELECT
EXTERNAL MEMORY
• EXTERNAL MEMORY APPEARS IN THE SCREEN
(i) SELECT THE DESIRED LOCATION [ SAY 0010H]
(ii) RIGHT CLICK THE MOUSE
(iii) EDIT THE VALUE/ ENTER THE VALUE. THEN PRESS OK BUTTON.
(iv) REPEAT STEPS (I) TO (III) TILL ALL THE DATA ENTERED.
• EXTERNAL MEMORY APPEARS IN THE SCREEN
• SELECT THE RESULT LOCATION [ SAY 0050H]
• (A) BELOW THE HORIZONTAL MENU ( FILE EDIT VIEW .....), THERE IS TRIANGLE (IT IS
IN GREEN COLOR). PLACE THE CURSOR AT THIS TRIANGLE
AND SELECT/CLICK THIS.
(OR)
• SELECT EXECUTE

• SELECT

RUN

• IN THE SCREEN , 10 NOP EXECUTED


• PRESS OK BUTTON.
• RESULT IS DISPLAYED IN THE SELECTED LOCATION.
• CLOSE ALL WINDOWS AFTER SEEING THE RESULT. [ EXCEPT PROGRAM WINDOW]
• PROGRAM WINDOW IS CLOSED WHEN WE GO FOR NEXT PROGRAM[OR FINISH THE
WORK/LAB].
(IV) DO STEP II AND STEP III IF WANT TO EXECUTE THE PROGRAM FOR DIFFERENT DATA SETS.
MICROCONTROLLER LAB MANUAL| 8

MCS – 51 PROGRAMMER’S GUIDE AND INSTRUCTION SET

HEXA LENGTH MNE HEXA LENGTH MNE


SN OPERANDS SN OPERANDS
CODE (BYTES) MONICS CODE (BYTES) MONICS
1 00 1 NOP 43 2A 1 ADD A, R2
2 01 2 AJMP CODE ADDR 44 2B 1 ADD A, R3
3 02 3 LJMP CODE ADDR 45 2C 1 ADD A, R4
4 03 1 RR A 46 2D 1 ADD A, R5
5 04 1 INC A 47 2E 1 ADD A, R6
6 05 2 INC DATA ADDR 48 2F 1 ADD A, R7
7 06 1 INC @R0
49 30 3 JNB BIT ADDR, CODE ADDR
8 07 1 INC @R1
9 08 1 INC R0 50 31 2 ACALL CODE ADDR
10 09 1 INC R1 51 32 1 RETI
11 0A 1 INC R2 52 33 1 RLC A
12 0B 1 INC R3 53 34 2 ADDC A, #DATA
13 0C 1 INC R4 54 35 2 ADDC A, DATA ADDR
14 0D 1 INC R5 55 36 1 ADDC A, @R0
15 0E 1 INC R6 56 37 1 ADDC A,@R1
16 0F 1 INC R7 57 38 1 ADDC A, R0
58 39 1 ADDC A, R1
17 10 3 JBC BIT ADDR, CODE ADDR
59 3A 1 ADDC A, R2
18 11 2 ACALL CODE ADDR 60 3B 1 ADDC A, R3
19 12 3 LCALL CODE ADDR 61 3C 1 ADDC A, R4
20 13 1 RRC A 62 3D 1 ADDC A, R5
21 14 1 DEC A 63 3E 1 ADDC A, R6
22 15 2 DEC DATA ADDR 64 3F 1 ADDC A, R7
23 16 1 DEC @R0 65 40 2 JC CODE ADDR
24 17 1 DEC @R1 66 41 2 AJMP CODE ADDR
25 18 1 DEC R0 67 42 2 ORL DATA ADDR,A
26 19 1 DEC R1 68 43 3 ORL ADDR,#DATA
27 1A 1 DEC R2 69 44 2 ORL A,#DATA
28 1B 1 DEC R3 70 45 2 ORL A, DATA ADDR
29 1C 1 DEC R4 71 46 1 ORL A, @R0
30 1D 1 DEC R5 72 47 1 ORL A, @R1
31 1E 1 DEC R6 73 48 1 ORL A, R0
32 1F 1 DEC R7 74 49 1 ORL A, R1
33 20 3 JB BIT ADDR, CODE ADDR 75 4A 1 ORL A, R2
76 4B 1 ORL A, R3
34 21 2 AJMP CODE ADDR
77 4C 1 ORL A, R4
35 22 1 RET
78 4D 1 ORL A, R5
36 23 1 RL A
79 4E 1 ORL A, R6
37 24 2 ADD A, #DATA
80 4F 1 ORL A, R7
38 25 2 ADD A, DATA ADDR
81 50 2 JNC CODE ADDR
39 26 1 ADD A, @R0
82 51 2 ACALL CODE ADDR
40 27 1 ADD A, @R1
83 52 2 ANL DATA ADDR,A
41 28 1 ADD A, R0
84 53 3 ANL DATA
42 29 1 ADD A, R1
85 54 2 ANL ADDR,#DATA
A, #DATA
MICROCONTROLLER LAB MANUAL| 9

HEXA LENGTH MNE HEXA LENGTH MNE


SN OPERANDS SN OPERANDS
CODE (BYTES) MONICS CODE (BYTES) MONICS
131 82 2 ANL C, BIT ADDR
86 55 2 ANL A, DATA ADDR
132 83 1 MOVC A,@A+PC
87 56 1 ANL A, @R0
133 84 1 DIV AB
88 57 1 ANL A, @R1
134 85 3 MOV DATA ADDR , DATA ADDR
89 58 1 ANL A, R0
135 86 2 MOV DATA ADDR , @R0
90 59 1 ANL A, R1
91 136 87 2 MOV DATA ADDR , @R1
5A 1 ANL A, R2
92 137 88 2 MOV DATA ADDR , R0
5B 1 ANL A, R3
93 138 89 2 MOV DATA ADDR , R1
5C 1 ANL A, R4
94 139 8A 2 MOV DATA ADDR , R2
5D 1 ANL A, R5
95 140 8B 2 MOV DATA ADDR , R3
5E 1 ANL A, R6
96 141 8C 2 MOV DATA ADDR , R4
5F 1 ANL A, R7
97 60 2 JZ CODE ADDR 142 8D 2 MOV DATA ADDR , R5
98 61 2 AJMP CODE ADDR 143 8E 2 MOV DATA ADDR , R6
99 62 2 XRL DATA ADDR,A 144 8F 2 MOV DATA ADDR , R7
100 63 3 XRL DATA ADDR,#DATA 145 90 3 MOV DPTR , #DATA
101 64 2 XRL A, #DATA 146 91 2 ACALL CODE ADDR
102 65 2 XRL A, DATA ADDR 147 92 2 MOV BIT ADDR, C
103 66 1 XRL A, @R0 148 93 1 MOVC A, @A+DPTR
104 67 1 XRL A, @R1 149 94 2 SUBB A, #DATA
105 68 1 XRL A, R0 150 95 2 SUBB A, DATA ADDR
106 69 1 XRL A, R1 151 96 1 SUBB A, @R0
107 6A 1 XRL A, R2 152 97 1 SUBB A, @R1
108 6B 1 XRL A, R3 153 98 1 SUBB A, R0
109 6C 1 XRL A, R4 154 99 1 SUBB A, R1
110 6D 1 XRL A, R5 155 9A 1 SUBB A, R2
111 6E 1 XRL A, R6 156 9B 1 SUBB A, R3
112 6F 1 XRL A, R7 157 9C 1 SUBB A, R4
113 70 2 JNZ CODE ADDR 158 9D 1 SUBB A, R5
114 71 2 ACALL CODE ADDR 159 9E 1 SUBB A, R6
115 72 2 ORL C, BIT ADDR 160 9F 1 SUBB A, R7
116 73 1 JMP @A+DPTR 161 A0 2 ORL C, /BIT ADDR
117 74 2 MOV A, #DATA 162 A1 2 AJMP CODE ADDR
118 75 3 MOV DATA ADDR,#DATA 163 A2 2 MOV C, BIT ADDR
119 76 2 MOV @R0, #DATA 164 A3 1 INC DPTR
120 77 2 MOV @R1, #DATA 165 A4 1 MUL AB
121 78 2 MOV R0, #DATA 166 A5 RESERVED
122 79 2 MOV R1, #DATA 167 A6 2 MOV @R0, DATA ADDR
123 7A 2 MOV R2, #DATA 168 A7 2 MOV @R1, DATA ADDR
124 7B 2 MOV R3, #DATA 169 A8 2 MOV R0, DATA ADDR
125 7C 2 MOV R4, #DATA 170 A9 2 MOV R1, DATA ADDR
126 7D 2 MOV R5, #DATA 171 AA 2 MOV R2, DATA ADDR
127 7E 2 MOV R6, #DATA 172 AB 2 MOV R3, DATA ADDR
128 7F 2 MOV R7, #DATA 173 AC 2 MOV R4, DATA ADDR
129 80 2 SJMP CODE ADDR 174 AD 2 MOV R5, DATA ADDR
130 81 2 AJMP CODE ADDR 175 AE 2 MOV R6, DATA ADDR
MICROCONTROLLER LAB MANUAL| 10

HEXA LE MNE SN OPCOD


SN NG OPERANDS HEX LEN OPERANDS
CODE MONICS
TH( 214 D5 3 EDJNZ DATA ADDR, CODE ADDR
176 AF 2
B) MOV R7, DATA ADDR
215 D6 1 XCHD A, @R0
177 B0 2 ANL C, /BIT ADDR
178 216 D7 1 XCHD A, @R1
B1 2 ACALL CODE ADDR
179 217 D8 2 DJNZ R0, CODE ADDR
B2 2 CPL BIT ADDR
180 218 D9 2 DJNZ R1, CODE ADDR
B3 1 CPL C
219 DA 2 DJNZ R2, CODE ADDR
181 B4 3 CJNE A, #DATA, CODE ADDR
220 DB 2 DJNZ R3, CODE ADDR
182 B5 3 CJNE A, DATA ADDR, CODE ADDR 221 DC 2 DJNZ R4, CODE ADDR
222 DD 2 DJNZ R5, CODE ADDR
183 B6 3 CJNE @R0, #DATA, CODE ADDR
223 DE 2 DJNZ R6, CODE ADDR
184 B7 3 CJNE @R1, #DATA, CODE ADDR 224 DF 2 DJNZ R7, CODE ADDR
185 B8 3 CJNE R0, #DATA, CODE ADDR 225 E0 1 MOVX A, @DPTR
226 E1 2 AJMP CODE ADDR
186 B9 3 CJNE R1, #DATA, CODE ADDR
227 E2 1 MOVX A, @R0
187 BA 3 CJNE R2, #DATA, CODE ADDR 228 E3 1 MOVX A, @R1
229 E4 1 CLR A
188 BB 3 CJNE R3, #DATA, CODE ADDR
230 E5 2 MOV A, DATA ADDR
189 BC 3 CJNE R4, #DATA, CODE ADDR 231 E6 1 MOV A, @R0
190 BD 3 CJNE R5, #DATA, CODE ADDR 232 E7 1 MOV A, @R1
233 E8 1 MOV A, R0
191 BE 3 CJNE R6, #DATA, CODE ADDR 234 E9 1 MOV A, R1
192 BF 3 CJNE R7, #DATA, CODE ADDR 235 EA 1 MOV A, R2
193 236 EB 1 MOV A, R3
C0 2 PUSH DATA ADDR
194 237 EC 1 MOV A, R4
C1 2 AJMP CODE ADDR
195 238 ED 1 MOV A, R5
C2 2 CLR BIT ADDR
196 C3 1 CLR C 239 EE 1 MOV A, R6
197 C4 1 SWAP A 240 EF 1 MOV A, R7
198 C5 2 XCH A, DATA ADDR 241 F0 1 MOVX @DPTR, A
199 C6 1 XCH A, @R0 242 F1 2 ACALL CODE ADDR
200 C7 1 XCH A, @R1 243 F2 1 MOVX @R0, A
201 C8 1 XCH A, R0 244 F3 1 MOVX @R1 ,A
202 C9 1 XCH A, R1 245 F4 1 CPL A
203 CA 1 XCH A, R2 246 F5 2 MOV DATA ADDR, A
204 CB 1 XCH A, R3 247 F6 1 MOV @R0, A
205 CC 1 XCH A, R4 248 F7 1 MOV @R1, A
206 CD 1 XCH A, R5 249 F8 1 MOV R0, A
207 CE 1 XCH A, R6 250 F9 1 MOV R1, A
208 CF 1 XCH A, R7 251 FA 1 MOV R2, A
209 D0 2 POP DATA ADDR 252 FB 1 MOV R3, A
210 D1 2 ACALL CODE ADDR 253 FC 1 MOV R4, A
211 D2 2 SETB BIT ADDR 254 FD 1 MOV R5, A
212 D3 1 SETB C 255 FE 1 MOV R6, A
213 D4 1 DA A 256 FF 1 MOV R7, A
MICROCONTROLLER LAB MANUAL| 11

ADDITION OF TWO 8 BIT NUMBERS


AIM: TO WRITE A PROGRAM TO ADD TWO NUMBERS. STORE THE RESULT IN THE MEMORY LOCATION 4350H.
A) IMMEDIATE OPERANDS:
LENGTH
LABEL MNEMONICS IN BYTES
ADDR HEX. CODE COMMENT

MOV A, #DATA1 2 4200 74 09 (A)  09 ; (A)  DATA 1

MOV R2, #DATA2 2 4202 7A 05 (R2)  05 ; (R2)  DATA 2

ADD A, R2 1 4204 2A (A)  (A) + (R2) ; (A)  SUM

MOV DPTR, #4350h 3 4205 90 43 50 (DPTR)  4350H

((DPTR))  (A) ;
MOVX @DPTR,A 1 4208 F0
(MEMORY)  SUM
HERE: SJMP HERE 2 4209 80 FE SHORT JUMP HERE

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
4201 09 Data 1
4350 0E SUM
4203 05 Data 2

B) MEMORY OPERANDS:
LENGTH
LABEL MNEMONICS IN BYTES
ADDRESS HEX. CODE COMMENT
MOV DPTR , #4150H 3 4300 90 41 50 (DPTR)  4150H
MOVX A,@DPTR 1 4303 E0 (A)  ((DPTR))
MOV B,A 2 4304 F5 F0 (B)  (A)
INC DPTR 1 4306 A3 (DPTR)  (DPTR) +1
MOVX A, @DPTR 1 4306 E0 (A)  ((DPTR))
ADD A, B 2 4308 25 F0 (A)  (A) + (B)
MOV DPTR, #4250H 3 430A 90 42 50 (DPTR)  4250H
((DPTR))  (A) ;
MOVX @DPTR,A 1 430D F0
(MEMORY)  SUM

HERE: SJMP HERE 2 430E 80 FE SHORT JUMP HERE

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
4150 09 Data 2
4250 0E SUM
4151 05 Data 1

RESULT :
MICROCONTROLLER LAB MANUAL| 12

SUBTRACTION OF TWO 8 BIT NUMBERS


AIM: TO WRITE A PROGRAM TO SUBTRACT TWO NUMBERS. STORE THE RESULT IN THE MEMORY LOCATION
4450H.
A) IMMEDIATE OPERANDS:
LENGTH
LABEL MNEMONICS ADDR HEX. CODE COMMENT
IN BYTES
MOV A, #DATA1 2 4300 74 09 (A)  09 ; (A)  DATA 1

MOV R2, #DATA2 2 4302 7A 05 (R2)  05 ; (R2)  DATA 2


(A)  (A) - (R2) - CY ;
SUBB A, R2 1 4304 9A
(A)  DIFFERENCE
MOV DPTR, #4450h 3 4305 90 44 50 (DPTR)  4450H
((DPTR))  (A) ;
MOVX @DPTR,A 1 4308 F0
(MEMORY)  DIFFERENCE
HERE: SJMP HERE 2 4309 80 FE SHORT JUMP HERE

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
4201 09 Data 1
4350 04 DIFFERENCE
4203 05 Data 2
B) MEMORY OPERANDS:
LENGTH
LABEL MNEMONICS IN BYTES
ADDRESS HEX. CODE COMMENT
MOV DPTR,#4450H 3 4600 90 44 50 (DPTR)  4450H
MOVX A,@DPTR 1 4603 E0 (A)  ((DPTR))
MOV B,A 2 4604 F5 F0 (B)  (A)
INC DPTR 1 4606 A3 (DPTR)  (DPTR) +1
MOVX A, @DPTR 1 4606 E0 (A)  ((DPTR))
SUBB A, B 2 4608 95 F0 (A)  (A) - (B) – CY
MOV DPTR, #4550H 3 460A 90 45 50 (DPTR)  4550H
((DPTR))  (A) ;
MOVX @DPTR,A 1 460D F0
(MEMORY)  DIFFERENCE
HERE: SJMP HERE 2 460E 80 FE SHORT JUMP HERE

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
4450 09 Data 2
4550 04 DIFFERENCE
4451 05 Data 1

RESULT :
MICROCONTROLLER LAB MANUAL| 13

BCD ADDITION
AIM: TO WRITE A PROGRAM TO ADD TWO NUMBERS PLACED AT LOCATION -----H AND --------H. STORE THE
RESULT IN THE MEMORY LOCATION -----------H.

LABEL MNEMONICS LENGTH ADDR0 HEX. CODE COMMENT


IN BYTES
MOV A, #DATA1 2 4200 74 19 (A)  09 ; (A)  DATA 1
MOV R2, #DATA2 2 4202 7A 25 (R2)  05 ; (R2)  DATA 2
ADD A, R2 1 4204 2A (A)  (A) + (R2) ; (A)  SUM
DA A 1 4205 D4 DECIMAL ADJUST ACCUMULATOR

MOV DPTR, #4950H 3 4206 90 49 50 (DPTR)  4950H


((DPTR))  (A) ;
MOVX @DPTR,A 1 4209 F0
(MEMORY)  SUM
HERE: SJMP HERE 2 420A 80 FE SHORT JUMP HERE

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
4201 19 BCD DATA 1
4950 44 BCD SUM
4203 25 BCD DATA 2
MICROCONTROLLER LAB MANUAL| 14

ADDITION WITH CARRY

AIM: TO WRITE A PROGRAM TO ADD TWO NUMBERS.


STORE THE RESULT IN THE MEMORY LOCATION -----------H AND ALSO STORE THE STATUS OF CARRY

LABEL MNEMONICS LENGTH ADDR HEX. CODE COMMENT


IN BYTES
MOV A, #DATA1 2 4700 74 19 (A)  09 ; (A)  DATA 1
MOV R2, #DATA2 2 4702 7A 25 (R2)  05 ; (R2)  DATA 2
ADD A, R2 1 4704 2A (A)  (A) + (R2) ; (A)  SUM
MOV DPTR, #4850H 3 4705 90 48 50 (DPTR)  4850H
((DPTR))  (A) ;
MOVX @DPTR,A 1 4708 F0
(MEMORY)  SUM
INC DPTR 1 4709 A3 (DPTR)  (DPTR) +1
MOV A, #00H 2 470A 74 00 (A) 00
JNC NXT 2 470C 50 01 IF ( CY == 0 ) JUMP TO NXT
INC A 1 470E 04 (A)  (A) +1
((DPTR))  (A) ;
NXT: MOVX @DPTR, A 1 470F F0
(MEMORY)  STATUS OF CY
HERE: SJMP HERE 2 4710 80 FE

INPUT OUTPUT
DATA DATA
ADDRESS COMMENTS ADDRESS COMMENTS
S1 S2 S1 S2
4701 19 DATA 1 4850 3E SUM
4703 25 DATA 2 4851 00 STATUS OF CARRY

RESULT :
MICROCONTROLLER LAB MANUAL| 15

MULTIPLICATION OF TWO 8 BIT NUMBERS :


AIM: TO WRITE A PROGRAM TO MULTIPLY TWO NUMBERS.
STORE THE RESULT IN THE MEMORY LOCATION ----------H AND ---------H.
A) IMMEDIATE OPERANDS:
LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV A, #DATA1 2 (A)  ---- ; (A)  DATA 1
MOV B, #DATA2 3 (B)  ----; (B)  DATA 2
After (A) * (B) ;
MUL AB 1 (A)  LOB of the product
(B)  HOB of the product
MOV DPTR, # 3 (DPTR)  -----------
MOVX @DPTR,A 1 ((DPTR))  (A)
MOV A,B 2  (B) SUM
(MEMORY)
(A)
INC DPTR 1 (DPTR)  (DPTR) +1
MOVX @DPTR,A 1 ((DPTR))  (A)
HERE: SJMP HERE 2 (MEMORY)  SUM

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2 PRODUCT
DATA 1 LOB
DATA 2 HOB

B) MEMORY OPERANDS:
LENGTH
LABEL MNEMONICS ADDR. HEX. CODE COMMENT
IN BYTES
MOV DPTR,# 3 (DPTR)  ------------
MOVX A,@DPTR 1 (A)  ((DPTR))
MOV B,A 2 (B)  (A)
INC DPTR 1 (DPTR)  (DPTR) +1
MOVX A, @DPTR 1 (A)  ((DPTR))
After (A) * (B) ;
MUL AB 1 (A)  LOB of the product
(B)  HOB of the product
MOV DPTR, # 3 (DPTR) 
MOVX @DPTR,A 1 ((DPTR))  (A)
MOV A,B 2 (A) 
(MEMORY) (B)SUM
INC DPTR 1 (DPTR)  (DPTR) +1
MOVX @DPTR,A 1 ((DPTR))  (A)
HERE: SJMP HERE 2 (MEMORY)  SUM

INPUT OUTPUT
DATA DATA COMMENTS
ADDRESS S1 S2 COMMENTS ADDRES S1 S2 [PRODUCT]
DATA 2 LOB
DATA 1 HOB
MICROCONTROLLER LAB MANUAL| 16

DIVISION OF TWO 8 BIT NUMBERS


AIM: TO WRITE A PROGRAM FOR DIVISION OF TWO NUMBERS. STORE THE RESULT IN THE MEMORY
LOCATION ----------H AND --------H.
A) IMMEDIATE OPERANDS:
LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV A, #DATA1 2 (A)  ---- ; (A)  DATA 1
MOV B, #DATA2 3 (B)  ----; (B)  DATA 2
After (A) / (B) ;
DIV AB 1 (A)  QUOTIENT
(B)  REMAINDER
MOV DPTR, # 3 (DPTR)  -------------
MOVX @DPTR,A 1 ((DPTR))  (A)
MOV A,B 2 (A)  
(MEMORY) (B)SUM
INC DPTR 1 (DPTR)  (DPTR) +1
MOVX @DPTR,A 1 ((DPTR))  (A)
HERE: SJMP HERE 2 (MEMORY)  SUM

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
DATA 1 QUOTIENT
DATA 2 REMAINDER

B) MEMORY OPERANDS:
LENGTH
LABEL MNEMONICS ADDR. HEX. CODE COMMENT
IN BYTES
MOV DPTR,# 3 (DPTR)  ------------H
MOVX A,@DPTR 1 (A)  ((DPTR))
MOV B,A 2 (B)  (A)
INC DPTR 1 (DPTR)  (DPTR) +1
MOVX A, @DPTR 1 (A)  ((DPTR))
After (A) / (B) ;
DIV AB 1 (A)  QUOTIENT
(B)  REMAINDER
MOV DPTR, # 3 (DPTR)  -----------H
MOVX @DPTR,A 1 ((DPTR))  (A)
MOV A,B 2 (A)  
(MEMORY) (B)SUM
INC DPTR 1 (DPTR)  (DPTR) +1
MOVX @DPTR,A 1 ((DPTR))  (A)
HERE: SJMP HERE 2 (MEMORY)  SUM

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDR
S1 S2 S1 S2
DATA 2 QUOTIENT
DATA 1 REMAINDER
MICROCONTROLLER LAB MANUAL| 17

MULTIBYTE ADDITION/MULTIBYTE SUBTRACTION


AIM: TO WRITE A PROGRAM TO ADD TWO NUMBERS ‘12AB35’ AND ‘95C3A7’.STORE THE RESULT IN THE
MEMORY STARTING AT LOCATION -------H.
AIM: TO WRITE A PROGRAM TO SUBTRACT TWO NUMBERS ‘12AB35’ AND ‘95C3A7’.STORE THE RESULT IN THE
MEMORY STARTING AT LOCATION -------H.
LENGTH
SNO LABEL MNEMONICS IN bytes ADDRESS HEX. CODE COMMENT
01 MOV DPTR,# 3 (DPTR) 
02 MOV R0, #35H 2 (R0)  35H
03 MOV R5, #03H 2 (R5)  03
04 TOP1: MOVX A, @DPTR 1
05 MOV @R0, A 1 DATA 1 IS COPIED
06 INC R0 1 INTO IRAM
07 INC DPTR 1 STARTING AT
08 DJNZ R5, TOP1 2 ADDRESS 35H
09 MOV DPTR, # 3 (DPTR) 
10 MOV R0, #45H 2 (R0)  35H
11 MOV R5, #03H 2 (R5)  03
12 TOP2: MOVX A, @DPTR 1
13 MOV @R0,A 1 DATA 2 IS COPIED
14 INC DPTR 1 INTO IRAM
15 INC R0 1 STARTING AT
16 DJNZ R5, TOP2 2 ADDRESS 45H
17 MOV DPTR, # 3 (DPTR) 
18 MOV R0, #35H 2 (R0)  35H
19 MOV R1, #45H 2 (R0)  45H
20 MOV R5, #03H 2 (R5)  03
21 CLR C 1 CLEAR CY FLAG
22 TOP3: MOV A, @R0 1
DATA 1 Is
23 ADDC A, @R1/SUBB A, @R1 1
Added/Subtracted
24 MOVX @DPTR,A 1
To/From DATA 2.
25 INC DPTR 1
Result is stored
26 INC R1 1
into ERAM starting
27 INC R0 1
at address ---------h
28 DJNZ R5, TOP3 2
29 MOV A, #00H 2 (A)  00
30 JNC NXT 2 Check CY status
31 INC A 1 (A)  (A) +1
32 NXT: MOVX @DPTR,A 1 (DPTR)  (A)
33 HLT: SJMP HLT 2
MICROCONTROLLER LAB MANUAL| 18

MULTIBYTE ADDITION: MULTIBYTE SUBTRACTION:

INPUT INPUT
DATA1 COMMENTS DATA1 COMMENTS
ADDRESS ADDRESS
S1 S2 S1 S2
BYTE 1 [LOB] BYTE 1 [LOB]
BYTE 2 BYTE 2
BYTE 3 [HOB] BYTE 3 [HOB]

INPUT INPUT
DATA2 COMMENTS DATA2 COMMENTS
ADDRESS ADDRESS
S1 S2 S1 S2
BYTE 1 [LOB] BYTE 1 [LOB]
BYTE 2 BYTE 2
BYTE 3 [HOB] BYTE 3 [HOB]

OUTPUT1 OUTPUT1
OUTPUT2 OUTPUT2
DATA COMMENTS DATA COMMENTS
ADDRESS ADDRESS
S1 S2 (SUM) S1 S2 (DIFFERENCE)

BYTE 1 [LOB] BYTE 1 [LOB]


BYTE 2 BYTE 2
BYTE 3 BYTE 3
BYTE 4 [HOB] BYTE 4 [HOB]

SET 1: SET 2: SET 1: SET 2:


1 2 A B 3 5 1 2 A 4 3 5 9 5 C 5 A 7 1 2 A 4 3 5
9 5 C 5 A 7 + F 0 0 5 3 8 + 1 2 A B 3 5 - F 0 0 5 3 8 -
= = = = = = = = = = = = = = = = = = = = = = = = = = =
A 8 7 0 D C 8 3 1 A 7 2
= = = = = = = = = = = = = = = = = = = = = = = = = = = =
MICROCONTROLLER LAB MANUAL| 19

SUM OF ‘N’ NUMBERS IN AN ARRAY


AIM: TO WRITE A PROGRAM TO FIND THE SUM OF ‘N’ BYTES STARTING AT LOCATION ------H. STORE THE
RESULTS IN THE MEMORY LOCATIONS -------H AND --------H.

LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV DPTR, # 3

MOVX A, @DPTR 1

MOV R0, A 1

MOV B, #00H 3

MOV R1,B 2

INC DPTR 1

START: CLR C 1

MOVX A, @DPTR 1

ADD A, B 2

MOV B, A 2

JNC SUN 2

INC R1 1

SUN: INC DPTR 1

DJNZ R0, START 2

MOV DPTR, # 3

MOV A, B 2

MOVX @DPTR, A 1

INC DPTR 1

MOV A, R1 1

MOVX @DPTR, A 1

HERE: SJMP HERE 2

INPUT OUTPUT
DATA1 COMMENTS ADDRESS DATA2 COMMENTS
ADDRESS
S1 S2 S1 S2 SUM
‘N’ VALUE
LOB
DATA 1
DATA 2
HOB
DATA 3
MICROCONTROLLER LAB MANUAL| 20

ASCENDING/DESCENDING ORDER
AIM: TO WRITE A PROGRAM TO ARRANGE THE GIVEN SET OF NUMBERS IN ASCENDING/DESCENDING ORDER.

LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV R0, #03H 2
AG: MOV DPTR, # 3
MOV R1, #03H 2
BACK: MOV R2, DPL 2
MOVX A, @DPTR 1
MOV B, A 2
INC DPTR 1
MOVX A, @DPTR 1
CJNE A, B, NE 3
SJMP SKIP 2
NE: JC SKIP / JNC SKIP 2
MOV DPL, R2 2
(JC SKIP)
MOVX @DPTR, A 1
INC DPTR 1
MOV A, B 2
MOVX @DPTR, A 1
SKIP: DJNZ R1, BACK 2
DJNZ R0, AG 2
HERE: SJMP HERE 2
ASCENDING ORDER:
INPUT OUTPUT
DATA1 COMMENTS ADDRESS DATA2 COMMENTS
ADDRESS
S1 S2 S1 S2 SORTED LIST
DATA 1
DATA 2
DATA 3
DATA 4
DESCENDING ORDER:
INPUT OUTPUT
DATA1 COMMENTS ADDRESS DATA2 COMMENTS
ADDRESS
S1 S2 S1 S2 SORTED LIST
DATA 1
DATA 2
DATA 3
DATA 4
MICROCONTROLLER LAB MANUAL| 21

BLOCK TRANSFER
AIM : TO WRITE A PROGRAM TO TRANSFER THE ENTIRE GROUP OF DATA STARTING AT -------H TO NEW PLACE
STARTING AT -----H.

LENGTH
SNO LABEL MNEMONICS IN BYTES
ADDRESS HEX. CODE COMMENT

01 MOV DPTR, # 3

02 MOVX A, @DPTR 1

03 MOV R3, A 1

04 MOV R4, A 3

05 MOV R0, #35H 2

06 LOOP1: INC DPTR 1

07 MOVX A, @DPTR 1

08 MOV @R0, A 1

09 INC R0 1

10 DJNZ R3, LOOP1 2

11 MOV R0, #35H 2

12 MOV DPTR, # 3

13 LOOP2: MOV A, @R0 1

14 MOVX @DPTR, A 1

15 INC R0 1

16 INC DPTR 1

17 DJNZ R4, LOOP2 2

18 HERE: SJMP HERE 2

INPUT OUTPUT
DATA1 COMMENTS ADDRESS DATA2 COMMENTS
ADDRESS
S1 S2 [SOURCE BLOCK] S1 S2 [DESTINATION BLOCK ]
‘N’ VALUE DATA 1
DATA 1 DATA 2
DATA 2 DATA 3
DATA 3 DATA 4
DATA 4
MICROCONTROLLER LAB MANUAL| 22

PACKED DECIMAL TO UNPACKED DECIMAL


AIM:
TO W WRITE A PROGRAM TO SPLIT THE CONTENTS OF XX30H AND PLACE THE HOB IN XX65H , THE LOB IN
XX66H.

LENGTH
SNO LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
01 MOV DPTR, # 3
02 MOVX A, @DPTR 1
03 MOV B, A 2
04 SWAP A 1
05 ANL A, #0FH 2
06 INC DPTR 1
07 MOVX @DPTR, A 1
08 MOV A, B 2
09 ANL A, #0FH 2
10 INC DPTR 1
11 MOVX @DPTR, A 1
12 HLT: SJMP HLT 2

INPUT OUTPUT
CONTENTS COMMENTS ADDRESS CONTENTS COMMENTS
ADDRESS
S1 S2 S1 S2 UNPACKED BCD
MSD
PACKED BCD
LSD
MICROCONTROLLER LAB MANUAL| 23

EVALUATION OF BOOLEAN EXPRESSION


AIM: TO WRITE A PROGRAM TO EVALUATE THE BOOLEAN EXPRESSION Y = AB’ + A’B

LABEL MNEMONICS LENGTH ADDRESS HEXA CODE COMMENT


IN BYTES

SETB 02 2 4850 D2 02 Set the bit at address 02


SETB 03 2 4852 D2 03 Set the bit at address 03
MOV C, 02 2 4854 02 (CY)  ((02))
ANL C, / 03 2 4856 03 (CY)  (CY) ^ ̅̅̅̅̅̅̅̅̅
((𝟎𝟑))
MOV 05, C 2 4858 05 ((05))  (CY)
MOV C, 03 2 485A 03 (CY)  ((03))
ANL C, / 02 2 485C 02 (CY)  (CY) ^ ̅̅̅̅̅̅̅̅̅
((𝟎𝟐))
ORL C, 05 2 485E 05 (CY)  (CY) v ((05))
MOV 07, C 2 4860 07 ((07))  (CY)
MOV DPTR, #4650H 3 4862 90 46 50 (DPTR)  4650H
MOV A, 20H 2 4864 E5 20 (A)  ((20H))
MOVX @DPTR, A 1 4865 F0 ((DPTR))  (A)
HLT: SJMP HLT 2 4867 80 FE SHORT JUMP TO HLT

INPUT 1 OUTPUT 1
ADDR. CONTENT
ADDR. INSTRUCTION OPCODE
20H 07 06 05 04 03 02 01 00
4850 SETB 02 D2 02 Y AB’ B A
4650H
4852 SETB 03 D2 03

INPUT 2 OUTPUT 2
ADDR. CONTENT
ADDR. INSTRUCTION OPCODE
20H 07 06 05 04 03 02 01 00
4850 SETB 02 D2 02
4650H
4852 CLR 03 C2 03

INPUT 3 OUTPUT 3
ADDR. CONTENT
ADDR. INSTRUCTION OPCODE
20H 07 06 05 04 03 02 01 00
4850 CLR 02 C2 02
4650H
4852 CLR 03 C2 03

INPUT 4 OUTPUT 4
ADDR. CONTENT
ADDR. INSTRUCTION OPCODE
20H 07 06 05 04 03 02 01 00
4850 CLR 02 C2 02
4650H
4852 SETB 03 D2 03
MICROCONTROLLER LAB MANUAL| 24

LARGEST AND SMALLEST NUMBER IN AN ARRAY


AIM : TO WAP TO FIND THE LARGEST/SMALLEST NUMBER IN A LIST.
LENGTH
SNO LABEL MNEMONICS IN BYTES ADDR HEX. CODE COMMENTS

01 MOV DPTR, #4673H 3 4425 90 46 73 (DPTR)  4673H


02 MOV 40H,#00 75 40 00
3 4428
/ MOV 40H,#0FFH 75 40 FF
03 MOV R5,#05H 2 (R5)  05; ‘N’
04 LOOP2: MOVX A, @DPTR 1 VALUE
05 CJNE A,40H,LOOP1 3
06 LOOP3: INC DPTR 1
07 DJNZ R5, LOOP2 2
08 MOV DPTR, #4773H
09 MOV A, 40H 2
10 MOVX @DPTR,A 1
11 HLT: SJMP HLT 2
12 LOOP1: JC LOOP3 / JNC LOOP3 2
13 MOV 40H,A 2
14 SJMP LOOP3 2

INPUT INPUT
NOTE : (02) MOV 40H,#00 NOTE : (02) MOV 40H,#FFH
(12) JC LOOP3 (12) JNC LOOP3
ADDRESS S1 S2 COMMENTS ADDRESS S1 S2 COMMENTS
DATA 1 DATA 1
DATA 2 DATA 2
DATA 3 DATA 3
DATA 4 DATA 4
DATA 5 DATA 5
DATA 6 DATA 6

OUTPUT OUTPUT
S1 S2
ADDRESS COMMENTS S1 S2
ADDRESS COMMENTS
LARGEST
NUMBER IN SMALLEST
4773 AN ARRAY 4773 NUMBER IN
AN ARRAY
MICROCONTROLLER LAB MANUAL| 25

NUMBER OF 1’S & 0’S IN A GIVEN VALUE:


AIM: TO WAP TO FIND NUMBER OF 1’S/0’S IN A GIVEN VALUE.

LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV DPTR, # 3
MOVX A, @DPTR 1
MOV R5, #08H 2
MOV R1, #00H 2
CLR C 1
LOOP: RRC A 1
JNC NXT / JC NXT 2
INC R1 1
NXT: (JC
DJNZNXT) (0’S)
R5, LOOP 2
INC DPTR 1
MOV A, R1 1
MOVX @DPTR, A 1
HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
DATA (FOR 1’S) NO OF 1’S

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
DATA (FOR 0’S) NO OF 0’S
MICROCONTROLLER LAB MANUAL| 26

SQUARE ROOT OF GIVEN NUMBER


AIM: TO WAP TO FIND THE SQUARE ROOT OF GIVEN NUMBER .

LENGTH
SNO LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
01 MOV DPTR, #4350H 3
02 MOVX A, @DPTR 1
03 MOV R1,A 1
04 MOV R2, #01 2
05 LOOP: MOV A , R1 1
06 MOV B , R2 2
07 DIV AB 1
08 MOV R3, A 1
09 MOV R4 , B 2
10 SUBB A , R2 1
11 JZ Result 2
12 INC R2 1
13 SJMP LOOP 2
14 Result: MOV DPTR , #4450H 3
15 MOV A, R3 1
16 MOVX @DPTR, A 1
17 HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS CONTENT
ADDRESS ADDRESS COMMENTS
S1 S2 S1 S2
4350 09 DATA 4450 03 SQUARE ROOT
MICROCONTROLLER LAB MANUAL| 27

FACTORIAL OF GIVEN NUMBER [N!]

AIM: TO WAP TO FIND THE FACTORIAL OF GIVEN NUMBER .

LENGTH
SNO LABEL MNEMONICS IN BYTES
ADDRESS HEX. CODE COMMENT
01 MOV DPTR, #4350H 3
02 MOVX A, @DPTR 1
03 MOV R0,A 1
04 MOV A, #01 2
05 MOV B,A 2
06 MOV R1 , A 1
07 LOOP: MUL AB 1
08 MOV R5, B 2
09 MOV B , A 2
10 MOV A , R1 1
11 INC A 1
12 MOV R1 , A 1
13 DJNZ R0 ,LOOP 2
14 INC DPTR 1
15 MOV A, R5 1
16 MOVX @DPTR, A 1
17 INC DPTR 1
18 MOV A, B 2
19 MOVX @DPTR, A 1
20 HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS ADDRESS CONTENT COMMENTS
ADDRESS
S1 S2 S1 S2 FACTORIAL
4351 HOB
4350 DATA
4352 LOB
MICROCONTROLLER LAB MANUAL| 28

LOGICAL OPERATIONS;
A) 1’S AND 2’S COMPLEMENT OF 8 BIT NUMBERS
AIM : TO WAP TO FIND 1’S AND 2’S COMPLEMENT OF GIVEN 8 BIT NUMBER.

LENGTH
LABEL MNEMONICS IN BYTES
ADDRESS HEX. CODE COMMENT

MOV A, #DATA 2
CPL A 1
MOV DPTR, # 3
MOVX @DPTR, A 1
INC A 1
INC DPTR 1
MOVX @DPTR, A 1
HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS ADDRESS CONTENT COMMENTS
ADDRESS
S1 S2 S1 S2
1’S COMPLEMENT
DATA
2’S COMPLEMENT

B) SET SPECIFIC BIT OF AN 8 BIT NUMBER : AIM : TO SET THE THIRD & FIFTH BIT OF DATA 1

LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV A, #DATA1 2
MOV R2, #DATA2 2
ORL A, R2 1
MOV DPTR, # 3
MOVX @DPTR, A 1
HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS DATA
ADDR ADDR COMMENTS
S1 S2 S1 S2
DATA 1
RESULT OF LOGIC OR
28 28 DATA 2
MICROCONTROLLER LAB MANUAL| 29

C) MASK BIT 0 AND BIT 7 OF AN 8 BIT NUMBER


LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV A, #DATA1 2
MOV R2, #DATA2 2
ANL A, R2 1
MOV DPTR, # 3
MOVX @DPTR, A 1
HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS DATA
ADDR ADDR COMMENTS
S1 S2 S1 S2
DATA 1
RESULT OF LOGIC AND
7E 7E DATA 2

D) EXOR OF TWO 8 BIT NUMBERS


LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV A, #DATA1 2
MOV R2, #DATA2 2
XRL A, R2 1
MOV DPTR, # 3
MOVX @DPTR, A 1
HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS DATA
ADDR ADDR COMMENTS
S1 S2 S1 S2
DATA 1
RESULT OF LOGIC XOR
DATA 2
MICROCONTROLLER LAB MANUAL| 30

NUMBER CONVERSION :
A) DECIMAL TO HEXADECIMAL CONVERSION
AIM: TO WAP TO CONVERT DECIMAL NUMBER INTO ITS HEXA DECIMAL EQUIVALENT.

LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
MOV DPTR, # 3
MOVX A, @DPTR 1
MOV R5, A 1
MOV B, #0AH 3
ANL A, #F0H 2
SWAP A 1
MUL AB 1
MOV R2, A 1
MOV A, R5 1
ANL A, #0FH 2
ADD A, R2 1
INC DPTR 1
MOVX @DPTR, A 1
HERE: SJMP HERE 2

INPUT OUTPUT
DATA COMMENTS ADDRESS DATA COMMENTS
ADDRESS
S1 S2 S1 S2
BCD HEXA
MICROCONTROLLER LAB MANUAL| 31

B) HEXA DECIMAL TO DECIMAL CONVERSION:


AIM: TO WAP TO CONVERT HEXA DECIMAL NUMBER INTO ITS DECIMAL EQUIVALENT.

LENGTH
LABEL MNEMONICS ADDRESS HEXA CODE COMMENT
IN BYTES
MOV DPTR, # 3
MOVX A, @DPTR 1
MOV B, #64H 3
DIV AB 1
MOV DPTR, # 3
MOVX @DPTR, A 1
MOV A, B 2
MOV B, #0AH 3
DIV AB 1
INC DPTR 1
MOVX @DPTR, A 1
INC DPTR 1
MOV A, B 2
MOVX @DPTR, A 1
HLT: SJMP HLT 2

INPUT OUTPUT
DATA1 COMMENTS ADDRESS DATA2 COMMENTS
ADDRESS
S1 S2 S1 S2 BCD
100’S
HEXA 10’S
1’S
MICROCONTROLLER LAB MANUAL| 32

C. ASCII TO DECIMAL CONVERSION


AIM: TO WAP TO CONVERT A NUMBER IN ASCII TO ITS DECIMAL EQUIVALENT.

LENGTH
LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES

MOV DPTR, # 3

MOV A, #DATA 2

CLR C 1

SUBB A, #30H 2

CLR C 1

SUBB A, #0AH 2

JC STR 2

MOV A, #FFH 2

SJMP LI 2

STR: ADD A, #0AH 2

LI: MOVX @DPTR, A 1

HLT: SJMP HLT 2

ASCII BCD ASCII BCD ASCII BCD ASCII BCD ASCII BCD
30 00 31 01 32 02 33 03 34 04
35 05 36 06 37 07 38 08 39 09

INPUT OUTPUT
DATA1 ADDRESS DATA2 COMMENTS
ADDRESS COMMENTS
S1 S2 S1 S2
ASCII BCD
MICROCONTROLLER LAB MANUAL| 33

LEAST COMMON MULTIPLE

AIM: TO WRITE AND EXEXCUTE AN ALP FOR FINDING THE LCM OF TWO HEXADECIMAL NUMBERS PLACED AT
ADDRESS 436AH AND 436BH, AND STORE THE RESULT AT ADDRESS 436CH.

LENGTH
SNO LABEL MNEMONICS IN BYTES
ADDR HEX. CODE COMMENTS
01 MOV DPTR, #436AH 3
02 MOVX A, @DPTR 1
03 MOV R0, A 1
04 INC DPTR 1
05 MOVX A, @DPTR 1
06 MOV R1,A 1
07 NXTD: MOV R2,A 1
08 MOV B ,R0 2
09 DIV AB 1
10 MOV R3,B 2
11 CJNE R3,#00,NXT 3
12 MOV A,R2 1
13 INC DPTR 1
14 MOVX @DPTR, A 1
15 HLT: SJMP HLT 2
16 NXT: MOV A,R2 1
17 ADD A,R1 1
18 SJMP NXTD 2

SLNO INPUT IN
HEXA MULTIPLES IN DECIMAL
DECIMAL
DECIMAL
1 02 02 2,4,6,8,10,12,14,16,18,20,22,….

2 05 05 5,10,15,20,25,30,35,40,45,…..

3 10 0A 10,20,30,40,50,60,70,80,90,….

4 16 10 16,32,48,64,80,96,….

SLNO INPUT OUTPUT


DATA1 AT ADDRESS 436AH DATA2 AT ADDRESS 436BH LCM AT ADDRESS 436CH
1 0A 10 [50]16 = [80]10

4
MICROCONTROLLER LAB MANUAL| 34

GREATEST COMMON DIVISOR


AIM: TO WRITE AND EXEXCUTE AN ALP FOR FINDING THE GCD OF TWO HEXADECIMAL NUMBERS PLACED AT
ADDRESS 436AH AND 436BH, AND STORE THE RESULT AT ADDRESS 436CH.
LENGTH
SNO LABEL MNEMONICS ADDR HEX. CODE COMMENTS
IN BYTES
01 MOV DPTR, #463AH 3
02 MOVX A, @DPTR 1
03 MOV R0, A 1
04 INC DPTR 1
05 MOVX A, @DPTR 1
06 MOV R1,A 1
07 MOV B,R0 2
08 CJNE A,B,LOOP1 3
09 LOOP1: JNC NEXT 2
10 MOV R0,A 1
11 MOV R1,B 2
12 NEXT: MOV A,R1 1
13 MOV B ,R0 2
14 DIV AB 1
15 MOV A,B 2
16 CJNE A,#00H,LOOP2 3
17 SJMP LAST 2
18 LOOP2: MOV A,R0 1
19 MOV R1,A 1
20 MOV R0,B 2
21 SJMP NEXT 2
22 LAST: MOV A,R0 1
23 INC DPTR 1
24 MOVX @DPTR,A 1
25 HLT: SJMP HLT 2

INPUT IN INPUT IN
DIVISORS IN
SLNO HEXA SLNO HEXA DIVISORS IN DECIMAL
DECIMAL DECIMAL DECIMAL
DECIMAL DECIMAL
1 08 02 1,2,4,8 5 14 0E 1,2,7,14
2 09 05 1,3,9 6 16 10 1,2,4,8,16
3 10 0A 1,2,5,10 7 21 15 1,3,7,21
4 12 0C 1,2,3,4,6,12 8 28 1C 1,2,4,7,14,28

SNO INPUT OUTPUT


DATA1 AT ADDRESS 463AH DATA2 AT ADDRESS 463BH GCD AT ADDRESS 463CH
1 0C 1C 04
2
3
4
MICROCONTROLLER LAB MANUAL| 35

EVEN PARITY/ODD PARITY GENERATOR


AIM:

SNO LABEL MNEMONICS LENGTH ADDR HEXA CODE COMMENTS


IN BYTES
01 MOV DPTR, #4665H 3
02 MOVX A, @DPTR 1
03 MOV R0, A 1
04 MOV R1,#07 2
05 MOV R2,#00 2
06 NXTB: JNB ACC.0,NOBIT 3
07 INC R2 1
08 NOBIT: RR A 1
09 DJNZ R1,NXTB 2
10 MOV A,R2 1
JNB ACC.0,EVOD
11 3
/ JB ACC.0,EVOD

12 MOV A,R0 1
13 SETB ACC.7 2
14 SJMP STOR 2
15 EVOD: MOV A,R0 1
16 STOR: INC DPTR 1
17 MOVX @DPTR,A 1
18 HLT: SJMP HLT 2

JNB ACC.0, EVOD


INPUT OUTPUT
SLNO DATA AT ADDRESS 4665H Result at address 4666h
IN IN BINARY IN IN BINARY [ P – PARITY BIT ]
HEXA D7 D6 D5 D4 D3 D2 D1 D0 HEXA P D6 D5 D4 D3 D2 D1 D0
1
2

JB ACC.0, EVOD
INPUT OUTPUT
SLNO DATA AT ADDRESS 4665H Result at address 4666h

IN IN BINARY IN IN BINARY [ P – PARITY BIT ]


HEXA D7 D6 D5 D4 D3 D2 D1 D0 HEXA P D6 D5 D4 D3 D2 D1 D0
1
2
MICROCONTROLLER LAB MANUAL| 36

TIME DELAY PROGRAM

AIM :
TO WRITE A PROGRAM THAT GENERATE A TIME DELAY OF ------ SECONDS WITH 8051 AT THE CLOCK RATE
OF 11.0592MHZ.[ INTERFACING DAC ]

LENGTH
SNO LABEL MNEMONICS ADDRESS HEX. CODE COMMENT
IN BYTES
01 MOV DPTR, #FFC0H 3
02 MOV A, #00H 2
03 HERE: CPL A 1
04 MOVX @DPTR, A 1
05 LCALL DELAY 3
06 SJMP HERE 2
07 DELAY: MOV R0, #C4H 2
08 MOV TMOD, #10H 3
09 LOOP1: MOV TH1, #00H 3
10 MOV TL1, #00H 3
11 SETB TR1 2
12 AGAIN: JNB TF1, AGAIN 3
13 CLR TR1 2
14 CLR TF1 2
15 DJNZ R0, LOOP1 2
16 RET 1

CALCULATION FOR TIME DELAY :


Desired Time Delay : 14seconds :: Crystal Frequency : 11.0592 MHz.
Therefore System Frequency = (11.0592 MHz / 12) = 921.6 KHz.
Time Period ( one machine cycle ) T = (1 / 921.6KHz) = 1.085 µs .
Desired Time Delay = Number of Counts * T
Therefore Number of Counts = Desired Time Delay / T
= ( 14 / 1.085 µs ) = 12.903 * 106
Decimal value = ( 12.903 * 106) /65536 = 196 (approximately)
Number of count = (196)10 = (C4)16
MICROCONTROLLER LAB MANUAL| 37

STEPPER MOTOR

AIM : TO INTERFACE A STEPPER MOTOR WITH MICROCONTROLLER 8051.

LENGTH
SNO LABEL MNEMONICS ADDRESS HEX. CODE COMMENTS
IN BYTES
01 START: MOV DPTR, #463AH 3
02 MOV R0, #04H 2
03 JO: MOVX A, @DPTR 1
04 PUSH DPH 2
05 PUSH DPL 2
06 MOV DPTR, #FFC0H 3
07 MOV R2, #04H 2
08 MOV R1, #0FH 2
09 DLY1: MOV R3, #0FH 2
10 DLY: DJNZ R3, DLY 2
11 DJNZ R1, DLY1 2
12 DJNZ R2, DLY1 2
13 MOVX @DPTR, A 1
14 POP DPL 2
15 POP DPH 2
16 INC DPTR 1
17 DJNZ R0, JO 2
18 SJMP START 2

CLOCK WISE INPUT ANTI CLOCK WISE INPUT


DATA1 COMMENTS DATA1 COMMENTS
ADDRESS ADDRESS
S1 A1 A2 B1 B2 S1 A1 A2 B1 B2
463A 09 1 0 0 1 463A 0A 1 0 1 0
463B 05 0 1 0 1 463B 06 0 1 1 0
463C 06 0 1 1 0 463C 05 0 1 0 1
463D 0A 1 0 1 0 463D 09 1 0 0 1

SNO STEP ANGLE STEP PER REVOLUTION


1
2
3
4
5
6
MICROCONTROLLER LAB MANUAL| 38

TRAFFIC LIGHT CONTROLLER


AIM: TO WRITE A PROGRAM TO SIMULATE TRAFFIC LIGHT CONTROL SYSTEM.
LENGTH
SNO LABEL MNEMONICS ADDRESS HEX. CODE COMMENTS
IN BYTES
01 MOV A, #80H 2
02 MOV DPTR, #FF0FH 3
03 MOVX @DPTR, A 1
04 MOV R5, #06H 2
05 MOV DPTR,#4651H 3
06 MOV R0, #35H 2
07 LOOP: MOVX A, @DPTR 1
08 MOV @R0, A 1
09 INC DPTR 1
10 INC R0 1
11 DJNZ R5, LOOP 2
12 START: MOV R0, #35H 2
13 MOV R4, #02H 2
14 NEXT: MOV A, @R0 1
15 MOV DPTR, #FF0CH 3
16 MOVX @DPTR, A 1
17 INC R0 1
18 MOV A, @R0 1
19 MOV DPTR, #FF0DH 3
20 MOVX @DPTR, A 1
21 INC R0 1
22 MOV DPTR,#FF0EH 3
23 MOV A, @R0 1
24 MOVX @DPTR, A 1
25 INC R0 1
26 LCALL DELAY 3
27 DJNZ R4, NEXT 2
28 LJMP START 2
29 DELAY: MOV R2, #12H 2
30 L3: MOV R3, #FFH 2
31 L2: MOV R6, #FFH 2
32 L1: DJNZ R6, L1 2
33 DJNZ R3, L2 2
34 DJNZ R2, L3 2
35 RET 1
MICROCONTROLLER LAB MANUAL| 39

ADDRESS PORT A D8 D7 D6 D5 D4 D3 D2 D1

ADDRESS PORT B D8 D7 D6 D5 D4 D3 D2 D1

ADDRESS PORT C D8 D7 D6 D5 D4 D3 D2 D1

TRAFFIC LIGHT CONTROLLER


AIM: TO WRITE A PROGRAM TO SIMULATE TRAFFIC LIGHT SYSTEM.
LENGTH
SNO LABEL MNEMONICS IN BYTES
ADDR HEX. CODE COMMENTS
01 MOV A, #80H 2
02 MOV DPTR, #FF0FH 3
03 MOVX @DPTR, A 1
04 MOV R5, #02H 2
05 MOV DPTR,#4651H 3
06 MOV R0, #35H 2
07 LOOP: MOVX A, @DPTR 1
08 MOV @R0, A 1
09 INC DPTR 1
10 INC R0 1
11 DJNZ R5, LOOP 2
12 START: MOV R0, #35H 2
13 MOV R4, #02H 2
14 NEXT: MOV A, @R0 1
15 MOV DPTR, #FF0CH 3
16 MOVX @DPTR, A 1
17 INC R0 1
18 MOV A, @R0 1
19 MOV DPTR, #FF0DH 3
20 MOVX @DPTR, A 1
21 INC R0 1
22 LCALL DELAY 3
23 DJNZ R4, NEXT 2
24 LJMP START 2
25 DELAY: MOV R2, #12H 2
26 L3: MOV R3, #FFH 2
27 L2: MOV R6, #FFH 2
28 L1: DJNZ R6, L1 2
29 DJNZ R3, L2 2
30 DJNZ R2, L3 2
31 RET 1
MICROCONTROLLER LAB MANUAL| 40

INTERFACING MULTIPLEXED 7 SEGMENT LED DISPLAY


TO DISPLAY 4 CHARACTERS (ABCD) BY IMPLEMENTING SOFTWARE MULTIPLEXING.

LABEL MNEMONICS LENGTH ADDR HEX.CODE COMMENT


SNO IN BYTES

01 MOV DPTR,#CNTRL 3 4100 90 FF 0F


02 MOV A,#80H 2 4103 74 80
03 MOVX @DPTR,A 1 4105 F0
04 MOV DPTR,#PORTA 3 4106 90 FF 0C
05 MOV A,#FFH 2 4109 74 FF
06 MOVX @DPTR,A 1 410B F0
07 MOV DPTR,#PORTB 3 410C 90 FF 0D
08 MOVX @DPTR,A 1 410F F0
09 START: MOV DPTR,#4200H 3 4110 90 42 00
10 MOV R0,DPL 2 4113 A8 82
11 MOV R1,DPH 2 4115 A9 83
12 MOV R2,#04H 2 4117 7A 04
13 MOV A,#01 2 4119 74 01
14 MOV DPTR,#TEMP 3 411B 90 50 00
15 MOVX @DPTR,A 1 411E F0
16 CONT: MOV DPL,R0 2 411F 88 82
17 MOV DPH,R1 2 4121 89 83
18 MOVX A,@DPTR 1 4123 E0
19 MOV DPTR,#PORTA 3 4124 90 FF 0C
20 MOVX @DPTR,A 1 4127 F0
21 MOV DPTR,#TEMP 3 4128 90 50 00
22 MOVX A,@DPTR 1 412B E0
23 CPL A 1 412C F4
24 MOV DPTR,#PORTB 3 412D 90 FF 0D
25 MOVX @DPTR,A 1 4130 F0
26 LCALL DELAY 3 4131 12 41 43
27 INC R0 1 4134 42
08
28 MOV DPTR,#TEMP 3 4135 90 50 00
29 MOVX A,@DPTR 1 4138 E0
30 MOV R6,A 1 4139 FE
31 ADD A,R6 1 413A 2E
32 MOV DPTR,#TEMP 3 413B 90 50 00
33 MOVX @DPTR,A 1 413E F0
34 DJNZ R2,CONT 2 413F DA DF
35 JMP START 2 4141 21 10
36 DELAY: MOV R3,#02H 2 4143 7B 02
37 L3: LCALL DELY 3 4145 12 41 4B
38 DJNZ R3,L3 2 4148 DB FB
39 RET 1 414A 22
MICROCONTROLLER LAB MANUAL| 41

40 DELY: MOV R4,#FFH 2 414B 7C FF


41 L2: MOV R5,#FFH 2 414D 7D FF
42 L1: DJNZ R5,L1 2 414F DD FE
43 DJNZ R4,L2 2 4151 DC FA
44 RET 1 4153 22
ORG 4200H
45 DB 88H,80H,C6H,C0H 4 4200 88 80 C6 C0
46 END 4204

INPUT: CONTENT 7 SEGMENTS OUTPUT IN 7


ADDRESS COMMENT O/P SEGMENT
DATA S1(HEXA) dp G f e D c b a

4200 88 DATA 1 1 0 0 0 1 0 0 0

4201 80 DATA2 1 0 0 0 0 0 0 0
S1
4202 C6 DATA3 1 1 0 0 0 1 1 0

4203 C0 DATA4 1 1 0 0 1 0 0 0

4200 DATA 1

4201 DATA2
S2
4202 DATA3

4203 DATA4

4200 DATA 1

4201 DATA2
S3
4202 DATA3

4203 DATA4
MICROCONTROLLER LAB MANUAL| 42

TO DISPLAY A STRING VBMB-18 LCD USING 8051 MICRO CONTROLLER


SNO LABEL MNEMONICS LENGTH ADDR HEX.CODE COMMENTS
01 LCALL FUNSET 3 4100 12 41 2A
02 LCALL CLRDIS 3 12 41 6C
03 LCALL SHFOFF 3 12 41 37
04 LCALL CURON 3 12 41 44
05 LCALL SETADDR 3 12 41 1B
06 MOV DPTR,#419EH 3 90 41 9E
07 MOV R1,DPL 2 A9 82
08 MOV R2,DPH 2 AA 83
09 LCALL PUTSTR 3 12 41 79
10 HLT: SJMP HLT 2 80 FE
SETADD SETS DD RAM ADDRESS
11 R: LCALL BSYCHK 3 12 41 51
12 LCALL SETO 3 12 41 65
13 MOV A,#OOH 2 74 00
14 ORL A,#80H 2 44 80
15 MOV DPTR,#0FFC4H 3 90 FF C4
16 MOVX @DPTR,A 1 F0
17 RET 1 22
18 FUNSET LCALL BSYCHK 3 12 41 51
19 : LCALL SET0 3 12 41 65
20 MOV A,#38H 2 74 38
21 MOV DPTR,#0FFC4H 3 90 FF C4
22 MOVX @DPTR,A 1 F0
23 RET 1 22
24 SHFOFF: LCALL BSYCHK 3 12 41 51
25 LCALL SETO 3 12 41 65
26 MOV A,#06H 2 74 06
27 MOV DPTR,#0FFC4H 3 90 FF C4
28 MOVX @DPTR,A 1 F0
29 RET 1 22
30 CURON: LCALL BSYCHK 3 12 41 51
31 LCALL SETO 3 12 41 65
32 MOV A,#0FH 2 74 0F
33 MOV DPTR,#0FFC4H 3 90 FF C4
34 MOVX @DPTR,A 1 F0
35 RET 1 22
36 BSYCHK LCALL SET2 3 12 41 5E
37 :BBB: MOV DPTR,#0FFC4H 3 90 FF C4
38 MOVX A,@DPTR 1 E0
39 ANL A,#80H 2 54 80
40 RLC A 1 33
41 JC BBB 2 40 F7
42 RET 1 22
MICROCONTROLLER LAB MANUAL| 43

43 SET2: MOV A,#0AH 2 74 0A


44 MOV DPTR,#0FFC0H 3 90 FF C0
45 MOVX @DPTR,A 1 F0
46 RET 1 22
47 SET0: MOV A,#0AH 2 74 08
48 MOV DPTR,#0FFC0H 3 90 FF C0
49 MOVX @DPTR,A 1 F0
50 RET 1 22
51 CLRDIS: LCALL BSYCHKK 3 12 41 51
52 LCALL SETO 3 12 41 65
53 MOV A,#01H 2 74 01
54 MOV DPTR,#0FFC4H 3 90 FF C4
55 MOVX @DPTR,A 1 F0
56 RET 1 22
57 PUTSTR: MOVX A ,@DPTR 1 E0
58 CJNE A ,#2EH,PUTC 3 B4 2E 03
59 LJMP HLT 3 02 41 19
60 LCALL BSYCHK 3 12 41 51
61 PUTC: LCALLL SET1 3 12 41 97
62 MOV DPL,R1 2 89 82
63 MOV DPH,R2 2 8A 83
64 MOVX A,@DPTR 1 E0
65 MOV DPTR,#OFFC4H 3 90 FF C4
66 MOVX @DPTR,A 1 F0
67 MOV DPL,R1 2 89 82
68 MOV DPH,R2 2 8A 83
69 INC R1 1 09
70 LCALL PUSTR 3 12 41 79
71 SET1: MOV A,#09H 2 74 09
72 MOV DPTR,#0FFC0H 3 90 FF C0
73 MOVX @DPTR,A 1 F0
74 RET 1 22
75 STRING: DB ‘VI MICROSYSTEM’ 4 419E 55 69 20 4D UPPER CASE A TO Z :
76 4 41A2 69 63 72 6F 41 TO 5A
77 4 41A6 73 79 73 74 Lower case [ a to z ] :
78 4 41AA 65 6D 73 2E 61 to 7A
79 END 41AE

DATA ADDRESS CONTENTS


OUTPUT
INPUT D1 D2 D3 D4 D5 D6 D7 D8
419E 55 69 20 4D 69 63 72 6F
S1 ‘VI MICRO SYSTEM’
41A6 73 79 73 74 65 6D 73 2E
419E
S2
41A6
MICROCONTROLLER LAB MANUAL| 44

ASSEMBLER PROGRAM FOR HEXKEY INTERFACE WITH MICRO-51EB LCD KIT


SNO LABEL MNEMONICS LEN ADDR HEX.CODE COMMENTS
01 KEYSTART MOV DPTR,#FF0FH GTG
3 4100 90 FF 0F COMMENT
02 : MOV A,#82H H
2 4103 74 82
03 MOVX @DPTR,A 1 4105 F0
04 START: MOV A,#00H 2 4106 74 00
05 MOV DPTR,#FF0CH 3 4108 90 FF 0C
06 MOVX @DPTR,A 1 410B F0
07 MOV DPTR,#FFODH 3 410C 90 FF 0D
08 MOVX A,@DPTR 1 410F E0
09 ANL A,#0FH 2 4110 54 0F
10 CJNE A,#0FH,CONT 3 4112 B4 0F 03
11 LJMP START 3 4115 02 41 06
12 CONT: LCALL GETDAT 3 4118 12 41 1E
13 LJMP START 3 411B 02 41 06
14 GETDAT: MOV R2,#51H 2 411E 7A 51
15 MOV R3,#00H 2 4120 7B 00
16 MOV R4,#52H 2 4122 7C 52
17 MOV R5,#00H 2 4124 7D 00
18 MOV A,#0EH 2 4126 74 0E
19 LCALL FIND1 3 4128 12 41 3B
20 MOV A,#0DH 2 412B 74 0D
21 LCALL FIND1 3 412D 12 41 3B
22 MOV A,#0BH 2 4130 74 0B
23 LCALL FIND1 3 4132 12 41 3B
24 MOV A,#07H 2 4135 74 07
25 LCALL FIND1 3 4137 12 41 3B
26 RET 1 413A 22
27 FIND1: MOV DPTR,#FFOCH 3 413B 90 FF 0C
28 MOVX @DPTR,A 1 413E F0
29 MOV DPTR,#FFODH 3 413F 90 FF 0D
30 MOVX A,@DPTR 1 4142 E0
31 ANL A,#0FH 2 4143 54 0F
32 MOV R6,A 1 4145 FE
33 MOV R7,#04H 2 4146 7F 04
34 FFN2: MOV DPH,R4 2 4148 8C 83
35 MOV DPL,R5 2 414A 8D 82
36 MOVX A,@DPTR 1 414C E0
37 MOV DPL,R6 2 414D 8E 82
38 CJNE A,DPL,FFN3 3 414F B5 82 04
39 LCALL STOREDAT 3 4152 12 41 5F
40 RET 1 4155 22
41 FFN3: INC R3 1 4156 0B
42 INC R5 1 4157 0D
43 DJNZ R7,FFN2 2 4158 DF EE
MICROCONTROLLER LAB MANUAL| 45

44 MOV R4,#52H 2 415A 7C 52


45 MOV R5,#00H 2 415C 7D 00
46 RET 1 415E 22
47 STOREDA LCALL BSYCHK 3 415F 12 41 93
48 T: MOV DPTR,#DEN 3 4162 90 FF 04
49 MOV A,#38H 2 4165 74 38
50 MOVX @DPTR,A 1 4167 F0
51 LCALL BSYCHK 3 4168 12 41 93
52 MOV A,#01H 2 416B 74 01
53 MOVX @DPTR,A 1 416D F0
54 LCALL BSYCHK 3 416E 12 41 93
55 MOV A,#06H 2 4171 74 06
56 MOVX @DPTR,A 1 4173 F0
57 LCALL BSYCHK 3 4174 12 41 93
58 MOV A,#0FH 2 4177 74 0F
59 MOVX @DPTR,A 1 4179 F0
60 LCALL BSYCHK 3 417A 12 41 93
61 MOV A,#80H 2 417D 74 80
62 MOVX @DPTR,A 1 417F F0
63 MOV DPH,R2 2 4180 8A 83
64 MOV DPL,R3 2 4182 8B 82
65 MORE: LCALLL BSYCHK 3 4184 12 41 93
66 MOV A,#01H 2 4187 74 01
67 MOV P2,#IOHIGH 3 4189 75 A0 FF
68 MOVX @R0,A 1 418C F2
69 MOVX A,@DPTR 1 418D E0
70 MOV P2,#IOHIGH 3 418E 75 A0 FF
71 MOVX @R1,A 1 4191 F3
72 RET 1 4192 22
73 BSYCHK: MOV R1,#DENL 2 4193 79 04
74 MOV R0 ,#LATCHL 2 4195 78 08
75 MOV P2,#IOHIGH 3 4197 75 A0 FF
76 MOV A,#02H 2 419A 74 02
77 MOVX @R0,A 1 419C F2
78 BSY: MOV P2, #IOHIGH 3 419D 75 A0 FF
79 MOVX A,@R1 1 41A0 E3
80 ANL A,#80H 2 41A1 54 80
81 JNZ BSY 2 41A3 70 F8
82 MOV P2,#IOHIGH 3 41A5 75 A0 FF
83 MOV A,#00H 2 41A8 74 00
84 MOVX @R0, A 1 41AA F2
85 RET 1 41AB 22
DATA TO BE STORED: (I) 5100H 30H, 31H, 32H, 33H , 34H, 35H, 36H, 37H , 38H, 39H, 41H, 42H , 43H,
44H, 45H, 46H ; ASCII VALUES FOR THE KEYS (ii) 5200 0EH, 0DH, 0BH, 07H
MICROCONTROLLER LAB MANUAL| 46

ADC/DAC INTERFACING
AIM:TO WRITE THE PROGRAM OF ANALOG TO DIGITAL CONVERSION PROCESS.
LABEL LENGTH COMMENT
MNEMONICS ADDRESS HEX.CODE
IN BYTES
MOV DPTR, #0FFC8H 3 4100 90 FF C8
MOV A,#10 2 4103 74 10
MOVX @DPTR,A 1 4105 F0
MOV A,#18 2 4106 74 18
MOVX @DPTR,A 1 4108 F0
HERE: SJMP HERE 2 4109 80 FE
OUTPUT:
S.NO ANALOG I/P DIGITAL O/P S.NO ANALOG I/P DIGITAL O/P
1 1.32 0000 0010 = 02 1
2 2.12 0110 1111 = 6F 2
3 3.13 1010 0101 = A5 3
4 3.87 1100 1101 = CD 4
5 4.87 1111 1111 = FF 5

RESULT: THUS THE PROGRAM OF ANALOG TO DIGITAL CONVERSION EXECUTED.

DIGITAL OUTPUT USING BUZZER


AIM: THIS PROGRAM ENABLE AND DISTANCE THE BUZZER FOR PARTICULAR DELAY.
LABEL MNEMONICS LENGTH ADDRESS HEX.CODE COMMENT
ORG 4100H
START: MOV DPTR,#0FFD8H 3 4100 90 FF D8
MOV A,#04H 2 4103 74 04
MOVX @DPTR,A 1 4105 F0
LCALL DELAY 3 4106 12 41 1A
LCALL DELAY 3 4109 12 41 1A
MOV DPTR,#0FFD8H 3 410C 90 FF D8
MOV A,#00H 2 410F 74 00
MOVX @DPTR,A 1 4111 F0
LCALL DELAY 3 4112 12 41 1A
SJMP START 2 4115 80 E6
DELAY: MOV R0, # 0FFH 2 411A 78 FF
DLY1: MOV R1,#0FFH 2 411C 79 FF
DLY DJNZ R1, DLY 2 411E D9 FE
DJNZ R0,DLY1 2 4120 D8 FA
RET 1 4122 22
END

OUTPUT: THUS THE BUZZER SOUND WAS NOTED.


RESULT: THUS THE PROGRAM ENABLE AND DISABLE THE BUZZER FOR PARTICULAR DELAY WAS EXECUTED.
MICROCONTROLLER LAB MANUAL| 47

SYLLABUS :

UNIT I : Architecture of 8051 & their Pin details


1.1 Introduction to microprocessor & microcontroller : Architecture of 8085 -Functions of each block.
Comparison of Microprocessor & Microcontroller -Features of microcontroller -Advantages of microcontroller -
Applications Of microcontroller -Manufactures of microcontroller.
1.2 Architecture of 8051 : Block diagram of Microcontroller –Functions of each block. Pin details of 8051
-Oscillator and Clock -Clock Cycle -State - Machine Cycle -Instruction cycle –Reset - Power on Reset - Special
function registers : Program Counter -PSW register -Stack - I/O Ports .
1.3 Memory Organisation & I/O port configuration: ROM - RAM - Memory Organization of 8051,Interfacing
external memory to 8051.
UNIT II : Overview of 8051 Instruction Sets:
2.1 Instruction Sets : Instruction Format, Different addressing modes of 8051, Assembling and running an 8051
program –Structure of Assembly Language -Assembler directives Classification of 8051 Instructions(based on
Length) -Classification of 8051 Instructions(based on Function)
2.2 Data Handling instructions : Data transfer instructions –– Arithmetic Instructions - Logical
instructions(byte Operands) - Format of instructions and examples
2.3 Bit addresses for I/O , RAM & control instructions: - I/O programming - I/O bit manipulation
programming - Bit Manipulation Instructions - -Branching instructions
UNIT III : Interrupts and Programming Examples:
3.1 8051 Interrupts - Interrupts available in 8051,their vector addresses, Interrupt priority in 8051- Interrupt
related SFRs: interrupt enable register (IE) Interrupt priority register (IP)
3.2 Interrupt handling - Programming Timer Interrupts –Programming external hardware interrupts -
Programming the serial communication interrupt
3.3 Programs - Multibyte Addition - 8 Bit Multiplication and Division - Biggest Number / Smallest Number -
Ascending order / Descending order –Conversion Programs -HEX to BCD, BCD to HEX , HEX to ASCII & ASCII to
Binary -Time delay routines
UNIT IV : Timer/Counter and Serial Communication:
4.1 Special function registers : -Timer 0 and Timer 1 registers- TCON register -TCON register -SCON register -
SBUF register - PCON register .
4.2 Programming 8051 Timers/ Counter programming : Different modes of Timer -Programming Modes -
Mode 0,Mode 1, Mode2 & Mode 3. Different modes of Counter - Programming Modes - Mode 0,Mode 1,
Mode2 & Mode 3.
4.3 Basics of Serial programming : RS 232 Standards -8051 -connection to RS 232 - 8051 Serial
Communication Programming -Programming the 8051 to transfer data serially -Programming the 8051 to
Receive data serially.
UNIT V : Interfacing Techniques :
5.1 Programmable interface ICs: IC 8255 -Block Diagram -Modes of 8255 -CWR format - 8051 interfacing with
the 8255 - IC 8254 -Block Diagram - Modes of 8254 .
5.2 Interfacing circuits : Relays and opto isolators –Sensor interfacing -ADC interfacing -DAC interfacing -
Keyboard interfacing - Seven segment LED Display Interfacing - LCD display interfacing
5.3 Microcontroller based Application : Stepper Motor interfacing -DC motor interfacing -PWM.

You might also like