Date post: | 08-Jan-2023 |
Category: |
Documents |
Upload: | khangminh22 |
View: | 0 times |
Download: | 0 times |
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
6 SETTING & MASKING A BIT, 1’S AND 2’S COMPLEMENT,
EVALUATION OF BOOLEAN EXPRESSION
7 NUMBER OF 1’S &0’S IN A GIVEN DATA,
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.
(A) CONNECT THE POWER CABLE TO THE KIT
(B) CONNECT THE KEYBOARD TO THE KIT
(C ) AFTER POWER ON LCD SCREEN DISPLAY LIKE
#
(D) TYPE THE FOLLOWING IN GIVEN ORDER
(I) SD
(II) STARTING ADDRESS OF THE PROGRAM
(III) PRESS ENTER KEY.
(E) ENTER THE HEXA CODE ONE BY ONE TILL END
(F) TO COMPLETE, PRESS DOT(.) AND THEN
PRESS ENTER.
(II) STEPS TO ENTER THE DATA
(A) PRESS RESET KEY, LCD SCREEN DISPLAY LIKE
#
(B) TYPE THE FOLLOWING IN GIVEN ORDER
(I) SD
(II) STARTING ADDRESS OF THE DATA
(III) PRESS ENTER KEY.
(C) ENTER THE HEXA DATA (OPERAND(S)) ONE BY ONE
TILL END
(D) TO COMPLETE, PRESS DOT(.) AND THEN PRESS
ENTER.
(III) STEPS TO EXECUTE THE PROGRAM.
(A) PRESS RESET KEY, LCD SCREEN DISPLAY LIKE
#
(B) TYPE THE FOLLOWING IN GIVEN ORDER
(I) GO
(II) STARTING ADDRESS OF THE PROGRAM
(III) PRESS ENTER KEY.
(C)
o IF NO ERROR IN THE
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
#EXECUTING
#
(IV) STEPS TO VIEW THE RESULT.
(A) PRESS RESET KEY, LCD SCREEN DISPLAY LIKE
#
(B) TYPE THE FOLLOWING IN GIVEN ORDER
(I) GO
(II) STARTING ADDRESS OF THE RESULT
(III) PRESS ENTER KEY.
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
(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
(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
FILE NEW
PROJECT
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
• SELECT
• 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.
EXECUTE
RUN
MICROCONTROLLER LAB MANUAL| 8
MCS – 51 PROGRAMMER’S GUIDE AND INSTRUCTION SET
SN HEXA CODE
LENGTH (BYTES)
MNE MONICS
OPERANDS
1 00 1 NOP
2 01 2 AJMP CODE ADDR
3 02 3 LJMP CODE ADDR
4 03 1 RR A
5 04 1 INC A
6 05 2 INC DATA ADDR
7 06 1 INC @R0
8 07 1 INC @R1
9 08 1 INC R0
10 09 1 INC R1
11 0A 1 INC R2
12 0B 1 INC R3
13 0C 1 INC R4
14 0D 1 INC R5
15 0E 1 INC R6
16 0F 1 INC R7
17 10 3 JBC BIT ADDR, CODE ADDR
18 11 2 ACALL CODE ADDR
19 12 3 LCALL CODE ADDR
20 13 1 RRC A
21 14 1 DEC A
22 15 2 DEC DATA ADDR
23 16 1 DEC @R0
24 17 1 DEC @R1
25 18 1 DEC R0
26 19 1 DEC R1
27 1A 1 DEC R2
28 1B 1 DEC R3
29 1C 1 DEC R4
30 1D 1 DEC R5
31 1E 1 DEC R6
32 1F 1 DEC R7
33 20 3 JB BIT ADDR, CODE ADDR
34 21 2 AJMP CODE ADDR
35 22 1 RET
36 23 1 RL A
37 24 2 ADD A, #DATA
38 25 2 ADD A, DATA ADDR
39 26 1 ADD A, @R0
40 27 1 ADD A, @R1
41 28 1 ADD A, R0
42 29 1 ADD A, R1
SN HEXA CODE
LENGTH (BYTES)
MNE MONICS
OPERANDS
43 2A 1 ADD A, R2
44 2B 1 ADD A, R3
45 2C 1 ADD A, R4
46 2D 1 ADD A, R5
47 2E 1 ADD A, R6
48 2F 1 ADD A, R7
49 30 3 JNB BIT ADDR, CODE ADDR
50 31 2 ACALL CODE ADDR
51 32 1 RETI
52 33 1 RLC A
53 34 2 ADDC A, #DATA
54 35 2 ADDC A, DATA ADDR
55 36 1 ADDC A, @R0
56 37 1 ADDC A,@R1
57 38 1 ADDC A, R0
58 39 1 ADDC A, R1
59 3A 1 ADDC A, R2
60 3B 1 ADDC A, R3
61 3C 1 ADDC A, R4
62 3D 1 ADDC A, R5
63 3E 1 ADDC A, R6
64 3F 1 ADDC A, R7
65 40 2 JC CODE ADDR
66 41 2 AJMP CODE ADDR
67 42 2 ORL DATA ADDR,A
68 43 3 ORL ADDR,#DATA
69 44 2 ORL A,#DATA
70 45 2 ORL A, DATA ADDR
71 46 1 ORL A, @R0
72 47 1 ORL A, @R1
73 48 1 ORL A, R0
74 49 1 ORL A, R1
75 4A 1 ORL A, R2
76
4B 1 ORL A, R3
77 4C 1 ORL A, R4
78 4D 1 ORL A, R5
79 4E 1 ORL A, R6
80 4F 1 ORL A, R7
81 50 2 JNC CODE ADDR
82 51 2 ACALL CODE ADDR
83 52 2 ANL DATA ADDR,A
84 53 3 ANL DATA ADDR,#DATA 85 54 2 ANL A, #DATA
MICROCONTROLLER LAB MANUAL| 9
SN HEXA CODE
LENGTH (BYTES)
MNE MONICS
OPERANDS
86 55 2 ANL A, DATA ADDR
87 56 1 ANL A, @R0
88 57 1 ANL A, @R1
89 58 1 ANL A, R0
90 59 1 ANL A, R1
91 5A 1 ANL A, R2
92 5B 1 ANL A, R3
93 5C 1 ANL A, R4
94 5D 1 ANL A, R5
95 5E 1 ANL A, R6
96 5F 1 ANL A, R7
97 60 2 JZ CODE ADDR
98 61 2 AJMP CODE ADDR
99 62 2 XRL DATA ADDR,A
100 63 3 XRL DATA ADDR,#DATA
101 64 2 XRL A, #DATA
102 65 2 XRL A, DATA ADDR
103 66 1 XRL A, @R0
104 67 1 XRL A, @R1
105 68 1 XRL A, R0
106 69 1 XRL A, R1
107 6A 1 XRL A, R2
108 6B 1 XRL A, R3
109 6C 1 XRL A, R4
110 6D 1 XRL A, R5
111 6E 1 XRL A, R6
112 6F 1 XRL A, R7
113 70 2 JNZ CODE ADDR
114 71 2 ACALL CODE ADDR
115 72 2 ORL C, BIT ADDR
116 73 1 JMP @A+DPTR
117 74 2 MOV A, #DATA
118 75 3 MOV DATA ADDR,#DATA
119 76 2 MOV @R0, #DATA
120 77 2 MOV @R1, #DATA
121 78 2 MOV R0, #DATA
122 79 2 MOV R1, #DATA
123 7A 2 MOV R2, #DATA
124 7B 2 MOV R3, #DATA
125 7C 2 MOV R4, #DATA
126 7D 2 MOV R5, #DATA
127 7E 2 MOV R6, #DATA 128 7F 2 MOV R7, #DATA
129 80 2 SJMP CODE ADDR
130 81 2 AJMP CODE ADDR
SN HEXA CODE
LENGTH (BYTES)
MNE MONICS
OPERANDS
131 82 2 ANL C, BIT ADDR
132 83 1 MOVC A,@A+PC
133 84 1 DIV AB
134 85 3 MOV DATA ADDR , DATA ADDR
135 86 2 MOV DATA ADDR , @R0
136 87 2 MOV DATA ADDR , @R1
137 88 2 MOV DATA ADDR , R0
138 89 2 MOV DATA ADDR , R1
139 8A 2 MOV DATA ADDR , R2
140 8B 2 MOV DATA ADDR , R3
141 8C 2 MOV DATA ADDR , R4
142 8D 2 MOV DATA ADDR , R5
143 8E 2 MOV DATA ADDR , R6
144 8F 2 MOV DATA ADDR , R7
145 90 3 MOV DPTR , #DATA
146 91 2 ACALL CODE ADDR
147 92 2 MOV BIT ADDR, C
148 93 1 MOVC A, @A+DPTR
149 94 2 SUBB A, #DATA
150 95 2 SUBB A, DATA ADDR
151 96 1 SUBB A, @R0
152 97 1 SUBB A, @R1
153 98 1 SUBB A, R0
154 99 1 SUBB A, R1
155 9A 1 SUBB A, R2
156 9B 1 SUBB A, R3
157 9C 1 SUBB A, R4
158 9D 1 SUBB A, R5
159 9E 1 SUBB A, R6
160 9F 1 SUBB A, R7
161 A0 2 ORL C, /BIT ADDR
162 A1 2 AJMP CODE ADDR
163 A2 2 MOV C, BIT ADDR
164 A3 1 INC DPTR
165 A4 1 MUL AB
166 A5 RESERVED
167 A6 2 MOV @R0, DATA ADDR
168 A7 2 MOV @R1, DATA ADDR
169 A8 2 MOV R0, DATA ADDR
170 A9 2 MOV R1, DATA ADDR
171 AA 2 MOV R2, DATA ADDR
172 AB 2 MOV R3, DATA ADDR
173 AC 2 MOV R4, DATA ADDR
174 AD 2 MOV R5, DATA ADDR
175 AE 2 MOV R6, DATA ADDR
MICROCONTROLLER LAB MANUAL| 10
SN HEXA CODE
LENG TH(B)
MNE MONICS
OPERANDS
176 AF 2 MOV R7, DATA ADDR
177 B0 2 ANL C, /BIT ADDR
178 B1 2 ACALL CODE ADDR
179 B2 2 CPL BIT ADDR
180 B3 1 CPL C
181 B4 3 CJNE A, #DATA, CODE ADDR
182 B5 3 CJNE A, DATA ADDR, CODE ADDR
183 B6 3 CJNE @R0, #DATA, CODE ADDR
184 B7 3 CJNE @R1, #DATA, CODE ADDR
185 B8 3 CJNE R0, #DATA, CODE ADDR
186 B9 3 CJNE R1, #DATA, CODE ADDR
187 BA 3 CJNE R2, #DATA, CODE ADDR
188 BB 3 CJNE R3, #DATA, CODE ADDR
189 BC 3 CJNE R4, #DATA, CODE ADDR
190 BD 3 CJNE R5, #DATA, CODE ADDR
191 BE 3 CJNE R6, #DATA, CODE ADDR
192 BF 3 CJNE R7, #DATA, CODE ADDR
193 C0 2 PUSH DATA ADDR
194 C1 2 AJMP CODE ADDR
195 C2 2 CLR BIT ADDR
196 C3 1 CLR C
197 C4 1 SWAP A
198 C5 2 XCH A, DATA ADDR
199 C6 1 XCH A, @R0
200 C7 1 XCH A, @R1
201 C8 1 XCH A, R0
202 C9 1 XCH A, R1
203 CA 1 XCH A, R2
204 CB 1 XCH A, R3
205 CC 1 XCH A, R4
206 CD 1 XCH A, R5
207 CE 1 XCH A, R6
208 CF 1 XCH A, R7
209 D0 2 POP DATA ADDR
210 D1 2 ACALL CODE ADDR
211 D2 2 SETB BIT ADDR
212 D3 1 SETB C
213 D4 1 DA A
SN HEX LEN OPCODE
OPERANDS
214 D5 3 DJNZ DATA ADDR, CODE ADDR
215 D6 1 XCHD A, @R0
216 D7 1 XCHD A, @R1
217 D8 2 DJNZ R0, CODE ADDR
218 D9 2 DJNZ R1, CODE ADDR
219 DA 2 DJNZ R2, CODE ADDR
220 DB 2 DJNZ R3, CODE ADDR
221 DC 2 DJNZ R4, CODE ADDR
222 DD 2 DJNZ R5, CODE ADDR
223 DE 2 DJNZ R6, CODE ADDR
224 DF 2 DJNZ R7, CODE ADDR
225 E0 1 MOVX A, @DPTR
226 E1 2 AJMP CODE ADDR
227 E2 1 MOVX A, @R0
228 E3 1 MOVX A, @R1
229 E4 1 CLR A
230 E5 2 MOV A, DATA ADDR
231 E6 1 MOV A, @R0
232 E7 1 MOV A, @R1
233 E8 1 MOV A, R0
234 E9 1 MOV A, R1
235 EA 1 MOV A, R2
236 EB 1 MOV A, R3
237 EC 1 MOV A, R4
238 ED 1 MOV A, R5
239 EE 1 MOV A, R6
240 EF 1 MOV A, R7
241 F0 1 MOVX @DPTR, A
242 F1 2 ACALL CODE ADDR
243 F2 1 MOVX @R0, A
244 F3 1 MOVX @R1 ,A
245 F4 1 CPL A
246 F5 2 MOV DATA ADDR, A
247 F6 1 MOV @R0, A
248 F7 1 MOV @R1, A
249 F8 1 MOV R0, A
250 F9 1 MOV R1, A
251 FA 1 MOV R2, A
252 FB 1 MOV R3, A
253 FC 1 MOV R4, A
254 FD 1 MOV R5, A
255 FE 1 MOV R6, 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:
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
4201
09 Data 1
4350 0E SUM 4203 05 Data 2
B) MEMORY OPERANDS:
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
4150 09 Data 2
4250 0E SUM
4151 05 Data 1
RESULT :
LABEL MNEMONICS LENGTH 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
MOVX @DPTR,A 1 4208 F0 ((DPTR)) (A) ;
(MEMORY) SUM
HERE: SJMP HERE 2 4209 80 FE SHORT JUMP HERE
LABEL MNEMONICS LENGTH 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
MOVX @DPTR,A 1 430D F0
((DPTR)) (A) ;
(MEMORY) SUM
HERE: SJMP HERE 2 430E 80 FE SHORT JUMP HERE
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:
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
4201
09 Data 1
4350 04 DIFFERENCE 4203 05 Data 2
B) MEMORY OPERANDS:
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
4450 09 Data 2
4550 04 DIFFERENCE 4451 05 Data 1
RESULT :
LABEL MNEMONICS LENGTH IN BYTES
ADDR HEX. CODE COMMENT
MOV A, #DATA1 2 4300 74 09 (A) 09 ; (A) DATA 1
MOV R2, #DATA2 2 4302 7A 05 (R2) 05 ; (R2) DATA 2
SUBB A, R2 1 4304 9A (A) (A) - (R2) - CY ;
(A) DIFFERENCE
MOV DPTR, #4450h 3 4305 90 44 50 (DPTR) 4450H
MOVX @DPTR,A 1 4308 F0 ((DPTR)) (A) ;
(MEMORY) DIFFERENCE
HERE: SJMP HERE 2 4309 80 FE SHORT JUMP HERE
LABEL MNEMONICS LENGTH 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
MOVX @DPTR,A 1 460D F0
((DPTR)) (A) ;
(MEMORY) DIFFERENCE
HERE: SJMP HERE 2 460E 80 FE SHORT JUMP HERE
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.
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
4201 19 BCD DATA 1
4950 44 BCD SUM 4203 25 BCD DATA 2
LABEL MNEMONICS LENGTH IN BYTES
ADDR0 HEX. CODE COMMENT
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
MOVX @DPTR,A 1 4209 F0
((DPTR)) (A) ;
(MEMORY) SUM
HERE: SJMP HERE 2 420A 80 FE SHORT JUMP HERE
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
INPUT OUTPUT
ADDRESS DATA
COMMENTS ADDRESS DATA
COMMENTS S1 S2 S1 S2
4701
19 DATA 1
4850 3E SUM
4703 25 DATA 2 4851 00 STATUS OF CARRY
RESULT :
LABEL MNEMONICS LENGTH IN BYTES
ADDR HEX. CODE COMMENT
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
MOVX @DPTR,A 1 4708 F0 ((DPTR)) (A) ;
(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
NXT: MOVX @DPTR, A 1 470F F0
((DPTR)) (A) ;
(MEMORY) STATUS OF CY
HERE: SJMP HERE 2 4710 80 FE
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:
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2 PRODUCT
DATA 1
LOB
DATA 2 HOB
B) MEMORY OPERANDS:
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
MOV A, #DATA1 2 (A) ---- ; (A) DATA 1
MOV B, #DATA2 3 (B) ----; (B) DATA 2
MUL AB 1
After (A) * (B) ;
(A) LOB of the product (B) HOB of the product
MOV DPTR, # 3 (DPTR) -----------
MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
MOV A,B 2 (A) (B)
INC DPTR 1 (DPTR) (DPTR) +1
MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
HERE: SJMP HERE 2
LABEL MNEMONICS LENGTH IN BYTES
ADDR. HEX. CODE COMMENT
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))
MUL AB 1
After (A) * (B) ;
(A) LOB of the product (B) HOB of the product
MOV DPTR, # 3 (DPTR) MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
MOV A,B 2 (A) (B)
INC DPTR 1 (DPTR) (DPTR) +1
MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
HERE: SJMP HERE 2
INPUT OUTPUT
ADDRESS
DATA
COMMENTS ADDRES
DATA COMMENTS
[PRODUCT] S1
S2 S1
S2
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:
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
DATA 1
QUOTIENT
DATA 2 REMAINDER
B) MEMORY OPERANDS:
INPUT OUTPUT
ADDR DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
DATA 2
QUOTIENT
DATA 1 REMAINDER
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
MOV A, #DATA1 2 (A) ---- ; (A) DATA 1
MOV B, #DATA2 3 (B) ----; (B) DATA 2
DIV AB 1
After (A) / (B) ;
(A) QUOTIENT (B) REMAINDER
MOV DPTR, # 3 (DPTR) ------------- MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
MOV A,B 2 (A) (B)
INC DPTR 1 (DPTR) (DPTR) +1
MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
HERE: SJMP HERE 2
LABEL MNEMONICS LENGTH IN BYTES
ADDR. HEX. CODE COMMENT
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))
DIV AB 1
After (A) / (B) ;
(A) QUOTIENT (B) REMAINDER
MOV DPTR, # 3 (DPTR) -----------H MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
MOV A,B 2 (A) (B)
INC DPTR 1 (DPTR) (DPTR) +1
MOVX @DPTR,A 1 ((DPTR)) (A)
(MEMORY) SUM
HERE: SJMP HERE 2
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.
SNO LABEL MNEMONICS LENGTH 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
DATA 1 IS COPIED
INTO IRAM
STARTING AT
ADDRESS 35H
05 MOV @R0, A 1
06 INC R0 1
07 INC DPTR 1
08 DJNZ R5, TOP1 2
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
DATA 2 IS COPIED
INTO IRAM
STARTING AT
ADDRESS 45H
13 MOV @R0,A 1
14 INC DPTR 1
15 INC R0 1
16 DJNZ R5, TOP2 2
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
Added/Subtracted
To/From DATA 2.
Result is stored
into ERAM starting
at address ---------h
23 ADDC A, @R1/SUBB A, @R1 1
24 MOVX @DPTR,A 1
25 INC DPTR 1
26 INC R1 1
27 INC R0 1
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
ADDRESS DATA1 COMMENTS
S1 S2
BYTE 1 [LOB]
BYTE 2
BYTE 3 [HOB]
INPUT
ADDRESS DATA1 COMMENTS
S1 S2
BYTE 1 [LOB]
BYTE 2
BYTE 3 [HOB]
INPUT
ADDRESS DATA2 COMMENTS
S1 S2
BYTE 1 [LOB]
BYTE 2
BYTE 3 [HOB]
INPUT
ADDRESS DATA2 COMMENTS
S1 S2
BYTE 1 [LOB]
BYTE 2
BYTE 3 [HOB]
OUTPUT1
OUTPUT2
ADDRESS DATA COMMENTS
(SUM) S1 S2
BYTE 1 [LOB]
BYTE 2
BYTE 3
BYTE 4 [HOB]
OUTPUT1
OUTPUT2
ADDRESS DATA COMMENTS
(DIFFERENCE) S1 S2
BYTE 1 [LOB]
BYTE 2
BYTE 3
BYTE 4 [HOB]
SET 1:
1 2 A B 3 5
9 5 C 5 A 7 +
= = = = = = =
A 8 7 0 D C
= = = = = = =
SET 2:
1 2 A 4 3 5
F 0 0 5 3 8 +
= = = = = = =
= = = = = = =
SET 1:
9 5 C 5 A 7
1 2 A B 3 5 -
= = = = = = =
8 3 1 A 7 2
= = = = = = =
SET 2:
1 2 A 4 3 5
F 0 0 5 3 8 -
= = = = = =
= = = = = = =
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.
INPUT OUTPUT
ADDRESS DATA1 COMMENTS
ADDRESS DATA2 COMMENTS
S1 S2 S1 S2 SUM
‘N’ VALUE LOB
DATA 1
DATA 2 HOB
DATA 3
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 20
ASCENDING/DESCENDING ORDER
AIM: TO WRITE A PROGRAM TO ARRANGE THE GIVEN SET OF NUMBERS IN ASCENDING/DESCENDING ORDER.
ASCENDING ORDER:
INPUT OUTPUT
ADDRESS DATA1 COMMENTS
ADDRESS DATA2 COMMENTS
S1 S2 S1 S2 SORTED LIST
DATA 1
DATA 2
DATA 3
DATA 4
DESCENDING ORDER:
INPUT OUTPUT
ADDRESS DATA1 COMMENTS
ADDRESS DATA2 COMMENTS
S1 S2 S1 S2 SORTED LIST
DATA 1
DATA 2
DATA 3
DATA 4
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
(JC SKIP)
2
MOV DPL, R2 2
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
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.
INPUT OUTPUT
ADDRESS DATA1 COMMENTS
[SOURCE BLOCK]
ADDRESS DATA2 COMMENTS
S1 S2 S1 S2 [DESTINATION BLOCK ]
‘N’ VALUE
DATA 1
DATA 1 DATA 2
DATA 2 DATA 3
DATA 3 DATA 4
DATA 4
SNO LABEL MNEMONICS LENGTH 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
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.
INPUT OUTPUT
ADDRESS CONTENTS COMMENTS
ADDRESS CONTENTS COMMENTS
S1 S2 S1 S2 UNPACKED BCD
PACKED BCD MSD
LSD
SNO LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 23
EVALUATION OF BOOLEAN EXPRESSION
AIM: TO WRITE A PROGRAM TO EVALUATE THE BOOLEAN EXPRESSION Y = AB’ + A’B
INPUT 1 OUTPUT 1
ADDR. INSTRUCTION OPCODE ADDR. CONTENT
20H 07 06 05 04 03 02 01 00
4850 SETB 02 D2 02 4650H
Y AB’ B A
4852 SETB 03 D2 03
INPUT 2 OUTPUT 2
ADDR. INSTRUCTION OPCODE ADDR. CONTENT
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. INSTRUCTION OPCODE ADDR. CONTENT
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. INSTRUCTION OPCODE ADDR. CONTENT
20H 07 06 05 04 03 02 01 00
4850 CLR 02 C2 02 4650H
4852 SETB 03 D2 03
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEXA CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 24
LARGEST AND SMALLEST NUMBER IN AN ARRAY
AIM : TO WAP TO FIND THE LARGEST/SMALLEST NUMBER IN A LIST.
SNO LABEL MNEMONICS LENGTH IN BYTES ADDR HEX. CODE COMMENTS
01 MOV DPTR, #4673H 3 4425 90 46 73 (DPTR) 4673H
02
MOV 40H,#00
/ MOV 40H,#0FFH 3 4428
75 40 00
75 40 FF
03 MOV R5,#05H 2 (R5) 05; ‘N’
VALUE 04 LOOP2: MOVX A, @DPTR 1
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
NOTE : (02) MOV 40H,#00
(12) JC LOOP3
ADDRESS S1 S2 COMMENTS
DATA 1
DATA 2
DATA 3
DATA 4
DATA 5
DATA 6
INPUT
NOTE : (02) MOV 40H,#FFH
(12) JNC LOOP3
ADDRESS S1 S2 COMMENTS
DATA 1
DATA 2
DATA 3
DATA 4
DATA 5
DATA 6
OUTPUT
ADDRESS S1 S2
COMMENTS
4773
LARGEST
NUMBER IN
AN ARRAY
OUTPUT
ADDRESS S1 S2
COMMENTS
4773
SMALLEST
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.
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
DATA (FOR 1’S) NO OF 1’S
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
DATA (FOR 0’S) NO OF 0’S
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
(JC NXT) (0’S)
2
INC R1 1
NXT: DJNZ R5, LOOP 2
INC DPTR 1
MOV A, R1 1
MOVX @DPTR, A 1
HERE: SJMP HERE 2
MICROCONTROLLER LAB MANUAL| 26
SQUARE ROOT OF GIVEN NUMBER
AIM: TO WAP TO FIND THE SQUARE ROOT OF GIVEN NUMBER .
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS
CONTENT COMMENTS
S1 S2 S1 S2
4350 09 DATA 4450 03 SQUARE ROOT
SNO LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 27
FACTORIAL OF GIVEN NUMBER [N!]
AIM: TO WAP TO FIND THE FACTORIAL OF GIVEN NUMBER .
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS CONTENT COMMENTS
S1 S2 S1 S2 FACTORIAL
4350 DATA 4351 HOB
4352 LOB
SNO LABEL MNEMONICS LENGTH 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
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.
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS CONTENT COMMENTS
S1 S2 S1 S2
DATA 1’S COMPLEMENT
2’S COMPLEMENT
B) SET SPECIFIC BIT OF AN 8 BIT NUMBER : AIM : TO SET THE THIRD & FIFTH BIT OF DATA 1
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
ADDR DATA COMMENTS
ADDR
DATA COMMENTS
S1 S2 S1 S2
DATA 1
RESULT OF LOGIC OR 28 28 DATA 2
LABEL MNEMONICS LENGTH 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
MICROCONTROLLER LAB MANUAL| 29
C) MASK BIT 0 AND BIT 7 OF AN 8 BIT NUMBER
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
ADDR DATA COMMENTS
ADDR
DATA COMMENTS
S1 S2 S1 S2
DATA 1
RESULT OF LOGIC AND 7E 7E DATA 2
D) EXOR OF TWO 8 BIT NUMBERS
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
ADDR DATA COMMENTS
ADDR
DATA 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.
INPUT OUTPUT
ADDRESS DATA COMMENTS
ADDRESS DATA COMMENTS
S1 S2 S1 S2
BCD HEXA
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 31
B) HEXA DECIMAL TO DECIMAL CONVERSION: AIM: TO WAP TO CONVERT HEXA DECIMAL NUMBER INTO ITS DECIMAL EQUIVALENT.
INPUT OUTPUT
ADDRESS DATA1 COMMENTS
ADDRESS DATA2 COMMENTS
S1 S2 S1 S2 BCD
HEXA
100’S
10’S
1’S
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEXA CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 32
C. ASCII TO DECIMAL CONVERSION
AIM: TO WAP TO CONVERT A NUMBER IN ASCII TO ITS DECIMAL EQUIVALENT.
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
ADDRESS DATA1
COMMENTS
ADDRESS DATA2 COMMENTS
S1 S2 S1 S2
ASCII BCD
LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
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.
SNO LABEL MNEMONICS LENGTH 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 MULTIPLES IN DECIMAL
DECIMAL HEXA 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
2
3
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.
SNO LABEL MNEMONICS LENGTH IN BYTES
ADDR HEX. CODE COMMENTS
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
SLNO
INPUT IN DIVISORS IN
DECIMAL
SLNO
INPUT IN
DIVISORS IN DECIMAL DECIMAL
HEXA DECIMAL
DECIMAL HEXA 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 IN BYTES
ADDR HEXA CODE COMMENTS
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
11 JNB ACC.0,EVOD
/ JB ACC.0,EVOD 3
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
SLNO
JNB ACC.0, EVOD
INPUT OUTPUT
DATA AT ADDRESS 4665H Result at address 4666h
IN
HEXA
IN BINARY IN
HEXA
IN BINARY [ P – PARITY BIT ]
D7 D6 D5 D4 D3 D2 D1 D0 P D6 D5 D4 D3 D2 D1 D0
1
2
SLNO
JB ACC.0, EVOD
INPUT OUTPUT
DATA AT ADDRESS 4665H Result at address 4666h
IN
HEXA
IN BINARY IN
HEXA
IN BINARY [ P – PARITY BIT ]
D7 D6 D5 D4 D3 D2 D1 D0 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 ]
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
SNO LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENT
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
MICROCONTROLLER LAB MANUAL| 37
STEPPER MOTOR
AIM : TO INTERFACE A STEPPER MOTOR WITH MICROCONTROLLER 8051.
SNO LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENTS
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
ADDRESS DATA1 COMMENTS
ADDRESS DATA1 COMMENTS
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.
SNO LABEL MNEMONICS LENGTH IN BYTES
ADDRESS HEX. CODE COMMENTS
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.
SNO LABEL MNEMONICS LENGTH 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.
SNO LABEL MNEMONICS LENGTH
IN BYTES ADDR HEX.CODE COMMENT
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
42
27 INC R0 1 4134 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
INPUT:
DATA ADDRESS
CONTENT COMMENT
7 SEGMENTS O/P
OUTPUT IN 7 SEGMENT
S1(HEXA) dp G f e D c b a
S1
4200 88 DATA 1 1 0 0 0 1 0 0 0
4201 80 DATA2 1 0 0 0 0 0 0 0
4202 C6 DATA3 1 1 0 0 0 1 1 0
4203 C0 DATA4 1 1 0 0 1 0 0 0
S2
4200 DATA 1
4201 DATA2
4202 DATA3
4203 DATA4
S3
4200 DATA 1
4201 DATA2
4202 DATA3
4203 DATA4
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
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
R:
SETS DD RAM ADDRESS
11 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 :
41 TO 5A
Lower case [ a to z ] :
61 to 7A
76 4 41A2 69 63 72 6F
77 4 41A6 73 79 73 74
78 4 41AA 65 6D 73 2E
79 END 41AE
DATA
INPUT
ADDRESS CONTENTS OUTPUT
D1 D2 D3 D4 D5 D6 D7 D8
S1 419E 55 69 20 4D 69 63 72 6F
‘VI MICRO SYSTEM’ 41A6 73 79 73 74 65 6D 73 2E
S2 419E
41A6
MICROCONTROLLER LAB MANUAL| 44
ASSEMBLER PROGRAM FOR HEXKEY INTERFACE WITH MICRO-51EB LCD KIT
SNO LABEL MNEMONICS LEN
GTG
H
ADDR HEX.CODE COMMENTS
COMMENT
01 KEYSTART
:
MOV DPTR,#FF0FH 3 4100 90 FF 0F
02 MOV A,#82H 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
T:
LCALL BSYCHK 3 415F 12 41 93
48 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
MNEMONICS LENGTH
IN BYTES ADDRESS HEX.CODE COMMENT
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.