+ All Categories
Home > Documents > MICROCONTROLLER - SIT - Trichy

MICROCONTROLLER - SIT - Trichy

Date post: 08-Jan-2023
Category:
Upload: khangminh22
View: 0 times
Download: 0 times
Share this document with a friend
47
EEE JUNE 2020 TO OCTOBER 2020 MICROCONTROLLER PRACTICAL MANUAL ME-SIT
Transcript

EEE

JUNE 2020

TO

OCTOBER 2020

MICROCONTROLLER PRACTICAL MANUAL

ME-SIT

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.


Recommended