;l/
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
RAJARAJESWARICOLLEGEOFENGINEERING
No:14,RamohalliCross,Kumbalgodu,MysoreRoad,Bangalore-560074
AMANUALFOR
MICROCONTROLLERS&EMBEDDEDSYSTEM
(BCO601)
BE–VISemester
PREPAREDBY
[Link]
AssistantProfessor
[Link]&EngineeringR.R.C.
E,Bangalore
DEPARTMENTOFCOMPUTERSCIENCE&ENGINEERING
[IoT,CybersecurityincludingBlockchainTechnology]
2024-25
[Link][IC], R.R.C.E 2024-25 Page No:1
;l/
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Introduction:
Anembeddedsystemisanelectronic/electromechanicalsystemdesignedtoperformaspecificfunctionan
disacombinationofbothhardwareandfirmware(software).Anembeddedsystemcombinesmechanical,
electrical,andchemicalcomponentsalongwithacomputer,hiddeninside,toperformasinglededicatedpu
rpose.
Therearemorecomputersonthisplanetthantherearepeople,andmostofthesecomputersaresingle-
[Link]
[Link]
urhouses,ourcars,ourbridges,ourtoys,[Link],sohavethec
[Link],theworldneedsatrainedworkfor
cetodevelopandmanageproductsbasedonembeddedmicrocontrollers.
Ageneral-purposecomputingsystemisacombinationofgenerichardwareandgeneral-
purposeoperatingsystemforexecutingavarietyofapplication,whereasanembeddedsystemisacombinat
ionsystemisacombinationofspecialpurposehardwareandembeddedOS/firmwareforexecutingaspecif
icsetofapplications.
TheARMmicrocontrollerstandsforAdvanceRiskMachine;itisoneoftheextensiveandmostlicensedpro
cessorcoresintheworld.ThefirstARMprocessorwasdevelopedintheyear1978byCambridgeUniversity
,andthefirstARMRISCprocessorwasproducedbytheAcornGroupofComputersintheyear1985.
Theseprocessorsarespecificallyusedinportabledeviceslikedigitalcameras,mobilephones,homenetw
orkingmodulesandwirelesscommunicationtechnologiesandotherembeddedsystemsduetothebenefits
,suchaslowpowerconsumption,reasonableperformance,[Link]
tecturewitheachmodule’sprincipleofworking.
KeilMDKisthecompletesoftwaredevelopmentenvironmentforawiderangeofARMCortex-
[Link]µVisionIDEanddebugger,ArmC/C++compiler,an
dessentialmiddlewarecomponents.Itsupportsallsiliconvendorswithmorethan6,000devicesandiseasyt
olearnanduser.
[Link][IC], R.R.C.E 2024-25 Page No:2
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
FeaturesofARMProcessor
AIM:TostudyofARMprocessorsystemanddescribethefeaturesofarchitecture
FeaturesofARMDEVELOPMENTKITProcessor:
• 16-bit/32-bitARM7TDMI-SmicrocontrollerinatinyLQFP64package.8kBto40kBofon-
chipstaticRAMand32kBto512kBofon-chipflashmemory.128-
bitwideinterface/[Link]/In-
ApplicationProgramming(ISP/IAP)viaon-chipbootloadersoftware.
• Singleflashsector/fullchiperasein400msandprogrammingof256bytesin1ms.USB2.0
Full-
speedcompliantdevicecontrollerwith2kBofendpointRAM.TheLPC2146/48provides8kB
ofon-chipRAMaccessibletoUSBbyDMA.
• Oneortwo(LPC2141/42vs.LPC2144/46/48)10-
bitADCsprovideatotalof6/14analoginputs,withconversiontimesaslowas2.44µsperchannel
.Single10-bitDACprovidesvariableanalogoutput(LPC2142/44/46/48only).Two32-
bittimers/externaleventcounters(withfourcaptureandfourcomparechannelseach),PWMun
it(sixoutputs)andwatchdog.
• LowpowerReal-
TimeClock(RTC)[Link]
udingtwoUARTs(16C550),twoFastI2Cbus(400kbit/s),SPIandSSPwithbufferingandvariab
ledatalengthcapabilities.
• VectoredInterruptController(VIC)withconfigurableprioritiesandvectoraddresses.Upto45
of
5VtolerantfastgeneralpurposeI/OpinsinatinyLQFP64package.Upto21externalsinterruptp
insavailable.
• 60MHzmaximumCPUclockavailablefromprogrammableon-
chipPLLwithsettlingtimeof100µ[Link]-
chipintegratedoscillatoroperateswithanexternalcrystalfrom1MHzto25MHzPowersaving
modesincludeIdleandPowerdown.
• Individualenable/disableofperipheralfunctionsaswellasperipheralclockscalingforaddition
[Link]-upfromPower-
[Link]
:CPUoperatingvoltagerangeof3.0Vto3.6V(3.3V±10%)with5VtolerantI/Opads.
[Link][IC], R.R.C.E 2024-25 Page No:3
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
GeneralBlockDiagram:
PowerSupply:
• TheexternalpowercanbeACorDC,withavoltagebetween(9V/12V,1Aoutput)at230VAC
input.
TheARMboardproduces+5VusinganLM7805voltageregulator,whichprovidessupplytothe
peripherals.
• LM1117Fixed+3.3Vpositiveregulatorusedforprocessor&processorrelatedperip
herals.
FlashProgrammingUtility
• NXP(Philips)NXPSemiconductorsproducearangeofMicrocontrollersthatfeaturebotho
n-chipFlashmemoryandtheabilitytobereprogrammedusingIn
SystemProgrammingtechnology.
PINDIAGRAM
• On-boardPeripherals:
• [Link]’s(DigitalOutputs)
• [Link](slideswitch)
• 2LinesX16CharacterLCDDisplay
[Link][IC], R.R.C.E 2024-25 Page No:4
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
• I2CEnabled4DigitSeven-segmentdisplay
• 128x64GraphicalLCDDisplay
• 4X4Matrixkeypad
• StepperMotorInterface
• [Link]
• TwoUARTforserialportcommunicationthroughPC
• SerialEEPROM
• On-chipRealTimeClockwithbatterybackup
• PS/2Keyboardinterface(Optional)
• TemperatureSensor
• Buzzer(AlarmInterface)
• TrafficLightModule(Optional)
[Link][IC], R.R.C.E 2024-25 Page No:5
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
SYLLABUS
Microcontrollers&EmbeddedSystems Semester 6
CourseCode BCO601 CIEMarks 50
TeachingHours/Week(L:T:P:S) 3:0:2:0 SEEMarks 50
TotalHoursofPedagogy 40hoursTheory+8-10Labslots TotalMarks 100
Credits 04 ExamHours 3
Examinationnature(SEE) Theory/practical
[Link] Experiments
1 Developaprogramtomultiplytwo16bitbinarynumbers.
2
Writeaprogramtofindthesumoffirst10integernumbers.
3
Writeaprogramtofindfactorialofanumber.
4
Writeaprogramtoaddanarrayof16bitnumbersandstorethe32bitresultininternalRAM
5
Writeaprogramtofindthesquareofanumber(1to10)usinglook-uptable.
6
Writeaprogramtofindthelargest/smallestnumberinanarrayof32numbers.
7
Display“HelloWorld”messageusingInternalUART.
8
InterfaceaSteppermotorandrotateitinclockwiseandanti-clockwisedirection
9 DisplaytheHexdigits0toFona7-segmentLEDinterface,withanappropriatedelayin
between
10 Interfacea4x4keyboardanddisplaythekeycodeonanLCD.
Courseoutcomes(CourseSkillSet):
Attheendofthecourse,thestudentwillbeableto:
● ExplainthearchitecturalfeaturesandinstructionsofARMmicrocontroller
● ApplytheknowledgegainedforProgrammingARMfordifferentapplications.
● DemonstrateInterfacingofexternaldevicesandI/OwithARMmicrocontroller.
● Interpretthebasichardwarecomponentsandtheirselectionmethodbasedonthecharacteristicsa
ndattributesofanembeddedsystem.
● Developthehardware/softwareco-designandfirmwaredesignapproaches.
AssessmentDetails(bothCIEandSEE)
TheweightageofContinuousInternalEvaluation(CIE)is50%andforSemesterEndExam(SEE)is50%.Theminimu
mpassingmarkfortheCIEis40%ofthemaximummarks(20marksoutof50)andfortheSEEminimumpassingmarkis
35%ofthemaximummarks(18outof50marks).Astudentshallbedeemedtohavesatisfiedtheacademicrequirement
sandearnedthecreditsallottedtoeachsubject/courseifthestudentsecuresaminimumof40%(40marksoutof100)int
hesumtotaloftheCIE(ContinuousInternalEvaluation)andSEE(SemesterEndExamination)takentogether.
CIEforthetheorycomponentoftheIPCC(maximummarks50)
IPCCmeanspracticalportionintegratedwiththetheoryofthecourse.
[Link][IC], R.R.C.E 2024-25 Page No:6
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
● CIEmarksforthetheorycomponentare25marksandthatforthepracticalcomponentis25marks.
● 25marksforthetheorycomponentaresplitinto15marksfortwoInternalAssessmentTests(Two
Tests,eachof15Markswith01-
hourduration,aretobeconducted)and10marksforotherassessmentmethods [Link]
of40-50%coverageofthesyllabusandthesecondtestaftercovering85-90%ofthesyllabus.
Scaled-
downmarksofthesumoftwotestsandotherassessmentmethodswillbeCIEmarksforthetheorycomponentofIPCC(thatisfor25
marks).
Thestudenthastosecure40%of25markstoqualifyintheCIEofthetheorycomponentofIPCC.
CIEforthepracticalcomponentoftheIPCC
● 15marksfortheconductionoftheexperimentandpreparationoflaboratoryrecord,and10marksforthetesttobe
conductedafterthecompletionofallthelaboratorysessions.
● Oncompletionofeveryexperiment/programinthelaboratory,thestudentsshallbeevaluatedincludingviva-
voceandmarksshallbeawardedonthesameday.
● TheCIEmarksawardedinthecaseofthePracticalcomponentshallbebasedonthecontinuousevaluationofthelab
[Link]’write-
upsareaddedandscaleddownto15marks.
● Thelaboratorytest(duration02/03hours)aftercompletionofalltheexperimentsshallbeconductedfor50mark
sandscaleddownto10marks.
● Scaled-downmarksofwrite-
upevaluationsandtestsaddedwillbeCIEmarksforthelaboratorycomponentofIPCCfor25marks.
● Thestudenthastosecure40%of25markstoqualifyintheCIEofthepracticalcomponentoftheIPCC.
SEEforIPCC
TheorySEEwillbeconductedbyUniversityasperthescheduledtimetable,withcommonquestionpapersforthecour
se(duration03hours)
1. Thequestionpaperwillhavetenquestions.Eachquestionissetfor20marks.
2. [Link](witha maximum
of3sub-questions),shouldhaveamixoftopicsunderthatmodule.
3. Thestudentshavetoanswer5fullquestions,selectingonefullquestionfromeachmodule.
4. Marksscoredbythestudentshallbeproportionallyscaleddownto50Marks
ThetheoryportionoftheIPCCshallbeforbothCIEandSEE,whereasthepracticalportionwillhaveaCIEcomp
[Link]
practicalcomponent.
[Link][IC], R.R.C.E 2024-25 Page No:7
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
CONTENTS
1. INTRODUCTION 1
2. LABORATORYSESSION1–KEILINTRODUCTION 5
Experiments PageNo
SlNo.
PARTA
Writeaprogramtomultiplytwo16bitbinarynumbers. 11
1.
Writeaprogramtofindthesumoffirst10integernumbers. 13
2.
Writeaprogramtofindfactorialofanumber. 15
3.
Writeaprogramtoaddanarrayof16bitnumbersandstorethe32bitr 17
4.
esultininternalRAM
Writeaprogramtofindthesquareofanumber(1to10)usinglook- 19
5.
uptable.
Writeaprogramtofindthelargest/smallestnumberinanarrayof32 21
6.
numbers
PARTB
Display“HelloWorld”messageusingInternalUART. 28
7.
InterfaceaSteppermotorandrotateitinclockwiseandanti- 30
8.
clockwisedirection.
Interfacea4x4keyboardanddisplaythekeycodeonanLCD. 31
9.
DisplaytheHexdigits0toFona7- 33
10.
segmentLEDinterface,withanappropriatedelayinbetween.
[Link][IC], R.R.C.E 2024-25 Page No:8
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
PART-A
[Link][IC], R.R.C.E 2024-25 Page No:9
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
KEILUVISION4IDEINSTALLATION:
InstallationofkeiluVision4asfollows.
1. [Link].
2. Next
3. Clickontheoption“Iagreetoallthetermsof...”andthengiveNext
4. Next
5. Givenameandthemailid(itmightbeanymailid)andthenNext
6. ClickFinishtocompletetheinstallation.
PROJECTCREATIONINKEILUV4IDE:
7. CreateaprojectfolderbeforecreatingNEWproject.
8. OpenKeiluVision4IDEsoftwarebydoubleclickingon“KeilUvision4”icon.
9. Goto“Project”thento“NewuVisionProject”andsaveitwithanameint
herespectiveprojectfolder,alreadyyoucreated.
10. Selectthedeviceas“NXP”Inthat“LPC2148”thenpressOK
andthenpress“YES”buttontoadd“startup’s”file.
11. [Link]
windowuncheckPLLSetupandcheckVPBDIVSetup.
12. Goto“File”Inthat“New”[Link]
eandusetheheaderfile“lpc21xx.h”[Link]
oursyntaxhighlightingwillbeenabledoncethefileissavedwithaextens
ionsuchas“.C“.
13. Rightclickon“SourceGroup1”andselecttheoption“AddExistingF
ilestoGroupSourceGroup1“addthe*.csourcefile(s)/.SAssemblyf
iletothegroup.
14. AfteraddingthesourcefileyoucanseethefileinProjectWindow.
15. RightclickonTarget1andselectoptionsforTarget
1. Thengotooption“Linker”
DeSelect“UseMemoryLayoutforTargetDialog”.Tocomeoutofthiswindowpress
OK.
16. Goto“Project”inthat“BuildTarget”forbuildingallsourcefilessucha
s“.C”,”.ASM”,“.h”,files,etc…Thiswillcreatethe
*.HEXfileifnowarnings&[Link].
[Link][IC], R.R.C.E 2024-25 Page No:10
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Program1
Writeaprogramtomultiplytwo16bitbinarynumbers.
Aim:Towriteaprogramtomultiplytwo16bitbinarynumbersusingARM7TDMI/LPC2148usinganevaluationboard/
simulatorandtherequiredsoftwaretool.
SourceCode
AREAMULTIPLY,CODE,READONLY
ENTRY ;MARKFIRSTINSTRUCTIONTOEXECUTESTART
MOVR1,#6400 ;STOREFIRSTNUMBERINR1
MOVR2,#3200 ;STORESECONDNUMBERINR2
MULR3,R1,R2 ;MULTIPLICATION
STOPBSTOP
END ;MARKENDOFFILE
[Link][IC], R.R.C.E 2024-25 PageNo:11
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result
[Link][IC], R.R.C.E 2024-25 PageNo:12
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Program2
Write aprogramtofindthesumoffirst10integernumbers.
Aim:Towriteaprogramtofindthesumoffirst10integernumbersusingARM7TDMI/LPC2148usinganevaluationb
oard/simulatorandtherequiredsoftwaretool.
SourceCode
AREASUM,CODE,READONLY
ENTRY
MOVR1,#10 ;LOAD10TOREGISTER
MOVR2,#0 ;EMPTYTHEREGISTERTOSTORERESULT
LOOP
ADDR2,R2,R1
;ADDTHECONTENTOFR1WITHRESULTATR2SUBSR1,#0X0
1 ;DECREMENTR1BY1
BNELOOP ;REPEATTILLR1GOES0
STOPBSTOP ;JUMPSBACKTOCCODE
END
[Link][IC], R.R.C.E 2024-25 PageNo:13
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result
[Link][IC], R.R.C.E 2024-25 PageNo:14
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Program3
Writeaprogramtofindfactorialofanumber.
Aim:TowriteaprogramtofindfactorialofanumberusingARM7TDMI/LPC2148usinganevaluationboard/simulat
orandtherequiredsoftwaretool.
SourceCode
AREAFACTORIAL,CODE,READONLY
ENTRY
;MARKFIRSTINSTRUCTIONTOEXE
CUTESTART
MOVR0,#4 ;STOREFACTORIALNUMBERINR0
MOVR1,R0 ;MOVETHESAMENUMBERINR1
FACT SUBSR1,R1,#1
;SUBTRA
CTIONCMPR1,#1
;COMPA
RISONBEQSTOP
MULR3,R0,R1; ;MULTIPLICATION
MOV R0,R3 ;RESULT
BNEFACT ;BRANCHTOTHELOOPIFNOTEQUAL
STOP
STOPBSTOP
END ;MARKENDOFFILE
[Link][IC], R.R.C.E 2024-25 PageNo:15
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result
[Link][IC], R.R.C.E 2024-25 PageNo:16
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Program4
Writeaprogramtoaddanarrayof16bitnumbersandstorethe32bitresultininternalRAM
Aim:Towriteaprogramtoaddanarrayof16bitnumbersandstorethe32bitresultininternalRAMusinganevaluationboar
d/simulatorandtherequiredsoftwaretool.
SourceCode
AREAADDITION,CODE,READONLY
ENTRY ;MARKFIRSTINSTRUCTIONTOEXECUTE
START
LOOP
MOVR5,#6 ;INTIALISECOUNTERTO6(I.E.N=6)
MOVR0,#0 ;INTIALISESUMTOZERO
LDRR1,=VALUE1 ;LOADSTHEADDRESSOFFISTVALUE
LDRR2,[R1],#2 ;WORDALIGNT0ARRAYELEMENT
LDRR3,MASK ;MASKTOGET16BIT
ANDR2,R2,R3 ;MASKMSB
ADDR0,R0,R2 ;ADDTHEELEMENTS
SUBSR5,R5,#1 ;DECREMENTCOUNTERCMPR5,#0
BNELOOP ;LOOKBACKTILLARRAYENDS
LDRR4,=RESULT ;LOADSTHEADDRESSOFRESULT
STRR0,[R4] ;STORESTHERESULTINR1
XSSBXSS
MASKDCD0X0000FFFF ;MASKMSB
VALUE1DCW 0X1111,0X2222,0X3333,0XAAAA,0XBBBB,0XCCCC
;ARRAYOF16BITNUMBERS(N=6)
AREADATA2,DATA,READWRITE ;TOSTORERESULTINGIVENADDRESS
RESULTDCD0X0
END ;MARKENDOFFILE
[Link][IC], R.R.C.E 2024-25 PageNo:17
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result
[Link][IC], R.R.C.E 2024-25 PageNo:18
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Program5
Write a program to find the square of a number(1to10) using look-uptable.
Aim: To write a program to find the square of a number(1to10) using lookup table. Using
ARM7TDMI/LPC2148 using an evaluation board/simulator and there quired software tool.
SourceCode
AREA SQUARE, CODE, READONLY
ENTRY ;MARKFIRSTINSTRUCTIONTOEXECUTE
START
LDR R0, = TABLE1 ;LOADSTARTADDRESSOFLOOKUPTABLE
LDR R1,= 3 ; LOAD NO WHOSE SQUARE IS TO BE FIND
MOVR1,R1,LSL#0X2 ;GENERATEADDRESSCORRESPONDINGTOSQUAREOFGIVENNO
ADDR0,R0,R1 ;LOADADDRESSOFELEMENTINLOOKUPTABLE
LDRR3, [R0] ;GETSQUAREOFGIVENNOINR3
STOPBSTOP
;LOOKUPTABLECONTAINSSQUARESOFNOSFROM0 TO 10 (IN HEX)
TABLE1 DCD 0X000 ;SQUAREOF 0=0
DCD 0X00000001 ;SQUAREOF
DCD 0X00000004 ;SQUAREOF 2=4
DCD 0X00000009 ;SQUAREOF 3=9
DCD 0X00000010 ;SQUAREOF4=16
DCD 0X00000019 ;SQUAREOF5=25
DCD 0X00000024 ;SQUAREOF6=36
DCD 0X00000031 ;SQUAREOF7=49
DCD 0X00000040 ;SQUAREOF8=64
DCD 0X00000051 ;SQUAREOF9=81
DCD 0X00000064 ;SQUARE OF 10=100
END ;MARKENDOFFILE
[Link][IC], R.R.C.E 2024-25 PageNo:19
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result
[Link][IC], R.R.C.E 2024-25 PageNo:20
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Program 6
Write a program to find the largest/smallest number in an array of 32numbers.
Aim: To write a program to find the largest/smallest number in an array of 32 numbers usingARM7TDMI/LPC2148
using an evaluation board/simulator and the required software tool.
SourceCode
ARELARGEST,CODE,READONLY
ENTRY ;MARKFIRSTINSTRUCTIONTOEXECUTE
START
MOVR5,#6 ;INTIALISECOUNTERTO6(I.E.N=7)
LDRR1,=VALUE1 ;LOADSTHEADDRESSOFFIRSTVALUE
LDRR2,[R1],#4 ;WORDALIGNT0ARRAYELEMENT
LOOP
LDRR4,[R1],#4 ;WORDALIGNT0ARRAYELEMENT
CMP R2,R4 ;COMPARENUMBERS
BHILOOP1 ;IFTHEFIRSTNUMBERIS>THENGOTOLOOP1
MOVR2,R4 ;IFTHEFIRSTNUMBERIS<THENMOVCONTENTR4TOR2
LOOP1
SUBSR5,R5,#1 ;DECREMENTCOUNTER
CMP R5,#0 ;COMPARECOUNTERTO0
BNELOOP ;LOOPBACKTILLARRAYENDS
LDRR4,=RESULT ;LOADSTHEADDRESSOFRESULT
STR R2,[R4] ;STORESTHERESULTINR2
XSSBXSS ;ARRAYOF32BITNUMBERS(N=7)
VALUE1
DCD 0X44444444
DCD 0X22222222
DCD 0X11111111
DCD 0X33333333
DCD 0XAAAAAAAA
DCD 0X88888888
DCD 0X99999999
AREA DATA2,DATA,READWRITE
;TOSTORERESULTINGIVENADD
RESS RESULT DCD 0X0
END ;MARKENDOFFILE
[Link][IC], R.R.C.E 2024-25 PageNo:21
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result:
[Link][IC], R.R.C.E 2024-25 PageNo:22
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
SmallestNumber
SourceCode
AREASMALLEST,CODE,READONLY
ENTRY ;MARKFIRSTINSTRUCTIONTOEXECUTE
START
MOVR5,#6 ;INTIALISECOUNTERTO6(I.E.N=7)
LDRR1,=VALUE1 ;LOADSTHEADDRESSOFFIRSTVALUE
LDRR2,[R1],#4 ;WORDALIGNT0ARRAYELEMENT
LOOP
LDRR4,[R1],#4 ;WORDALIGNT0ARRAYELEMENT
CMP R2,R4 ;COMPARENUMBERS
BLS LOOP1 ;IFTHEFIRSTNUMBERIS<THENGOTOLOOP1
MOVR2,R4 ;IFTHEFIRSTNUMBERIS>THENMOVCONTENTR4TOR2
LOOP1
SUBSR5,R5,#1 ;DECREMENTCOUNTER
CMP R5,#0 ;COMPARECOUNTERTO0
BNELOOP ;LOOPBACKTILLARRAYENDS
LDRR4,=RESULT ;LOADSTHEADDRESSOFRESULT
STR R2,[R4] ;STORESTHERESULTINR2
XSSBXSS ;ARRAYOF32BIT NUMBERS(N=7)
VALUE1
DCD 0X44444444
DCD 0X22222222
DCD 0X11111111
DCD 0X33333333
DCD 0XAAAAAAAA
DCD 0X8888888
DCD 0X99999999
AREA DATA2,DATA,READWRITE
;TOSTORERESULTINGIVE
NADDRESS RESULT DCD 0X0
END ;MARKENDOF FILE
[Link][IC], R.R.C.E 2024-25 PageNo:23
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Result
[Link][IC], R.R.C.E 2024-25 PageNo:24
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
PART-B
[Link][IC], R.R.C.E 2024-25 PageNo:25
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
PROCEDURE:PROJECTCREATIONINKEILUV4IDE:
1. CreateaprojectfolderbeforecreatingNEWproject.
2. OpenKeiluVision4IDEsoftwarebydouble clickingon“KeilUvision4”icon.
3. Goto“Project”thento“NewuVisionProject”andsave it withaname intherespectiveproject
folder, already you created.
4. Select thedeviceas“NXP”Inthat “LPC2148”thenpressOK andthenpress “YES”buttontoadd
“startup.s” file.
5. [Link]
andcheckVPBDIVSetup.
6. Goto“File”Inthat“New”[Link] fileand usetheheaderfile
“lpc21xx.h” inthesourcefileandsavethe file. Colorsyntaxhighlighting willbeenabledoncethefile is
saved with a extension such as “.C “.
7. Right clickon“SourceGroup1”andselecttheoption“Add ExistingFilestoGroupSourceGroup
1“add the *.C source file(s) to the group.
8. AfteraddingthesourcefileyoucanseethefileinProjectWindow.
9. Thengoto“Project”inthat“Translate”tocompiletheFile(s).CheckouttheBuild outputwindow.
10. RightclickonTarget1andselectoptionsforTargetTarget1. Thengotooption“Target”inthat
1. Xtal12.0MHz
2. Select“UseMicroLIB”.
3. SelectIROM1(starting0x0size0x80000).
4. Select IRAM1(starting0x40000000size0x8000).
1. Thengotooption “Output”
1. Select“CreateHexfile”.
2. Thengotooption“Linker”
Select“UseMemoryLayoutforTargetDialog”.TocomeoutofthiswindowpressOK.
11. Goto“Project”inthat “BuildTarget”forbuildingallsourcefilessuchas“.C”,”.ASM”,“.h”,files,
etc…This will create the *.HEX file if no warnings & no Errors. Check out the Build output
window.
[Link][IC], R.R.C.E 2024-25 PageNo:26
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
FLASHMAGIC:
Options->Advancedoptions->HardwareConfig
Enabletheseoptionsonly
UseDTRandRTSto controlRST
andISPpinKeepRTSassertedwhileCOMportopen Press OK then do the
below settings
Step1. Communications:
1. Device: LPC2148
2. ComPort:COM1
3. BaudRate:9600
4. Interface:None(ISP)
5. Oscillator: 12MHz
Step2. ERASE:
[Link]“EraseBlocksUsed ByHexFile”.
[Link]:
[Link].
Step4. Options
1. Select“Verifyafter programming”.
[Link]:
2. ClickStarttodownloadthehexfiletothe controller.
Afterdownloadingthecodetheprogramstartsexecutinginthe hardware, thenremovethe
ISP jumper JP7.
[Link][IC], R.R.C.E 2024-25 PageNo:27
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
LabPrograms
[Link] “Hello World” message using Internal UART.
Sourcecode
#include<lpc214x.h>
voiduart_interrupt(void)irq;
unsignedchar temp;
unsignedcharrx_flag=0,tx_flag=0;
intmain(void)
{
PINSEL0=0X0000005; //selectTXD0andRXD0 lines
U0LCR=0X00000083; //enablebaudratedivisorloadingand
U0DLM=0X00; //selectthedataformat
U0DLL = 0x13; //selectbaudrate9600bps
U0LCR= 0X00000003;
U0IER=0X03; //selectTransmitandReceiveinterrupt
VICVectAddr0=(unsignedlong)uart_interrupt; //UART0 INTERRUPT
VICVectCntl0= 0x20|6; //AssigntheVICchanneluart-0tointerruptpriority0
VICIntEnable=0x00000040; //Enabletheuart-0interrupt
rx_flag=0x00;
tx_flag=0x00;
while(1)
{
while(rx_flag==0x00); //wait forreceiveflagtoset
rx_flag=0x00; //cleartheflag
while(tx_flag==0x00); //waitfortransmitflagtoset
tx_flag= 0x00; //cleartheflag
}
}
//Dothisforever
voiduart_interrupt(void)irq
{
temp= U0IIR;
temp=temp&0x06;
if(temp== 0x02)
{
tx_flag = 0xff;
VICVectAddr=0;
}
[Link][IC], R.R.C.E 2024-25 PageNo:28
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
elseif(temp==0x04)
{
U0THR = U0RBR;
rx_flag = 0xff;
VICVectAddr=0;
}
}
[Link][IC], R.R.C.E 2024-25 PageNo:29
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
[Link] a stepper motor and rotate it in clockwise and anti-closewise
direction
Sourcecode
#include<LPC214X.h>v
oiddelay();
voiddelay()//DelayRoutine
inti,j;for(i=0;i<0xff;i++
)for(j=0;j<0x25;j++);
intmain()
{
IO0DIR=0x000F0000;//Portselectionwh
ile(1)
{//Anticlockwiserotation.
IO0PIN=0x00010000;//ForClkwisesend1,2,4,8insteadof8,4,2,1delay();
IO0PIN=0x00020000;
delay();IO0PIN=0x00040
000;
delay();IO0PIN=0x00080
000;
delay();
[Link][IC], R.R.C.E 2024-25 PageNo:30
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
9. Display theHexdigits0toFona7Segmant LED interface,with an appropriate
delay in between.
SourceCode
#include<LPC214x.h>vo
iddelay()
unsignedinti,j;for(i=0;i<0xFF;i
++)
for(j=0;j<0xFF;j++);
voidmain()
unsignedintnumber=0x00;IO0DIR=0x0000007C;//
P0.2,3,4,5,6ASI/OPINS
IO0SET=0x0000007C;//SETALLI/OPINSTOHIGH
while(1)
IO0CLR=0x0000003C;//CLEARONLYDATAPINSNOTCONTROLPINIO0SET=IO0SET|(n
umber<<2);//SETP0.2TO0
delay();
delay();
while(IO0PIN&0x00008000);//IFP0.15ISPRESSEDwhile(!(IO0PIN&
0x00008000));//IFP0.15ISRELEASEDnumber++;//INCREMENTTHE
NUMBER
if(number>9)//NUMBERCROSSES9
number=0x00;//MAKENUMBERTO0
[Link][IC], R.R.C.E 2024-25 PageNo:31
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
[Link][IC], R.R.C.E 2024-25 PageNo:32
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
10.Interfacea4*4keyboardanddisplaythekeycodeonanLCD.
Sourcecode
#include<LPC214x.H>/*LPC214xdefinitions*/#include
"LCD.H"
voidlcd_command_write(unsignedcharcommand);voidl
cd_data_write(unsignedchardata);
#defineLCD_DATA_DIRIO0DIR#defi
neLCD_DATA_SETIO0SET#defineLC
D_DATA_CLRIO0CLR#defineLCD_C
TRL_DIRIO0DIR#defineLCD_CTRL_
SETIO0SET#defineLCD_CTRL_CLRI
O0CLR#defineLCDEN(1<<2)
#defineLCDRS(1<<3)
//scale31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,09,08,07,06,05,04,03,02,01,0
0
#defineLCD_DATA_MASK0x007F8000
/****************************************************************************F
unctionName:delay()
Description:
Input:
Output:void
********************************************************************************/voi
ddelay(unsignedintcount)
intj=0,i=0;for(j=0;j<count;j++)
[Link][IC], R.R.C.E 2024-25 PageNo:33
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
for(i=0;i<120;i++);
/*********************************************************************************
***********
FunctionName:lcd_command_write()D
escription:
Input:
Output:Void
**********************************************************************************
***********/
voidlcd_command_write(unsignedcharcommand)
inta=0;
a=command|0xFFFFFF0F;IO0
CLR|=0x00003C00;a=a<<6;
IO0CLR=0x20400000;IO0SE
T=0x10000000;
IO0SET=(IO0SET|0x00003c00)&a;
delay(1000);
IO0CLR=0x10000000;
a=0x0;command=command<<
4;
a=command|0xFFFFFF0F;IO0
CLR|=0x00003C00;a=a<<6;
IO0CLR=0x20400000;
[Link][IC], R.R.C.E 2024-25 PageNo:34
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
IO0SET=0x10000000;
IO0SET=(IO0SET|0x00003C00)&a;
delay(1000);
IO0CLR=0x10000000;
/*********************************************************************************
*************
FunctionName:lcd_data_write()Descrip
tion:
Input:
Output:Void
**********************************************************************************
***********/
voidlcd_data_write(unsignedchardata)
intb=0;
b=data|0xFFFFFF0F;IO0CLR|
=0x00003C00;b=b<<6;
IO0SET=0x10400000;
IO0SET=(IO0SET|0x00003C00)&b;
delay(1000);
IO0CLR=0x10000000;
b=0x0;data=data<<4;
b=data|0xFFFFFF0F;
IO0CLR|=0x00003C00;b=b<<
6;
[Link][IC], R.R.C.E 2024-25 PageNo:35
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
IO0SET=0x10400000;
IO0SET=(IO0SET|0x00003C00)&b;
delay(1000);
IO0CLR=0x10000000;
/*********************************************************************************
*************
FunctionName:lcd_clear()Des
cription:
Input:
Output:Void
**********************************************************************************
***********/
voidlcd_clear(void)
lcd_command_write(0x01);
/*********************************************************************************
*************
FunctionName:lcd_gotoxy()D
escription:
Input:
Output:Void
**********************************************************************************
***********/
intlcd_gotoxy(unsignedcharx,unsignedchary)
unsignedcharretval=TRUE;if((
x>1)&&(y>15))
[Link][IC], R.R.C.E 2024-25 PageNo:36
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
retval=FALSE;
else
if(x==0)lcd_command_write(0x80+y);elseif(x=
=1)lcd_command_write(0xC0+y);
returnretval;
/*********************************************************************************
*************
FunctionName:lcd_putchar()D
escription:
Input:
Output:Void
**********************************************************************************
***********/
voidlcd_putchar(unsignedcharc)
lcd_data_write(c);
/*********************************************************************************
*************
FunctionName:lcd_putstring()De
scription:
Input:
Output:Void
**********************************************************************************
***********/
[Link][IC], R.R.C.E 2024-25 PageNo:37
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
voidlcd_putstring(char*string)
while(*string!='\0')
lcd_putchar(*string);strin
g++;
/*********************************************************************************
*************
FunctionName:lcd_putstring16()Descri
ption:
Input:
Output:Void
**********************************************************************************
***********/
voidlcd_putstring16(unsignedcharline,char*string)
unsignedcharlen=16;lcd_gotox
y(line,0);while(*string!='\0'&
&len--)
lcd_putchar(*string);strin
g++;
/*********************************************************************************
*************
FunctionName:init_lcd()
[Link][IC], R.R.C.E 2024-25 PageNo:38
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
Description:
Input:
Output:Void
**********************************************************************************
***********/
voidinit_lcd(void)
{IO0DIR=0x30403C00
delay(100);
lcd_command_write(0x02);//cursorhomecommandlcd_command_write(0x01);/
/cleardisplaycommandlcd_command_write(0x28);//4-
bitmodeentrycommand(0x38for8bitmode)lcd_command_write(0x06);//entrym
odecommandlcd_command_write(0x0C);//displayoncursoroffcommand
//cmd(0xC0);delay(1000)
intmain(void)
{
init_lcd();
lcd_clear();lcd_putstring("Hello,laks")
;lcd_gotoxy(1,0);lcd_putstring("LPC
2148LCD");
while(1);
return0;
}
LCD.H
//LCDHEADERFILE//
#ifndef_LCD_H#
define_LCD_H
[Link][IC], R.R.C.E 2024-25 PageNo:39
MICROCONTROLLERS & EMBEDDED SYSTEM Lab Manual
#defineTRUE1
#defineFALSE0#defin
eLINE10x80#defineLI
NE20xC0
#defineCONTROL_REG0x00
#defineDATA_REG0x01voidd
elay(unsignedintcount);voidinit
_lcd(void);
voidlcd_putstring(char*string);
voidlcd_putstring16(unsignedcharline,char*string);void
lcd_clear(void);
intlcd_gotoxy(unsignedcharx,unsignedchary);voidlcd
_putchar(unsignedcharc);
#endif
[Link][IC], R.R.C.E 2024-25 PageNo:40