100% found this document useful (1 vote)
7K views38 pages

Vtu Microcontroller Lab Manual PDF

The document provides assembly language programs to demonstrate data transfer instructions, exchange a block of data, and sort numbers in ascending order using the bubble sort algorithm on the 8051 microcontroller. The programs initialize registers, transfer data between source and destination addresses, decrement a count register in a loop, and exchange data values to sort an array of numbers stored from address 4000h.

Uploaded by

Quentin Guerra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
7K views38 pages

Vtu Microcontroller Lab Manual PDF

The document provides assembly language programs to demonstrate data transfer instructions, exchange a block of data, and sort numbers in ascending order using the bubble sort algorithm on the 8051 microcontroller. The programs initialize registers, transfer data between source and destination addresses, decrement a count register in a loop, and exchange data values to sort an array of numbers stored from address 4000h.

Uploaded by

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

MICROCONTROLLERS LAB IVth SEM EC

R.N.SHETTY INSTITUTE OF TECHNOLOGY


Channasandra, Banga!r"#$%&&%'
MICROCONTROLLER
LABORATORY MANUAL
(&%ESL)*+
,E-ARTMENT
OF
ELECTRONICS . COMMUNICATION ENGINEERING
/&&0
8051 MANUAL RNSIT 1
MICROCONTROLLERS LAB IVth SEM EC
VTU ,RAFT SYLLABUS
SUB1ECT2 MICROCONTROLLERS LAB E3AM HOURS2 4
(C!55!n t! EE, EC, IT, TC, BM and ML+ E3AM MAR6S2 $&
I. -ROGRAMMING
'. ,ata Trans7"r # B!89 5!:", E;8hang", S!rt<ng, F<nd<ng arg"st ""5"nt <n an arra=
/. Ar<th5"t<8 Instr>8t<!ns # Add<t<!n?s>@tra8t<!n, 5>t<A<8at<!n and d<:<s<!n, sB>ar",
C>@" C ('% @<ts Ar<th5"t<8 !A"rat<!ns C @<t addr"ssa@"+
4. C!>nt"rs
). B!!"an . L!g<8a Instr>8t<!ns (B<t 5an<A>at<!ns+
$. C!nd<t<!na CALL . RETURN
%. C!d" 8!n:"rs<!n2 BC, C ASCIID ASCII C ,"8<5aD ,"8<5a # ASCIID HE3 #
,"8<5a and ,"8<5a # HE3
*. -r!gra5s t! g"n"rat" d"a=, -r!gra5s >s<ng s"r<a A!rt and !n#Ch<A t<5"r ?8!>nt"r
II. INTERFACING
Er<t" C Ar!gra5s t! <nt"r7a8" 0&$' 8h<A t! <nt"r7a8<ng 5!d>"s t! d":"!A s<ng" 8h<A
s!>t<!ns
0. S<5A" Ca8>at!r >s<ng % d<g<t s":"n#s"g5"nt d<sAa= and H"; 6"=@!ard <nt"r7a8"
t! 0&$'
F. AAhan>5"r<8 LC, Aan" and H"; 9"=Aad <nA>t <nt"r7a8" t! 0&$'
'&. E;t"rna A,C and T"5A"rat>r" 8!ntr! <nt"r7a8" t! 0&$'
''. G"n"rat" d<77"r"nt Ga:"7!r5s S<n", SB>ar", Tr<ang>ar, Ra5A "t8. >s<ng ,AC
<nt"r7a8" t! 0&$'D 8hang" th" 7r"B>"n8= and a5A<t>d"
'/. St"AA"r and ,C 5!t!r 8!ntr! <nt"r7a8" t! 0&$'
'4. E":at!r <nt"r7a8" t! 0&$'
Introduction
8051 MANUAL RNSIT 2
MICROCONTROLLERS LAB IVth SEM EC
-ROCESSOR >s"d <s At5" AT0FC$'E,/ # micro controller that has 64Kbtes o! on"
chi# #ro$ram memor% It is a &ersion o! 8051 'ith enhance( !eat)res%
* AT 8+,51-.2 o#erates at 11%05+2 M/0
-ROCESSOR FEATURES
ON#CHI- MEMORY2 CO,E MEMORY2 64K 1tes o! !lash%
,ATA MEMORY2 256 1tes o! RAM2 13+2 1tes o! 4RAM2 2K 1tes o! --5R6M%
ON#CHI- -ERI-HERALS
7 16"bit Timers8,o)nters2*9atch .o$ Timer2*5ro$rammable ,o)nter Arra :5,A; on
5ort1 i%e% 59M an( ,a#t)re < ,om#are2 S5I :Serial 5eri#heral Inter!ace; on 5ort12*=)ll
()#le> enhance( UART%
INTERRU-TS
Nine so)rces o! interr)#t :both e>ternal an( internal;%
T'o ->ternal interr)#ts INT0 an( INT1 are #ro&i(e( 'ith #)sh b)tton s'itches? these can
also be )se( as $eneral"#)r#ose s'itches%
I?O (-!rt+ L<n"s =o)r 10"#in connectors !or all the 72 I86 lines%
502 51 an( 52 5ort lines are a&ailable on a 26"#in connector2
'%3/ LC, . SERIAL I?O are also a&ailable%
Cr"at<ng and 8!5A<<ng a HIV<s<!n/ Ar!J"8t
8051 MANUAL RNSIT 7
MICROCONTROLLERS LAB IVth SEM EC
1% .o)ble ,lic@ on the *Aision7 icon on the (es@to#%
2% ,lose an #re&io)s #roBects that 'ere o#ene( )sin$ C 5roBect"D,lose%
7% Start -r!J"8t C N"G -r!J"8t, an( select the ,5U !rom the (e&ice (atabase :.atabase"
Atmel" AT8+,51-.2;% :Select AT8+,51-.2 or AT8+,51R.2 as #er the boar(;%6n
clic@in$ E6KF2 the !ollo'in$ o#tion is (is#lae(% ,hoose Ges%
4% ,reate a so)rce !ile :)sin$ =ile"DNe';2 t#e in the assembl or , #ro$ram an( sa&e this
:!ilename%asm8 !ilename%c; an( a(( this so)rce !ile to the #roBect )sin$ either one o! the
!ollo'in$ t'o metho(s% :i; 5roBect",om#onents2-n&ironmentan( 1oo@s"Da((!iles"D bro'se
to the reH)ire( !ile "D 6K I6RJ
:ii; ri$ht clic@ on the So)rce Kro)# in the 5roBect 9in(o' an( the Add F<"s t! Gr!>A
o#tion%
5% Set the Tar$et o#tions )sin$ "D -r!J"8t C OAt<!ns 7!r Targ"t o#ens the * Aision2
OAt<!ns 7!r Targ"t C Targ"t con!i$)ration (ialo$% Set the 4tal !reH)enc as 11%05+2 Mh02
an( also the OAt<!ns 7!r Targ"t C ,"@>g C >s" "<th"r S<5>at!r ? 6"< M!n<t!r# $'
dr<:"r.
I! 6"< M!n<t!r# $' dr<:"r <s >s"d 8<89 !n S"tt<ngs "D ,6M 5ort settin$s select the ,6M
5ort to 'hich the boar( is connecte( an( select the ba)( rate as 1+200 or +600
:recommen(e(;% -nable S"r<a Int"rr>At o#tion i! the )ser a##lication is not )sin$ on"chi#
UART2 to sto# #ro$ram e>ec)tion%
6% 1)il( the #roBect? )sin$ 5roBect "D 1)il( 5roBect% *Aision translates all the )ser
a##lication an( lin@s% An errors in the co(e are in(icate( b C ITar$et not create(J in the
1)il( 'in(o'2 alon$ 'ith the error line% .eb)$ the errors% A!ter an error !ree b)il(2 $oto
.eb)$ mo(e
8051 MANUAL RNSIT 4
MICROCONTROLLERS LAB IVth SEM EC
3% No' )ser can enter into ,"@>g mo(e 'ith ,"@>g# Start ? St!A ,"@>g s"ss<!n (ialo$% 6r
b clic@in$ in the icon%
8%The #ro$ram is r)n )sin$ the ,"@>g#R>n comman( < halte( )sin$ ,"@>g#St!A
R>nn<ng. Also the :reset2 r)n2 halt; icons can be )se(% A((itional icons are
:ste#2 ste# o&er2 ste# into2 r)n till c)rsor;%
+% I! it is an inter!ace #ro$ram the o)t#)ts can be seen on the L,.2 ,R62 motor2 le( stat)s2
etc% I! it is a #art A #ro$ram2 the a##ro#riate memor 'in(o' is o#ene( )sin$ Aie' "D
memor 'in(o' :!or (ata RAM < 4RAM locations;2 9atch 'in(o' :!or timer #ro$ram;2
serial 'in(o'2 etc%
NoteL To access (ata RAM area t#e a((ress as .L0020h%
Similarl to access the .5TR re$ion :4RAM"#resent on chi# in AT8+,51-.2; sa +000h
location t#e in 4L0+000/%
8051 MANUAL RNSIT 5
MICROCONTROLLERS LAB IVth SEM EC
'. ,ATA TRANSFER INSTRUCTIONS
'+ Er<t" an ass"5@= ang>ag" Ar!gra5 t! trans7"r n K'& @=t"s !7 data 7r!5 !8at<!n
0&4$h t! !8at<!n 0&)'h (G<th!>t !:"raA+.
6RK 0000/
SMM5 70/
6RK 70/
M6A .5/2N80/
M6A R02N75/ 88so)rce a((ress
M6A R12N41/ 88(estination a((ress
M6A R72N05/ 88co)nt
1A,KL M6A .5L2 r0
M6A4 A2O(#tr
M6A .5L2 R1
M6A4 O(#tr2A
IN, R0
IN, R1
.MNP R72 1A,K
/-R-L SMM5 /-R-
-N.
RESULT2
1e!ore ->ec)tionL 10 locations 4L8075h are !ille( )# 'ith (ata%
A!ter ->ec)tionL 10 locations 4L8041h are !ille( )# 'ith (ata !rom 8075h%
Ag!r<th5
1% Initiali0e re$isters to hol( co)nt (ata < also the so)rce < (estination a((resses%
2% Ket (ata !rom so)rce location into acc)m)lator an( trans!er to the (estination
location%
7% .ecrement the co)nt re$ister an( re#eat ste# 2 till co)nt is 0ero%
NoteL =or (ata trans!er 'ith o&erla# start trans!errin$ (ata !rom the last location o!
so)rce arra to the last location o! the (estination arra%
8051 MANUAL RNSIT 6
MICROCONTROLLERS LAB IVth SEM EC
/+ ASSEMBLY LANGUAGE -ROGRAM TO E3CHANGE A BLOC6 OF ,ATA.
Er<t" an ass"5@= ang>ag" Ar!gra5 t! ";8hang" n K $ @=t"s !7 data at !8at<!n &&/*h
and at !8at<!n &&)'h.
6RK 00/
SMM5 70/
6RK 70/
M6A R02N23/ 88so)rce a((ress
M6A R12N41/ 88(estination a((ress
M6A R72N05/ 88co)nt
1A,KL M6A4 A2Or0
M6A r22a
M6A4 a2Or1
M6A4 Or02a
M6A a2 r2
M6A4 Or12a
IN, R0
IN, R1
.MNP R72 1A,K
/-R-L SMM5 /-R-
-N.
A<t"r >s<ng 3CH 8!55and.
6RK 0000/
SMM5 70/
6RK 70/
M6A R02N23/ 88so)rce a((ress
M6A R12N41/ 88(estination a((ress
M6A R72N05/ 88co)nt
1A,KL M6A4 A2Or0
M6A r22a
M6A4 a2Or1
4,/ a2 r2
M6A4 Or12a
4,/ a2 r2
M6A4 Or02a
IN, R0
IN, R1
.MNP R72 1A,K
/-R-L SMM5 /-R-
-N.
RESULT2
1e!ore ->ec)tionL 5 locations at 4L0023h < 4L0041h are !ille( )# 'ith (ata%
8051 MANUAL RNSIT 3
MICROCONTROLLERS LAB IVth SEM EC
A!ter ->ec)tionL The (ata at 4L8023h < 4L8041h are e>chan$e(%
Ag!r<th5
1% Initiali0e re$isters to hol( co)nt (ata :arra si0e; < also the so)rce < (estination
a((resses%
2% Ket (ata !rom so)rce location into acc)m)lator an( sa&e in a re$ister%
7% Ket (ata !rom the (estination location into acc)m)lator%
4% ->chan$e the (ata at the t'o memor locations%
5% .ecrement the co)nt re$ister an( re#eat !rom ste# 2 to 4 till co)nt is 0ero%
4+ ASSEMBLY LANGUAGE -ROGRAM TO SORT NUMBERS.
??BUBBLE SORT -ROGRAM
Er<t" an ass"5@= ang>ag" Ar!gra5 t! s!rt an arra= !7 nK % @=t"s !7 data <n
as8"nd<ng !rd"r st!r"d 7r!5 !8at<!n 0&4$h.(>s" @>@@" s!rt ag!r<th5+
6RK 0000/
SMM5 70/
6RK 70/
M6A R02N05 88co)nt n"1 "ARRAG SIP-"n" 5ass ,o)nter
L1L M6A (#tr2 N+000h 88arra store( !rom a((ress +000h
M6A A2R0 88initiali0e e>chan$e co)nter
M6A R12A
L2L M6A4 a2 O(#tr 88K-T NUM1-R =R6M ARRAG
M6A 12 A 88< ST6R- IN 1
IN, (#tr
M6A4 a2 O(#tr 88ne>t n)mber in the arra
,LR , 88reset borro' !la$
M6A R22 A 88ST6R- IN R2
SU11 A2 1 882n( " 1st no%Qno com#are instr)ction in 8051
M, N6-4,/K 88 MN, " =6R AS,-N.INK 6R.-R
M6A A21 88-4/ANK- T/- 2 N6-S IN T/- ARRAG
M6A4 O(#tr2a
.-, .5L 88.-, (#tr"INSTRU,TI6N N6T 5TR-S-NT
M6A a2R2
M6A4 O(#tr2a
IN, .5TR
N6-4,/KL .MNP R12L2 88(ecrement com#are co)nter
.MNP R02L1 88(ecrement #ass co)nter
hereL SMM5 here
-N.
Ag!r<th5
1% Store the elements o! the arra !rom the a((ress +000h
2% Initiali0e a #ass co)nter 'ith arra si0e"1 co)nt :!or n)mber o! #asses;%
8051 MANUAL RNSIT 8
MICROCONTROLLERS LAB IVth SEM EC
7% Loa( com#are co)nter 'ith #ass co)nter contents < initiali0e .5TR to #oint to the
start a((ress o! the arra :here +000h;%
4% Store the c)rrent an( the ne>t arra elements #ointe( b .5TR in re$isters 1 an( r2
res#ecti&el%
5% S)btract the ne>t element !rom the c)rrent element%
6% I! the carr !la$ is set :!or ascen(in$ or(er; then e>chan$e the 2 n)mbers in the
arra%
3% .ecrement the com#are co)nter an( re#eat thro)$h ste# 4 )ntil the co)nter becomes
0%
8% .ecrement the #ass co)nter an( re#eat thro)$h ste# 7 )ntil the co)nter becomes 0%
RESULT 2
1e!ore ->ec)tionLUnsorte( Arra at +000h
A!ter ->ec)tionL Sorte( Arra :.escen(in$ or(er; at +000h
)+ Er<t" an ass"5@= ang>ag" Ar!gra5 t! 7<nd th" arg"st ""5"nt <n a g<:"n str<ng !7
n K % @=t"s at !8at<!n )&&&h. St!r" th" arg"st ""5"nt at !8at<!n )&%/h.
6RK 0000/
SMM5 70/
6RK 70/
M6A R72N6 88len$th o! the arra
M6A .5TR2N4000/ 88startin$ a((ress o! the arra
M6A4 A2O.5TR
M6A r12a
N-4T1GT-L IN, .5TR
M6A4 A2O.5TR
,LR , 88reset borro' !la$
M6A R22A 88ne>t n)mber in the arra
SU11 A2R1 886T/-R N)m " 5R-AI6US LARK-ST no%
M, s@i# 88 MN, !or smallest element
M6A A2r2 88U5.AT- lar$er n)mber in r1
M6A R12A
s@i#L.MNP R72N-4T1GT-
M6A .5L2 N62/ 88L6,ATI6N 6= T/- R-SULT"4062/
M6A A2R1 88LARK-ST NUM1-R
M6A4 O.5TR2A 88ST6R- AT N4062/
6A-RL SMM5 6A-R
-N.
Ag!r<th5
1% Store the elements o! the arra !rom the a((ress 4000h
2% Store the len$th o! the arra in r7 an( set it as co)nter%
8051 MANUAL RNSIT +
MICROCONTROLLERS LAB IVth SEM EC
7% .5TR is loa(e( 'ith startin$ a((ress o! the arra%
4% Store the !irst n)mber o! the arra in r1 :r1 is assi$ne( to hol( the lar$est n)mber;%
5% Increment .5TR%
6% S)btract the n)mber #ointe( b .5TR !rom the contents o! r1 :to com#are 'hether
the ne>t arra element is lar$er than the one in r1;%
3% I! the element #ointe( b .5TR is lar$er then loa( the lar$er n)mber into r1%
8% .ecrement the co)nter an( re#eat ste#s thro)$h 5 )ntil the co)nter becomes 0%
+% Store the lar$est n)mber in r1 in a((ress 4062h
RESULT2
1e!ore ->ec)tionL
A!ter ->ec)tionL Location 4062 has the lar$est element%
/. ARITHMETIC INSTRUCTIONS
ASSEMBLY LANGUAGE -ROGRAM ILLUSTRATING A,,ITION,
SUBTRACTION, MULTI-LICATION AN, ,IVISION .
5; 9rite an AL5 to #er!orm the !ollo'in$L
I! >R0"#er!orm ' S &? else i! >R1"#er!orm '"&? else i! >R2"#er!orm 'T&? elsei! >R7"#er!orm
'8&2 'here ' < & are ei$ht bit n)mbers%
6RK 0000/
SMM5 70/
6RK 70/
M6A R02 N40/
M6A4 A2OR0
M6A R12 A 88R1 /AS ,6N.ITI6N 4
IN, R0
M6A4 A2OR0
M6A 12 A 881 /AS 1ST NUM1-R"&
IN, R0
M6A4 A2OR0 88A /AS 2N. NUM1-R"'
,MN- R12N002,KSU1
A.. A21 885-R=6RM A..ITI6N
M6A 12N00 881 /AS ,ARRG
MN, SKI5
M6A 12N01/
SKI5LSMM5 LAST
,KSU1L ,MN- R12N012,KMUL
,LR , 88R-S-T 16RR69 =LAK
SU11 A21
M6A 12N00 881 IN.I,AT-S 16RR69
8051 MANUAL RNSIT 10
MICROCONTROLLERS LAB IVth SEM EC
MN, SKI51
M6A 12N0==/ 88== IN.I,AT-S N-KATIA- NUM1-R
SKI51LSMM5 LAST
,KMULL ,MN- R12N022,K.IA
MUL A1 8816 bit #ro()ct in A1 'ith A ha&in$ lo'er bte
SMM5 LAST
,K.IAL ,MN- R12N0726T/-R
.IA A1 88U)otient in A < remain(er in 1
SMM5 LAST
6T/-RLM6A A2N00
M6A 12N00
LASTL IN, R0
M6A4 OR02A
IN, R0
M6A A21
M6A4 OR02A
/-R-LSMM5 /-R-
-N.
Ag!r<th5
1% Store the con(ition > in r1%
2% Loa( the !irst an( secon( n)mbers to A an( 1 re$isters res#ecti&el
7% ,om#are the contents o! r1 an( #er!orm the o#erations a((2 s)b2 etc accor(in$l%
4% Store the res)lt #resent in A an( 1 re$isters to the a##ro#riate memor locations%
RESULT2 1e!ore ->ec)tionL A.. SU1

A!ter ->ec)tionL A.. A!ter ->ec)tionL SU1
1e!ore ->ec)tionL MUL A!ter ->ec)tionL MUL
ASSEMBLY -ROGRAM ILLUSTRATING SLUARE AN, CUBE O-ERATIONS.
88c)be is an e>am#le o! 16"bit arithmetic o#eration
88(e#en(in$ on !la$ con(ition2 sH)are or c)be is #er!orme(
88 =la$ is a bit in the bit a((ressable RAM2 sa 1
st
bit o! location 20h is )se(2 then bit
a((ress is 01
6; An ei$ht bit n)mber 4 is store( in e>ternal memor location +000h% 9rite an AL5 to
com#)te :i; the sH)are o! the n)mber 4 i! LS1 o! (ata RAM 20h :bit a((ress 01/; is set
8051 MANUAL RNSIT 11
MICROCONTROLLERS LAB IVth SEM EC
:ii; the c)be o! the n)mber 4 i! LS1 o! (ata RAM 20h :bit a((ress 01/; is reset%
Store o)r res)lt at locations +0012 +0022 +007h%
6RK 0000/
SMM5 70/
6RK 70/
M6A .5TR2N+000/
M6A4 A2O.5TR 88K-T NUM1-R"4
M6A R02A 88ST6R- IN R0
M6A 12A
MUL A1 88SUUAR- IT"4V2
,LR , 88=6R ST6RINK R-SULT
M1 012LAST 88I= 1IT 01 IS S-T T/-N -N.2 -LS- .6 ,U1-
5US/ 1 88ST6R- U55-R 5ART 6= SUUAR-
M6A 12A 881"L69-R 5ART 6= 4V2
M6A A2R0 88A"4
MUL A1 884TL69-R 4V2
IN, .5TR
M6A4 O.5TR2A 88ST6R- 5ARTIAL R-SULT
M6A A21
M6A R22A 88U55-R 5ART 6= 4TL69-R 4V2 IN R2
565 1 88K-T 1A,K U55-R 5ART 6= SUUAR-
M6A A2R0 88A"4
MUL A1 884TU55-R 4V2
A.. A2R2 88A.. T6 5ARTIAL R-SULT
LASTLIN, .5TR
M6A4 O.5TR2A
M6A A21
A.., A2N00 88A.. ,ARRG T6 1:=6R SUUAR- R-SULT2 ,R0;
IN, .5TR
M6A4 O.5TR2A
/-R-LSMM5 /-R-
-N.
RESULT2
,U1- 6= 56/ IS +14+8 9/I,/ IS ST6R-. AS +82 142 0+ :L69-R 1GT- =IRST;
To $et sH)are ma@e the .
1
bit o! (ata memor 20h hi$h2 sa ==2022062etc% The bit a((ress is
01% Similarl bit a((ress 38h corres#on( to .0 bit 0! (ata ram location 2=h%
Ag!r<th5
1% Store the ei$ht bit n)mber > in A2 r0 < 1 re$isters%
2% M)lti#l A an( 1 re$isters to obtain the sH)are :sa SU/LSUL; o! the n)mber >%
8051 MANUAL RNSIT 12
MICROCONTROLLERS LAB IVth SEM EC
7% ,hec@ i! bit 01 is set% I! set $o to en( :storin$ the res)lt;2 else (o the c)be o#erations%
4% The hi$h #art o! the sH)are res)lt :SU/; is store( on the stac@%
5% M)lti#l the lo' #art o! the sH)are res)lt :SUL; 'ith > :#artial c)be res)lt;%
6% Store the lo' #art o! the abo&e res)lt at +001h < the hi$h #art in R2%
3% Retrie&e the hi$h #art o! the sH)are res)lt :SU/; store( on the stac@ < m)lti#l 'ith
>%
8% A(( the lo' #art o! the abo&e res)lt :SU/T4; 'ith R2 an( store in +002h%
+% A(( the hi$h #art :SU/T4; 'ith the res)ltin$ carr an( store in +007%
4. -ROGRAM ILLUSTRATING BIT MANI-ULATIONS
3; T'o ei$ht bit n)mbers NUM1 < NUM2 are store( in e>ternal memor locations 8000h
< 80001h res#ecti&el% 9rite an AL5 to com#are the 2 nos%
Re!lect o)r res)lt asL i! NUMIWNUM22 S-T LS1 o! (ata RAM 2= :bit a((ress 38/;
I= NUM1DNUM22 S-T MS1 6= 2=:3=/;% i! NUM1 R NUM2",lear both LS1 < MS1 o!
bit a((ressable memor location 2=h
6RK 0000/
SMM5 70/
6RK 70/
M6A .5TR2N8000/
M6A4 A2O.5TR
M6A R02A
IN, .5TR
M6A4 A2O.5TR
,LR ,
SU11 A2R0
MP -UUAL
MN, 1IK
S-T1 38/
SMM5 -N.1
1IKLS-T1 3=/
SMM5 -N.1
-UUALL,LR 33/
,LR 3=/
-N.1LSMM5 -N.1
-N.
Ag!r<th52
1% Store the elements o! the arra !rom the a((ress 4000h
2% Mo&e the !irst n)mber in r0 an( the secon( n)mber in re$ister A res#ecti&el
7% ,lear carr !la$ an( s)btract the t'o n)mbers2 i! the carr !la$ is 0:i! the nos are
eH)al;2 ,lear both LS1 < MS1 o! bit a((ressable memor location 2=h
4% I! the carr bit is set then Set MS1 o! 2=:3=/;2 else LS1 o! (ata RAM 2= :bit
a((ress 38/;%
RESULT L
1; 1e!ore ->ec)tionL 4L08000h R 45 < 4L8001 R 75
A!ter ->ec)t)ionL .L02=/ R01
2; 1e!ore ->ec)tionL 4L08000h R 25 < 4L8001 R 75
A!ter ->ec)t)ionL .L02=/ R80
7; 1e!ore ->ec)tionL 4L08000h R 45 < 4L8001 R 45
8051 MANUAL RNSIT 17
MICROCONTROLLERS LAB IVth SEM EC
A!ter ->ec)t)ionL .L02=/ R00
). LOGICAL INSTRUCTIONS
0+ ASSEMBLY -ROGRAM ILLUSTRATING LOGICAL INSTRUCTIONS (BYTE
LEVEL+
7 ei$ht bit n)mbers 42 NUM1 < NUM2 are store( in internal (ata RAM locations 20h2 21h
< 22/ res#ecti&el% 9rite an AL5 to com#)te the !ollo'in$%
I= 4R0? T/-N NUM1 :AN.; NUM22 I= 4R1? T/-N NUM1 :6R; NUM22
I= 4R2? T/-N NUM1 :46R; NUM22 -LS- R-S R002 R-S IS 27/ L6,ATI6N
6RK 0000/
SMM5 70/
6RK 70/
M6A A2 20h 88(onot )se N2 as (ata ram 20h is to be accesse(
M6A R12A 884 IN R1
M6A A221/ 88A "NUM1
,MN- R12N02,K6R
ANL A2 22/
SMM5 -N.1
,K6RL,MN- R12N012,K46R
6RL A2 22/
SMM5 -N.1
,K46RL,MN- R12N0226T/-R
4RL A2 22/
SMM5 -N.1
6T/-RL ,LR A
-N.1L M6A 27/2A 88ST6R- R-SULT
/-R-L SMM5 /-R-
-N.
Ag!r<th52
1% 5oint to the (ata RAM re$ister 20h an( store the con(ition >%
2% 5oint to 21h an( 22h an( mo&e the !irst n)mber to A re$ister%
7% ,om#are the contents o! r1 an( #er!orm the o#erations accor(in$l%
4% The res)lt 'ill be store( in 27/ re$ister%
RESULT2
1;1e!ore ->ec)tionL .L020/ R002 21R0!2 22 R 12
A!ter ->ec)tion .L027/ R 02
2;1e!ore ->ec)tionL .L020/ R012 21R0!2 22 R 12
A!ter ->ec)tion .L027/ R 1=
7;1e!ore ->ec)tionL .L020/ R022 21R0!2 22 R 12
A!ter ->ec)tion .L027/ R 1.
4;1e!ore ->ec)tionL .L020/ R742 21R0!2 22 R 12
A!ter ->ec)tion .L027/ R 00
The abo&e #ro$ram can also be 'ritten as sho'n belo' :)sin$ in(irect a((ressin$;
6RK 0000/
SMM5 70/
6RK 70/
mo& r02N20h
M6A A2OR0 886N ,/I5 .ATA RAM".6N6T US- M6A4
8051 MANUAL RNSIT 14
MICROCONTROLLERS LAB IVth SEM EC
M6A R12A 884 IN R1
IN, R0
M6A A2OR0 88A "NUM1
IN, R0 88 R0 56INTS T6 NUM2
,MN- R12N02,K6R
ANL A2 OR0
SMM5 -N.1
,K6RL,MN- R12N012,K46R
6RL A2 OR0
SMM5 -N.1
,K46RL,MN- R12N0226T/-R
4RL A2 OR0
SMM5 -N.1
6T/-RL ,LR A
-N.1LIN, R0
M6A OR02A 88ST6R- R-SULT
/-R-LSMM5 /-R-
-N.
B!!"an :ar<a@" instr)ctions are also calle( as @<t ":" !g<8a instr)ctions
+; 7 ei$ht bit n)mbers 42 NUM1 < NUM2 are store( in internal (ata RAM locations 20h2
21h < 22/ res#ecti&el% 9rite an AL5 to com#)te the !ollo'in$%
I= 4R0? T/-N LS1 6= NUM1 :AN.; LS1 6= NUM22
I= 4R1? T/-N MS1 6= NUM1 :6R;MS1 6= NUM2 2
I= 4R2? T/-N ,6M5L-M-NT MS1 6= NUM1
ST6R- T/- 1IT R-SULT IN R-S2 9/-R- R-S IS MS1 6= 27/ L6,ATI6N
6RK 00/
SMM5 70h
6RK 70h
M6A R0220/ 88R0"4
,MN- R02N02,K1
M6A ,208/ 88LS1 6= NUM1 :21/; " 1IT A..R-SS "08
ANL ,210/ 88LS1 6= NUM2 :22/; " 1IT A..R-SS "10
SMM5 LAST
,K1L,MN- R02N12,K2
M6A ,20=/ 88MS1 6= NUM1 :21/; " 1IT A..R-SS "0=
ANL ,213/ 88MS1 6= NUM2 :22/; " 1IT A..R-SS "13
SMM5 LAST
,K2L,MN- R02N22,K7
,5L 0=/
M6A ,20=/ 88MS1 6= NUM1 :21/; " 1IT A..R-SS "0=
SMM5 LAST
,K7L,LR ,
LASTLM6A 1=/2, 88R-S IS MS1 6= 27/ L6,ATI6N "1=/
/-R-LSMM5 /-R-
-N.
RESULT L 20h R 00 RD AN. 6= LS1sR1 :hence 80 in 27h location;
8051 MANUAL RNSIT 15
MICROCONTROLLERS LAB IVth SEM EC
20h R 01 RD 6R o! MS1s R 0 :hence 00 in 27h location;
20h R 01 RDcom#lement o! MS1 o! 21h location% /ence 21h is chan$e( to A1 an( 27h
location has 80h
1e!ore ->ec)tion A!ter ->ec)tion

Ag!r<th5 L
1% Mo&e the con(ition 4 :!rom 20h location; into R0 re$ister%
2% I! 4R0? then mo&e LS1 bit o! 21h to carr !la$ an( EAN.F ,arr !la$ 'ith LS1 bit
o! 22h% Koto ste#5
7% I! 4R1? then mo&e MS1 bit o! 21h to carr !la$ an( E6RF ,arr !la$ 'ith MS1 bit
o! 22h% Koto ste#5
4% I! 4R0? then com#lement MS1 bit o! 21h an( mo&e it to carr !la$% Koto ste#5
5% Store ,arr !la$ at MS1 bit o! 27h location%
$. COUNTERS
ASSEMBLY -ROGRAM ILLUSTRATING HE3 U-?,OEN COUNTERS.
88co)nter #ro$ram " he>8binar co)nters
10; 9rite an AL5 to im#lement :(is#la; an ei$ht bit )#8(o'n binar :he>; co)nters on
'atch 'in(o'%
N!t"2 to r)n this #ro$ram2 a!ter selectin$ .-1UK session in the main men) )se
V<"G#M Eat8h. 8a Sta89 G<nd!G2 in the 9atches select 'atch 1:or 2; an(
#ress =2 an( enter a :!or acc)m)lator A;
6RK 0/
SMM5 70/
6RK 0/
M6A a2N00
1A,KL A,ALL .-LAG
IN, a 88d"8 a !or binar (o'n co)nter
MNP 1A,K
/-R-LSMM5 /-R-
.-LAGL M6A r12N0==/
.-,R1LM6A r22N0==/
.-,RL M6A r72N6==/
.MNP r72X
.MNP r22.-,R
.MNP r12.-,R1
R-T
-N.
8051 MANUAL RNSIT 16
MICROCONTROLLERS LAB IVth SEM EC
RESULT2 Acc)m)lator A is incremente( in binar !rom 002 01202Y0+20A2 012
Y20=2102112Y==
Ag!r<th52
1% Mo&e 00 to A re$ister
2% ,all the (ela s)bro)tine !or 1 secon(2 in (ela #ro$ram mo&e ==/ to re$isters r12
r2 an( r72 loo# an( (ecrement )ntil 0%
7% Increment A re$ister:(ecremant !or (o'n co)nter;
ASSEMBLY -ROGRAM ILLUSTRATING BC, U-?,OEN COUNTERS.
88co)nter #ro$ram C 1,. )#8(o'n co)nters
11; 9rite an AL5 to im#lement :(is#la; an ei$ht bit )#8(o'n 1,. co)nters on 'atch
'in(o'%
6RK 0/
SMM5 70/
6RK 70/
M6A a2N00
1A,KLA,ALL .-LAG
A.. a2N++/ 88A.. 01 !or 1,. )# co)nter
,A A 88!or bc( co)nter
MNP 1A,K
/-R-LSMM5 /-R-
.-LAGLM6A r12N0==/
.-,R1LM6A r22N0==/
.-,RLM6A r72 N0==/
.MNP r72X
.MNP r22 .-,R
.MNP r12 .-,R1
R-T
-N.
Ag!r<th52
4% Mo&e 00 to A re$ister
5% ,all the (ela s)bro)tine !or 1 secon( :in (ela #ro$ram mo&e ==/ to re$isters r12
r2 an( r72 loo# an( (ecrement )ntil 0;%
6% Increment A re$ister:a(( ++h !or (o'n co)nter;
3% .ecimal a(B)st acc)m)lator !or the 1,. )#8(o'n co)nter%
RESULT2 Acc)m)lator A is incremente( in 1,. !rom 002 012 02Y0+2 102 112Y++%
8051 MANUAL RNSIT 13
MICROCONTROLLERS LAB IVth SEM EC
%. SERIAL ,ATA TRANSMISSION
5ro$ram ill)stratin$ serial ascii (ata transmission :(ata"-;
N!t""to )se res)lt o! this #ro$ram2 a!ter selectin$ .-1UK session in the main men) )se
V<"G#M s"r<a G<nd!G N'% 6n r)nnin$ < haltin$ the #ro$ram2 the (ata is seen in the serial
'in(o'%
12; ,on()ct an e>#eriment to con!i$)re 8051 microcontroller to transmit characters :-; to
a 5, )sin$ the serial #ort an( (is#la on the serial 'in(o'%
6RK 0/
SMM5 70/
6RK 70/
M6A TM6.2N20/ 88timer 1? mo(e 2
M6A T/12N"7 88"7R=. loa(e( into T/1 !or +600 ba)(2 11%05+2M/0%
M6A S,6N2N50/ 888"bit2 1 sto# bit2 R-N enable(
S-T1 TR1 88Start timer 1
AKAINLM6A A2NFF 88trans!er IJ
A,ALL TRANS
M6A a2NF-F 88trans!er I-J
A,ALL TRANS
AKAIN1LSMM5 AKAIN1
TRANSL M6A S1U=2a 88loa( S1U=
/-R-LMN1 TI2/-R- 889ait !or last bit to trans!er
,LR TI 88$et rea( !or ne>t bte
R-T
-N.
RESULT2 - is #rinte( on the serial 'in(o' each time the #ro$ram is e>ec)te(%
Th"!r=2 In serial transmission as o##ose( to #arallel transmission2 one bit at a time is
transmitte(% In serial asnchrono)s transmission2 the (ata consists o! a Start bit :hi$h;2
!ollo'e( b 8 bits o! (ata to be transmitte( an( !inall the sto# bit% The bte character to be
transmitte( is 'ritten into the S1U= re$ister% It transmits the start bit% The 8"bit character is
trans!erre( one bit at a time% The sto# bit is trans!erre(% A!ter the transmission2 the TI !la$ R
1 in(icatin$ the com#letion o! transmission% /ence in the s)bro)tine 'ait )ntil TI is set%
Later clear the TI !la$ an( contin)e 'ith transmission o! the ne>t bte b 'ritin$ into the
S1U= re$ister% :The #ro$ram can also be 'ritten in interr)#t mo(e;% The s#ee( o! the serial
transmission is set b the ba)( rate 'hich is (one 'ith the hel# o! timer 1% :Re!er Aala;%
Timer1 m)st be #ro$ramme( in mo(e 2 :that is2 8"bit2 a)to reloa(;%
1a)( rate ,alc)lationL ,rstal !reH8 :12T72; R :11%05+2M/0;8:12T72; R 28800%
Serial comm)nication circ)itr (i&i(es the machine ccle !reH)enc:11%05+2M/0;8:12; b
72 be!ore it is bein$ )se( b the timer to set the ba)( rate%
To $et +6002 2880087 is obtaine( b loa(in$ timer1 'ith "7 :i%e%2 == C 7 R =.; !or !)rther
cloc@ (i&ision% =or 2400 ba)( rate2 28800812 RD "12 R =4 in T/1%
Ag!r<th52
1% Initiali0e timer 1 to o#erate in mo(e 2 b loa(in$ TM6. re$ister%
2% loa( T/1 'ith "7 to obtain +600 ba)(%
7% Initiali0e the asnchrono)s serial comm)nication transmission :S,6N; re$ister%
4% Start timer1 to $enerate the ba)( rate cloc@%
8051 MANUAL RNSIT 18
MICROCONTROLLERS LAB IVth SEM EC
5% Transmit the characters IJ < I-J b 'ritin$ into the S1U= re$ister an( 'aitin$ !or
the TI !la$%
*+ TIMER ,ELAY -ROGRAM
5ro$ram ill)stratin$ timer (ela
17; Kenerate a 1secon( (ela contin)o)sl )sin$ the on chi# timer in interr)#t mo(e%
6RK 0/ 88Reset Aector
SMM5 70/
6RK 01/ 88T=0 &ector
SMM5 ISR
6RK 70/
M6A a2N00
M6A R02N0
M6A R12N0
M6A TM6.2N02/ 8800000010"R)n timer0 in mo(e 2
M6A T/02N118 88Set )# timer 0 to o&er!lo' in 0%05msec
M6A I-2N82/ 88Z10000010 C -nable timer0 interr)#t
S-T1 T,6N%4 88Start the timer0
/-R-LSMM5 /-R-
ISRL ,LR T,6N%4 88.isable timer0
IN, r1 88r1Tr2 R 100T200 R 20000 T 0%05msec R 1sec
,MN- r12N1002SKI5
M6A r12N00
IN, r0
,MN- r02N2002SKI5
M6A r02N00/
IN, a
SKI5L S-T1 T,6N%4 88-nable Timer
R-TI 88Ret)rn !rom interr)#t s)bro)tine
-N.
RESULT2 Acc)m)lator A is incremente( in binar !rom 002 01202Y0+20A2 012 Y2 0=2 102
112 Y== e&er 1 secon( :!or 77M/0 cloc@ settin$ < e&er 7 secon(s !or 11%05+8M/0;
Al$orithmL
1% Set )# timer0 in mo(e 2 o#eration
2% Loa( T/1 'ith 118 to $enerate an interr)#t e&er 0%05msec%
7% Reset re$isters a2 r1 < r0%
4% Re#eat ste# 4 contin)o)sl
5% 6n interr)#t? ISR at 0001 loaction $oes to ste# 6
6% (isable timer0
3% U#(ate r1 < r0
8% ,hec@ i! 20000 interr)#ts :R1 sec; o&er% Ges Cincrement acc)m)lator a%
+% enable timer < ret)rn !rom ISR%
8051 MANUAL RNSIT 1+
MICROCONTROLLERS LAB IVth SEM EC
Timer(ela R 12T:253"(ela;8!reH)enc
Timer(elaR0%05msec
.elaR256"::timer(ela T !reH)enc;812; R256":0%05T10
"7
T 77T10
6
;812
R256"173%5 R118%5 88loa(e( in T/0
To $et 1sec (ela
180%05msec R 200T100 in the ISR
:ass)min$ 77 M/P crstal !reH)enc% =or 11 M/02 the calc)lations chan$e;%
8051 MANUAL RNSIT 20
MICROCONTROLLERS LAB IVth SEM EC
0. CONVERSION -ROGRAMS
')+ Er<t" an AL- t! <5A"5"nt d"8<5a t! h"; 8!n:"rs<!n
6RK 0000/
SMM5 70h
6RK 70h
M6A .5TR2N40/ 882"(i$it (ecimal n)mber to be con&erte( is $i&en in (ata
memor 40h
M6A4 A2 O.5TR
ANL A2 N0=0/ 88obtain )##er (ecimal (i$it
S9A5 A 88brin$ to the )nits #lace
M6A 12N0A/ 88MULTI5LG tens (i$it 'ith N0A"to$et tens in he>
MUL A1
M6A r12a 88tem#oraril store the con&erte( tens &al)e
M6A4 A2O.5TR 88$et the (ecimal n)mber a$ain
ANL A2N0=/ 88obtain the )nits (i$it
A.. A2R1 88a(( to the con&erte( tens &al)e
IN, .5TR 88increment (ata a((ress
M6A4 O.5TR2A 88con&erte( he>a(ecimal n)mber in ne>t location
/-R-LSMM5 /-R-
-N.
RESULT L be!ore e>ec)tion" 4L0040/ R 45 :.ecimal81,.;
A!ter ->ec)tionL 4L0041h R 2. :he> &al)e;
Ag!r<th5
1% Mo&e the (ecimal (ata to be con&erte( !rom e>ternal memor 40h to acc)m)lator%
2% AN. A re$ 'ith 0!0h an( obtain the )##er MS1 o! the (ecimal (i$it an( s'a# the
LS1 an( MS1 o! acc)m)lator to brin$ the same to )nits #lace%
7% Mo&e 0ah to 1 re$ister an( m)lti#l 'ith A re$ to con&ert to he> &al)e2 store the
con&erte( tens &al)e in r1
4% Ket the LS1 o! the (ecimal n)mber an( a(( to the con&erte( tens &al)e
5% #oint to the ne>t memor location an( store the res)lt :he>a(ecimal;%
'$+ Er<t" an AL- t! <5A"5"nt h"; t! d"8<5a 8!n:"rs<!n
6RK 0000/
SMM5 70h
6RK 70h
M6A .5TR2N+000/
M6A4 A2O.5TR 88Ket he> n)mber
M6A 12N10
.IA A1 88(i&i(e b 10 :0A/;
IN, .5TR
4,/ A21
M6A4 O.5TR2A 88Store the remain(er :in 1; In )nits #lace
4,/ A21
M6A 12N10 88.i&i(e the H)otient in A b 10
.IA A1
IN, .5TR
8051 MANUAL RNSIT 21
MICROCONTROLLERS LAB IVth SEM EC
4,/ A21
M6A4 O.5TR2A 88Store the remain(er :in 1; In tens #lace
4,/ A21
IN, .5TR
M6A4 O.5TR2A 88Store the H)otient :in A; in h)n(re(s #lace
/-R-LSMM5 /-R-
-n(
RESULT L +000/ C == :/-4 NUM1-R;
+001 to +007 C )n#ac@e( 1,. n)mber :(ecimal;" 52522 :i%e%2 255 store( Lo'er (i$it !irst;
Ag!r<th5
1% Mo&e the he> (ata to be con&erte( to acc)m)lator%
2% Mo&e 10 to 1 re$ister an( (i&i(e 'ith A re$ to con&ert to ascii &al)e
7% Store the con&erte( LS1 &al)e in r3
4% Re#eat the ste# 2 to obtain the con&erte( MS1 &al)e
5% Store the same in r6
16; 9rite an AL5 to im#lement 1,. to AS,II con&ersion
6RK 0000/
SMM5 70h
6RK 70h
M6A R12N50/
M6A A2OR1 88$et 1,. (ata bte !rom RAM location 50h
M6A R22A 88Store in R2
ANL A2N0=/ 88Ket the lo'er nibble
6RL A2N70/ 88A((8or 'ith 70h i%e%2 0"+ con&erte( to 70"7+h
IN, R1
M6A OR12A 88Store the lo'er (i$it[s AS,II co(e
M6A A2R2 88Ket bac@ the n)mber
S9A5 A 88S'a# nibbles in A
ANL A2N0=/ 88Ket the )##er 1,. (i$it
6RL A2N70/ 88,on&ert to AS,II
IN, R1
M6A OR12A 88Store the )##er (i$it[s AS,II co(e
hereL sBm# here
-N.
RESULT L The 1,. co(e 28 at .L0050h is con&erte( to 2 AS,II co(es"78h 72h
Ag!r<th5 L
8051 MANUAL RNSIT 22
MICROCONTROLLERS LAB IVth SEM EC
88,on&erts the 1,. bte in A into t'o AS,II characters%
1% Mo&e the 1,. (ata to be con&erte( to acc)m)lator%
2% Ket the lo'er nibble:1,. (i$it; < A.. :or 6RL; 'ith 70h
7% Store the con&erte( AS,II &al)e
4% Ket the hi$her nibble:tens 1,. (i$it; < A.. :or 6RL; 'ith 70h
5% Store the con&erte( AS,II &al)e
'*+ Er<t" an AL- t! <5A"5"nt h";ad"8<5a t! ASCII 8!n:"rs<!n
??Th<s Ar!gra5 as! <>strat"s 8!nd<t<!na @ran8h<ng (1NC+, 8a and r"t>rn
<nstr>8t<!ns.
6RK 0000/
SMM5 70h
6RK 70h
M6A R12N50/
M6A A2OR1 88$et he>a(ecimal (ata bte !rom RAM location 50h
M6A R22A 88Store in R2
ANL A2N0=/ 88Ket the lo'er nibble
A,ALL AS,II 88,on&ert to AS,II
IN, R1
M6A OR12A 88Store the lo'er (i$it[s AS,II co(e
M6A A2R2 88Ket bac@ the n)mber
S9A5 A 88S'a# nibbles in A
ANL A2N0=/ 88Ket the )##er 1,. (i$it
A,ALL AS,II
IN, R1
M6A OR12A 88Store the )##er (i$it[s AS,II co(e
hereL sBm# here
AS,IILM6A R42A 88Store a
,LR ,
SU11 A2N0A/ 88,hec@ i! (i$it DR0A
M6A A2R4
MN, SKI5
A.. A2N03/ 88A(( 03 i! D0+
SKI5LA.. A2N70/ 88-lse a(( onl 70h !or 0"+
R-T
-N.
RESULT L The 1,. co(e 2, at .L0050h is con&erte( to 2 AS,II co(es"47h:!or 01; < 72h
:!or 02; Another ->am#le"1A

Ag!r<th5 L
88,on&erts the he>a(ecimal bte in A into t'o AS,II characters%
1% Mo&e the he>a(ecimal (ata to be con&erte( to acc)m)lator%
2% Ket the lo'er nibble < call AS,II ro)tine
7% Store the con&erte( AS,II &al)e
8051 MANUAL RNSIT 27
8
0
5 P0
1 P1

HC
CRO
Xout

MICROCONTROLLERS LAB IVth SEM EC
4% Ket the hi$her nibble < call AS,II ro)tine
5% Store the con&erte( AS,II &al)e
AS,II s)bro)tine
1% I! (i$it $reater than 0+2:!or A"=; a(( 03h < 70h
2% -lse :i%e%2 !or 0"+; a(( onl 70h
7% ret)rn
'0+ Er<t" an AL- t! <5A"5"nt ASCII t! h";ad"8<5a 8!n:"rs<!n
6RK 0000/
SMM5 70h
6RK 70h
M6A R12N50/
M6A A2OR1 88$et ascii bte !rom RAM location 50h
,LR ,
SU11 A2N41/
M6A A2OR1
M, SKI5
,LR ,
SU11 A2N03/
SKI5L,LR ,
SU11 A2N70/
IN, R1
M6A OR12A 88Store the he> co(e
hereL sBm# here
-N.
RESULT L The AS,II co(e 45 at .L0050h is con&erte( to he>a(ecimal "0- at 51h
N!t"2 =or this #ro$ram the in#)t (ata sho)l( be onl in the ran$e 4&h#4Fh < )'h t! )%h%
Ag!r<th5 L
88,on&erts the AS,II characters into he>a(ecimal n)mber%
1% Mo&e the AS,II character to be con&erte( to acc)m)lator%
2% I! character is $reater than 41h2:!or A"=;2 then s)btract 03h < 70h
7% -lse :i%e%2 !or 0"+; s)btract onl 70h
4% Store the con&erte( he>a(ecimal n)mber%
8051 MANUAL RNSIT 24
8
0
5 P0
1 P1

HC
CRO
Xout

MICROCONTROLLERS LAB IVth SEM EC
INTERFACING -ROGRAMS
HardGar" Int"r7a8<ng
1%9a&e!orm Keneration )sin$ .)al .A,
2%Ste##er Motor inter!ace%
7%444 he>a(ecimal Keboar( inter!ace
4%., motor inter!ace
5%,alc)lator )sin$ Keboar( an( Se&en se$ment (is#la%
6%-le&ator control%
3%Tem#erat)re sensor%
F"at>r"s !7 E5@"dd"d C
\ , is a sim#le #ro$rammin$ lan$)a$e an( so &er eas to co(e%
\ -mbe((e( , has most !eat)res o! ,"lan$)a$e 'ith more stress on certain bit
mani#)lati&e instr)ctions%
\ This !eat)re ma@es it eas to 'rite #ro$ram !or ], an( ]5%
\ Keil is a &ersatile so!t'are 'ith a cross com#iler that 'ill con&ert the , #ro$ram to
assembl lan$)a$e an( th)s the #ro$ram can be e>ec)te( on the (esire( tar$et :sa
8051;%
Some o! the bit mani#)lati&e instr)ctions )se( are
Smbol 6#eration
< 1it'ise AN.
^ 1it'ise 6R
_ 1it'ise N6T
DD Shi!t Ri$ht
WW Shi!t Le!t
V 50%0
'.,>a ,a8 Int"r7a8" t! g"n"rat"
a%SH)are 'a&e!orm
b%Trian$)lar 9a&e!orm
c%Ram# 'a&e!orm
(%Sine 'a&e!orm
8051 MANUAL RNSIT 25
8
0
5 P0
1 P1

HC
Dual
DAC
CRO
Xout

MICROCONTROLLERS LAB IVth SEM EC
'.aAg!r<th5 7!r SB>ar" Ga:" g"n"rat<!n
Let initial2 am#lit)(e o! the sH)are 'a&e be 2%5&:3=; an( !reH)enc co)nt 100%
6)t#)t the &al)es 00h:0!!; an( 3!h:on; Aal)es thro)$h 50%
I! am#lit)(e @e is #resse( then increase the &olta$e in ste#s o! 0%15&:8;%
I! the !reH)enc @e is #resse( increment the co)nt in ste#s o! 50% I! the co)nt
e>cee(s 1000 reset it bac@ to 100%
-&er time am#lit)(e an( !reH)enc chan$es o)t#)t the &al)e thro 50 an( note the
'a&e!orm on ,R6%
-r!gra5 7!r sB>ar" Ga:"
Nincl)(e WR-K51>.2%/D
sbit Am# R 57V7? 8T 5ort line to chan$e am#lit)(e T8
sbit =re R 57V2? 8T 5ort line to chan$e !reH)enc T8
&oi( (ela:)nsi$ne( int >; 8T (ela ro)tine T8
`
!or:?>D0?>"";?
a
main:;
`
)nsi$ne( char on R 0>3!2o!!R0>00?
)nsi$ne( int !re R 100?
'hile:1;
`
i!:bAm#; 8T i! )ser choice is to chan$e am#lit)(e T8
`
'hile:bAm#;? 8T 'ait !or @e release T8
onSR0>08? 8T Increase the am#lit)(e T8
a
i!:b=re; 8T i! )ser choice is to chan$e !reH)enc T8
`
i!:!re D 1000; 8T i! !reH)enc e>cee(s 1000 reset to (e!a)lt T8
!re R 100?

'hile:b=re;? 8T 'ait !or @e release T8
!re SR 50? a 8T Increase the !reH)enc T8
50Ron? 8T 'rite am#lit)(e to #ort T8
51Ron?
(ela:!re;?
50 R o!!? 8T clear #ort T8
51 R o!!?
(ela:!re;?
aa
'.@Ag!r<th5 7!r Tr<ang>ar Ga:" g"n"rat<!n
6)t#)t the initial &al)e 00 thro)$h 50%
8051 MANUAL RNSIT 26
MICROCONTROLLERS LAB IVth SEM EC
Increment it in ste#s o! 1 )ntil a co)nt &al)e o! ==h :5A; is reache(% -&er time
re#eat ste# 1%
.ecrement it in ste#s o! 1 )ntil a 0ero &al)e is reache( an( re#eat ste# 1%
-r!gra5 7!r tr<ang>ar Ga:"2
Nincl)(e WR-K51>.2%/D
main:;
`
)nsi$ne( char iR0?
50 R 0>00? 8T 50 as 6)t#)t #ort T8
'hile:1;
`
!or:iR0?iW0>!!?iSS;` 8T Kenerate 6N #)lse T8
51 R i?
50 R i?
a
!or:iR0>!e?iD0>00?i""; 8T Kenerate 6== #)lse T8
`50 R i?
51 R i?a
a
a
'.8.Ag!r<th5 7!r Ra5A Ga:" g"n"rat<!n
6)t#)t the initial &al)e 00 thro)$h 50%
Increment it in ste#s o! 1 )ntil a co)nt &al)e o! ==h :5A; is reache(% -&er time
re#eat ste# 1%
Re#eat ste# 1 < 2 contin)o)sl%
-r!gra5 7!r Ra5A Ga:"7!r5
Nincl)(e WR-K51>.2%/D
main :;
` Unsi$ne( char iR0?
50 R 0>00? 8T 50 as 6)t#)t #ort T8
'hile :1;
`
!or :iR0?iW0>!!?iSS; 8T Kenerate 6N #)lse T8
`
51 R i?
50 R i? a
a
a
'd.Ag!r!th5 7!r S<n" Ga:"
,om#)te (i!!erent ste# &al)es :c R 20
o
215
o
Y; o! sine )sin$ the eH)ation
AR 2%5A S2%5Asinc% % 6)t#)t the &al)es thro 50%
More the ste#s smoother 'ill be sine 'a&e%
8051 MANUAL RNSIT
5S
23
MICROCONTROLLERS LAB IVth SEM EC
-%$%L c R 0
o

AR 2%5A S2%5Asinc R 2%5A
The &al)e sent to .A, is 25%645AR 128%
-r!gra5 7!r s<n" Ga:"
Nincl)(e WR-K51>.2%/D
main:;
`
static int ad17eR`12821+222782255227821+22128264213202132642128a?
)nsi$ne( char iR0?
50 R 0>00? 8T 50 as 6)t#)t #ort T8
'hile :1;
`
!or:iR0?iW17?iSS; 8T 6)t#)t (i!!erent &al)es T8
` 50 R adie? a
a
a
/.St"AA"r M!t!r
\ Ste##er motor )nli@e ., motor rotates in ste#s%
\ Ste##er motor has 4 coils 'hich !orms the stator an( a central rotor%
\ Rotation (e#en(s on e>citation o! stator coils%
ste# coil A coil 1 coil , coil .
1 0 0 0 1
2 1 0 0 0
7 0 1 0 0
4 0 0 0 1
Anone o! these &al)es !orms the initial &al)e% To $et 760o re&ol)tion 200 ste#s are
reH)ire(%
Ste# an$leR 760
o
8200 R 1%8
o
% :(i!!erence bet'een 2 teeth;%
Ag!r<th5 7!r St"AA"r M!t!r
\ ,on!i$)re 50 as o)t#)t%
\ A##l the initial e>citation o! 11 to motor coils thro)$h 50%
\ =or cloc@'ise motion "Rotate ri$ht once the e>citation an( re#eat ste# 2%
\ =or anticloc@'ise motion "Rotate le!t once the e>citation an( re#eat ste# 2%
8051 MANUAL RNSIT
5S
5S
28
MICROCONTROLLERS LAB IVth SEM EC
88-r!gra5 7!r st"AA"r 5!t!r <nt"r7a8"
Nincl)(e WR-K51>.2%/D
&oi( (ela :)nsi$ne( int >; 8T .ela Ro)tine T8
`
!or:?>D0?>"";?
ret)rn?
a
Main : ;
`
)nsi$ne( char Aal2 i?
50R0>00?
Aal R 0>11?
!or :iR0?iW4?iSS;
`
50 R Aal?
Aal R AalWW1? 8T AalR AalDD1? !or cloc@'ise (irectionT8
(ela :500;?
a
a
4. )3) HE3 6"=@!ard
Ag!r<th5 7!r 6"=@!ard Int"r7a8"
\ ,on!i$)re 51 as o)t#)t #ort to scan the ro's an( 50 as in#)t #ort to rea( the col)mn
&al)es%
\ =irst select the last ro' b $ro)n(in$ that ro'% Scan the col)mns o! entire ro' i! a
@e is #resse( in that ro' then one o! the col)mn rea(s E0F%
\ I! no' @e is #resse( in the selecte( ro' all 1Fs is ret)rne(% So scan ne>t ro'%
Re#eat the action )ntil all ro's are scanne(%
8051 MANUAL RNSIT
8051f,
50
=R, 26#in
,able
5S
Ste##er
Motor
Inter!ace
,ar(
5S
Ste##er
Motor
5S
2+
MICROCONTROLLERS LAB IVth SEM EC
885ro$ram !or 444 he> @e#a(%
Nincl)(e W R-K51>.2%/D
Nincl)(e Wintrins%hD
Nincl)(e glc(%hg
)nsi$ne( char ro's2col)mns2res)lt2abhi?
)nsi$ne( char tem# R 0?
&oi( (ela:;
`
)nsi$ne( int i?
!or:i R 0? i WR 20000? i SS;?
a
&oi( .is#la:;
`
i!:res)lt D 0>0+;
`
res)lt SR 0>73?
9rite,har:res)lt;?
a
else
`
res)lt SR 0>70?
9rite,har:res)lt;?
a
a
&oi( KeScan:;
`
a$ainL col)mns R 0>33?
ro's R 0>04?
res)lt R 0>0c?
ne>tL 51 R col)mns?
col)mns DDR1?
i!:,G;

col)mns R col)mns ^0>08 ?
tem# R 50?
tem# R :tem# < 0>0!;?
8051 MANUAL RNSIT
8051f,
50
=R, 26#in
,able
5S
444
Keboar(
Inter!ace
,ar(
5S
444 /e>
@e#a(
5S
70
MICROCONTROLLERS LAB IVth SEM EC
i!:tem# bR 0>0!;
`
rotL tem# DDR 1?
i!:b,G;
`
,lrLc(:;?
ret)rn?
a
else
`
res)lt SR 1?
$oto rot?
a
a
else
`
res)lt "R 0>04?
ro's ""?
i!:ro's RR 0;
$oto a$ain?
else
`
$oto ne>t?
a
a
a
&oi( main:;
`
50 R 0>!!?
51 R 0>00?
InitLc(:;?
9riteStrin$ :gK-G 5R-SS-.Rg;?
'hile:1;
`
KeScan:;?
9riteStrin$ :gK-G 5R-SS-.Rg;?
.is#la:;?
a
a
).,C M!t!r
Ag!r<th5 7!r ,C 5!t!r <nt"r7a8"
\ ,on!i$)re 50251 as o)t#)t #ort an( 57 as in#)t #ort%
\ Let initiall the motor rotate 'ith hal! s#ee( co)nt 3!h%
\ I! IINRJ b)tton is #resse( re()ce the co)nt beca)se the s#ee( is in&ersel
#ro#ortional to co)nt%
\ I! I.-,J b)tton is #resse( increase the co)nt%
8051 MANUAL RNSIT
5S
5S
71
MICROCONTROLLERS LAB IVth SEM EC
-r!gra5 7!r ,C 5!t!r
Nincl)(e WR-K51>.2%/D
sbit inrR 57V2? 88s#ee( increment s'itch
sbit (crR 57V7? 88s#ee( (ecrement s'itch
main:;
`
)nsi$ne( char iR0>80?
50 R 0>3!? 8TR)n the motor at hal! s#ee(%T8
'hile :1;
` i! :binr;
`'hile :binr;?
i!:iD10;
iRi"10? 88increase the ., motor s#ee(
a
i!:b(cr;
`
'hile:b(cr;?
i!:iW0>!0;
iRiS10? 88(ecrease the ., motor s#ee(
a
50Ri?
a a
$.Ca8>at!r >s<ng 6"=@!ard and *#s"g5"nt d<sAa=
Ag!r<th5
\ Rea( the n)mbers n1 an( n2 !rom @eboar( an( (is#la them on se&en se$ment%
\ Rea( the o#eran( !rom the @e#a( i! @e #resse( is 1 :S;2 ,:";2.:T;2-:8; then
res#ecti&e o#eration is #er!orme(%
\ Res)lt is (is#lae( on 2 (i$it se&en se$ment (is#la%
\ I! an time the @e #resse( &al)e ret)rne( as 10h then clear the L,.%
8051 MANUAL RNSIT
8051f,
50
=R, 26#in
,able
57%2:inr;
57%7:(ec;
5S
., Motor
Inter!ace
,ar(
5S
.,
Motor
5S
72
MICROCONTROLLERS LAB IVth SEM EC
-r!gra5 7!r 8a8>at!r
Nincl)(e WR-K51>.2%/D
&oi( .is#,har:)nsi$ne( char ch;?
&oi( ,lrL-.:;?
)nsi$ne( char $et@e:;?
)nsi$ne( char $etn)m:;?
)nsi$ne( char $et6#:;?
sbit ,l@ R 57V4? 8T ,loc@ line !or 3 se$ment (is#la T8
sbit .at R 50V0? 8T .ata line !or 3 se$ment (is#la T8
main:;
`
)nsi$ne( char tm#R0>0!!2n1R02n226#2Res?
)nsi$ne( char N)mTabd10e R `
0>0c020>0!+20>0a420>b020>++20>+220>8220>0!820>8020>+0 a?
)nsi$ne( char 6#Tabd4e R ` 0>8820>01!20>c820>0a1a?
bit Ne$R0?
,lrL-.:;? 8T ,lear 3 se$ment (is#la T8
'hile:1;
`
Ne$ R 0? 8T Ne$ati&e !la$ T8
n1R$etn)m:;? 8T Ket 1st n)mber T8
6# R $et6#:; " 0>01? 8T Ket 6#co(e% 0>0b is @eco(e o! [S[:see @eboar( schematics;T8
n2R$etn)m:;? 8T Ket 2n( n)mber T8
'hile:$et@e:;bR0>17;? 8T 'ait !or [R[ @e T8
,lrL-.:;?
s'itch:6#; 8T 5er!orm corres#on(in$ o#eration T8
`
case 0L Res R n1 S n2?
brea@?
case 1L
i!:n2Dn1; 8T chec@ !or ne$ati&it T8
`
8051 MANUAL RNSIT
8051f,
50
=R, 26#in
,able
5S
Ke#a(
5S
3 Se$
.is#la
77
MICROCONTROLLERS LAB IVth SEM EC
Ne$ R 1?
Res R n2 " n1?
brea@? a
Res R n1 " n2? brea@?
case 2L Res R n1 T n2?
brea@?
case 7L Res R n1 8 n2?
brea@? a
.is#,har:N)mTabdResZ10e;? 8T .is#la n)mber T8
.is#,har:N)mTabdRes810e;?
i!:Ne$; 8T i! ne$ati&e res)lt (is#la ["[ T8
.is#,har:0>01!;?
aa
&oi( .is#,har:)nsi$ne( char ch; 8T Ro)tine to (is#la char on 3 se$ment T8
`
)nsi$ne( char i2tm#?
50R0>00?
!or:iR0?iW8?iSS; 8T !or all bits T8
`
tm# R ch < 0>80?
i!:tm#; 8T 'rite (ata (e#en(in$ on MS1 T8
.at R 1?
else
.at R 0?
,l@ R 0? 8T Ki&e ,l@ 5)lse !or snchroni0ation T8
,l@ R 1?
ch R ch WW 1? 8T Ket ne>t bit T8
a
a
&oi( ,lrL-.:;
`
)nsi$ne( char i?
!or:iR0?iW4?iSS;
.is#,har:0>0!!;? 8T 0>!! !or clear se$ment : see 3 se$ment man)al !or more in!o; T8
a
)nsi$ne( char $et@e:;
` )nsi$ne( char i2B2in(>2t?
52 R 0>00? 8T 52 as 6)t#)t #ort T8
50 R 0>0!!?
in(> R 0>00? 8T In(e> !or storin$ the !irst &al)e o! scanline T8
'hile:1;
`
!or:iR1?iWR4?iWWR1; 8T !or 4 scanlines T8
`
52 R 0>0! < _i? 8T 'rite (ata to scanline T8
t R 50? 8T Rea( rea(lines connecte( to 50T8
t R _t?
i!:tD0; 8T I! @e #ress is tr)e T8
`
8051 MANUAL RNSIT
5S
74
MICROCONTROLLERS LAB IVth SEM EC
!or:BR0?BWR3?BSS; 8T ,hec@ !or 8 lines T8
` t DDR1?
i!:tRR0; 8T i! $et #resse( @eT8
`
ret)rn:in(>SB;? 8T Ret)rn in(e> o! the @e #resse( T8
a
a
a
in(> SR 8? 8T I! no @e #resse( increment in(e> T8
a aa
)nsi$ne( char $etn)m:; 8T Metho( !or $ettin$ n)mber T8
`
)nsi$ne( char tm#?
'hile:1;
`
tm# R $et@e:;?
i!:tm# W 0>0a ^^ tm#RR0>10; 8T i! #resse( @e is n)mber2 ret)rn T8
ret)rn:tm#;?
aa
)nsi$ne( char $et6#:; 8T Metho( !or $ettin$ 6#erator T8
`
)nsi$ne( char tm#?
'hile:1;
`
tm# R $et@e:;?
i!::tm# D 0>0a << tm# W0>0!;^^ tm#RR0>10; 8T i! #resse( @e is a 6#erator2 ret)rn T8
ret)rn:tm#;?
a a
%.E":at!r
Ag!r<th5 7!r "":at!r <nt"r7a8"
\ Rea( the !loor reH)est thro)$h in#)t #ort 51%
\ I! the c)rrent !loor an( reH)este( !loor are the same no chan$e li$ht )# the
corres#on(in$ L-. thro)$h 50%
\ I! the reH)este( !loor $reaterthan c)rrent mo&in$ )# o! the li!t is in(icate( b
$lo'in$ o! L-.Fs !rom c)rrent !loor to the reH)este(%
\ I! the reH)este( !loor lesserthan c)rrent mo&in$ (o'n o! the li!t is in(icate( b
$lo'in$ o! L-.Fs !rom c)rrent !loor to the reH)este(%
8051 MANUAL RNSIT
5S
75
5S
MICROCONTROLLERS LAB IVth SEM EC
-r!gra5 7!r E":at!r
Nincl)(e WR-K51=%/D
&oi( (ela:)nsi$ne( int;?
main:;
`
)nsi$ne( char =lrd+e R `0>!!20>0020>0720>!!20>0620>!!20>!!20>!!20>0+a?
)nsi$ne( char =,lrd+e R `0>!!20>0-020>0.720>!!20>01620>!!20>!!20>!!20>3+a?
)nsi$ne( char ReH=lr2,)r=lr R 0>012i2B?
50 R 0>00?
50 R 0>0!0?
'hile:1;
`
51 R 0>0!?
ReH=lr R 51 ^ 0>0!0?
'hile:ReH=lr RR 0>0!!;
ReH=lr R 51 ^ 0>0!0? 8T Rea( ReH)est =loor !rom 51 T8
ReH=lr R _ReH=lr?
i!:,)r=lr RR ReH=lr; 8T I! ReH)est !loor is eH)al to ,)rrent =loor T8
`
50 R =,lrd,)r=lre? 8T ,lear =loor In(icator T8
contin)e? a 8T Ko )# to rea( a$ain T8
else i!:,)r=lr D ReH=lr; 8T I! ,)rrent !loor is D reH)est !loor T8
`
i R =lrd,)r=lre " =lrdReH=lre? 8T Ket the no o! !loors to tra&el T8
B R =lrd,)r=lre?
!or:?iD0?i""; 8TMo&e the in(icator (o'n T8
`
(ela:25000;?
aa
else 8T I! ,)rrent !loor is W reH)est !loor T8
`
i R =lrdReH=lre " =lrd,)r=lre? 8T Ket the no o! !loors to tra&el T8
B R =lrd,)r=lre?
!or:?iD0?i""; 8T Mo&e the in(icator U# T8
`
50 R 0>0!0 ^ B?
BSS?
8051 MANUAL RNSIT
8051f,
50
=R, 26#in
,able
5S
-le&ator
inter!ace
5S
76
5S
MICROCONTROLLERS LAB IVth SEM EC
(ela:25000;?
a a
,)r=lr R ReH=lr? 8T U#(ate ,)rrent !loor T8
50 R =,lrd,)r=lre? 8T ,lear the in(icator T8
a
a
&oi( (ela:)nsi$ne( int >;
`
!or:?>D0?>"";?
a
*.T"5A"rat>r" S"ns!r
The inter!ace car( has a .A, to con&ert the act)al tem#erat)re to (i$ital this is com#are(
'ith re!erence tem#erart)re% Reala also a #art o! inter!ace car( 'ill t)rn on an( o!! to
in(icate i! the act)al tem#erat)re is abo&e or belo' re!erence%
Ag!r<th5 7!r T"5A"rat>r" s"ns!r
1% ,on!i$)re 50 an( 51 as o8#2 57 as in#)t #ort%
2% Set )# a co)nter 'ith intial &al)e 0>!! sen( it to (ac thro 50 a!ter a (ela chec@ i!
com#arator o8# has $one lo'%
7% I! lo' com#are 'ith set &al)e i! act)al $reaterthan set t)rn on the rela else t)rn o!!%
-r!gra5 7!r t"5A"rat>r" s"ns!r.
Nincl)(e WR-K51>.2%/D
sbit ,m#h6)t R 57V4? 8TIn#)t 1it !or ,om#arator o)t#)tT8
sbit Relh,on R 50V0? 8TRela controller 1it i%e /eater 5o'er s)##l controlT8
8T1" S)##l 6==2 0"S)##l 6NT8
N(e!ine .ach.ata 51 8T.A, in#)t .ata 56RT i%e% 51T8
&oi( (ela:;
` int l?
!or :lR0?lWR0>8?lSS;?
a
main:;
`
)nsi$ne( char .acI#?
&oi( (ela:&oi(;?
.ach.ata R0>00? 8TMo&e 00h to .ac in#)tT8
8051 MANUAL RNSIT 73
8051f,
50252257
=R, 26#in
,able
5S
Tem#
Sensor
Inter!ace
5S
/eat
So)rce
MICROCONTROLLERS LAB IVth SEM EC
50R0>00? 8Tma@e 50 as o)t#)tT8
'hile:1;
`
.acI#R 0>!!? 8T.A, in#)t .ata co)nterT8
(o
`
.acI#SS? 8TIncrement the .A, in#)t .ataT8
.ach.ata R .acI#? 8TMo&e the .A, (ata to .A,T8
(ela:;?
a'hile:,m#h6)t;? 8T ,hec@ com#arator o)t#)t !or lo' T8
i!:.acI# D 0>20; 8T,om#are 'ith the set &al)e i%e%0>20T8
Relh,on R 1?
else
Relh,on R 0? 8T Rela 6N2 S)##l 6== T8
a
a
8051 MANUAL RNSIT 78

You might also like