mpasm assembler help · assembler migration path since mpasm assembler is a universal assembler for...

Post on 12-Mar-2020

52 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MPASMAssemblerOverview

AnoverviewofMPASMassembleranditscapabilitiesispresented.

WhatisMPASMAssembler

AssemblerMigrationPathAssemblerCompatibilityIssuesHowMPASMAssemblerHelpsYou

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

WhatisMPASMAssembler

MPASMassembler(theassembler)isacommand-lineorWindows-basedPCapplicationthatprovidesaplatformfordevelopingassemblylanguagecodeforMicrochip'sPICmicromicrocontroller(MCU)families.Generically,MPASMassemblerwillrefertotheentiredevelopmentplatformincludingthemacroassemblerandutilityfunctions.

MPASMassemblersupportsallPICmicroMCU,memory,andsecuredata(KeeLoq))productsfromMicrochipTechnologyInc.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AssemblerMigrationPath

SinceMPASMassemblerisauniversalassemblerforallPICmicroMCUdevices,anapplicationdevelopedforthePIC16C54canbeeasilytranslatedintoaprogramforthePIC16C71.Thiswouldrequirechangingtheinstructionmnemonicsthatarenotthesamebetweenthedevices(assumingthatregisterandperipheralusageweresimilar).Therestofthedirectiveandmacrolanguagewillbethesame.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AssemblerCompatibilityIssues

MPASMassembleriscompatiblewithallMicrochipPICmicroMCUdevelopmentsystemscurrentlyinproduction.ThisincludesMPLABSIM(PICmicroMCUdiscrete-eventsimulator),MPLABICE2000(PICmicroMCUin-circuitemulator),MPLABICD2(in-circuitdebugger-PIC18parts),PROMATEII(deviceprogrammer)andPICSTARTPlus(low-costdevelopmentprogrammer).

MPASMassemblersupportsacleanandconsistentmethodofspecifyingradix.Youareencouragedtodevelopnewcodeusingthemethodsdescribedwithinthisdocument,eventhoughcertainoldersyntaxesmaybesupportedforcompatibilityreasons.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

HowMPASMAssemblerHelpsYou

MPASMassemblerprovidesauniversalsolutionfordevelopingassemblycodeforallofMicrochip's12-bit,14-bit,16-bit,andEnhanced16-bitcorePICmicroMCUs.Notablefeaturesinclude:

AllPICmicroMCUInstructionSets

CommandLineInterfaceCommandShellInterfacesRichDirectiveLanguageFlexibleMacroLanguageMPLABIDECompatibility

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

GettingStartedwithMPASMAssembler

Anoverviewofassembler(MPASMassembler)operationandinstructionsfortheinstallationofMPASMassembleronyoursystemisshown.

OverviewofAssembler

AssemblerInput/OutputFilesAssemblerInstallation

OverviewofAssembler

MPASMassemblercanbeusedintwoways:

Togenerateabsolutecodethatcanbeexecuteddirectlybyamicrocontroller.

Togenerateobjectcodethatcanbelinkedwithotherseparatelyassembledorcompiledmodules.

GeneratingAbsoluteCode

AbsolutecodeisthedefaultoutputfromMPASMassembler.Thisprocessisshownbelow.

Whenasourcefileisassembledinthismanner,allvaluesusedinthesourcefilemustbedefinedwithinthatsourcefile,orinfilesthathavebeenexplicitlyincluded.Ifassemblyproceedswithouterrors,aHEXfilewillbegenerated,containingtheexecutablemachinecodeforthetargetdevice.Thisfilecanthenbeusedinconjunctionwithadeviceprogrammertoprogramthemicrocontroller.

GeneratingObjectCode

MPASMassembleralsohastheabilitytogenerateanobjectmodulethatcanbelinkedwithothermodulesusingMicrochip'sMPLINKlinkertoformthefinalexecutablecode.Thismethodis

veryusefulforcreatingreusablemodulesthatdonothavetoberetestedeachtimetheyareused.

RelatedmodulescanalsobegroupedandstoredtogetherinalibraryusingMicrochip'sMPLIBlibrarian.Requiredlibrariescanbespecifiedatlinktime,andonlytheroutinesthatareneededwillbeincludedinthefinalexecutable.

RefertoRelocatableObjectsformoreinformationonthe

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

differencesbetweenabsoluteandobjectassembly.

AssemblerInput/OutputFiles

Thesearethedefaultfileextensionsusedbytheassemblerandtheassociatedutilityfunctions.

TABLE:INPUTFILESSourceCode(.asm) Defaultsourcefileextensioninputtoassembler.IncludeFile(.inc) Include(header)file

TABLE:OUTPUTFILESListingFile(.lst) Defaultoutputextensionforlistingfilesgeneratedbyassembler.ErrorFile(.err) Outputextensionfromassemblerforerrorfiles.HexFileFormats(.hex,.hxl,.hxh) Outputextensionfromassemblerforhexfiles.

SymbolandDebugFile(.cod)

Outputextensionforthesymbolanddebugfile.ThisfilemaybeoutputfromassemblerorMPLINKlinker.

ObjectFile(.o) Outputextensionfromassemblerforobjectfiles.

SourceCode(.asm)

Assemblysourcecodeisoneprogramminglanguageyoumayusetodevelopyourapplication.ThesourcecodefilemaybecreatedusinganyASCIItextfileeditor.Itshouldconformtothefollowingbasicguidelines.

Eachlineofthesourcefilemaycontainuptofourtypesofinformation:

Labels

MnemonicsOperandsComments

Theorderandpositionoftheseareimportant.Labelsmuststartincolumnone.Mnemonicsmaystartincolumntwoorbeyond.

Operandsfollowthemnemonic.Commentsmayfollowtheoperands,mnemonicsorlabels,andcanstartinanycolumn.Themaximumcolumnwidthis255characters.

Whitespaceoracolonmustseparatethelabelandthemnemonic,andthemnemonicandtheoperand(s).Multipleoperandsmustbeseparatedbyacomma.

SampleMPASMAssemblerSourceCode(Showsmultipleoperands)

;;SampleMPASMSourceCode.Forillustrationonly.;listp=16c54DestequH'0B'orgH'01FF'gotoStartorgH'0000'StartmovlwH'0A'movwfDestbcfDest,3gotoStartend

Labels

Alabelmuststartincolumn1.Itmaybefollowedbyacolon(:),space,tabortheendofline.

Labelsmustbeginwithanalphacharacteroranunderbar(_)andmaycontainalphanumericcharacters,theunderbarandthequestionmark.

Note:Donotuselabelswithaleadingunderscoreandnumber,e.g.,_2NDLOOP.Also,donotusetheassemblerreservedwordHaltasalabel.

Labelsmaybeupto32characterslong.Bydefaulttheyarecasesensitive,butcasesensitivitymaybeoverriddenbyacommandlineoption.Ifacolonisusedwhendefiningalabel,itistreatedasalabeloperatorandnotpartofthelabelitself.

Mnemonics

Assemblerinstructionmnemonics,assemblerdirectivesandmacrocallsmustbeginincolumntwoorgreater.Ifthereisalabelonthesameline,instructionsmustbeseparatedfromthatlabelbyacolon,orbyoneormorespacesortabs.

Operands

Operandsmustbeseparatedfrommnemonicsbyoneormorespaces,ortabs.Multipleoperandsmustbeseparatedbycommas.

Comments

MPASMassemblertreatsanythingafterasemicolonasacomment.Allcharactersfollowingthesemicolonareignoredthroughtheendoftheline.Stringconstantscontainingasemicolonareallowedandarenotconfusedwithcomments.

IncludeFile(.inc)

Assemblerinclude,orheader,file.Usuallycontainsdevice-specificregisterandbitassignments.

Asanexample,toaddthestandardheaderfileforthePIC18F452devicetoyourassemblycode,use:

#include<p18f452.inc>

ListingFile(.lst)

Alistingfileprovidesamappingofsourcecodetomachineinstructions.MPASMassemblerandMPLINKlinkercangeneratelistingfiles.

SampleMPASMAssemblerListingFile

Theproductnameandversion,theassemblydateandtime,andthepagenumberappearatthetopofeverypage.

Thefirstcolumnofnumberscontainsthebaseaddressinmemorywherethecodewillbeplaced.Thesecondcolumndisplaysthe32-bitvalueofanysymbolscreatedwiththeSET,EQU,VARIABLE,CONSTANT,orCBLOCKdirectives.Thethirdcolumnisreservedforthemachineinstruction.ThisisthecodethatwillbeexecutedbythePICmicroMCU.Thefourthcolumnliststheassociatedsourcefilelinenumberforthisline.Theremainderofthelineisreservedforthesourcecodelinethatgeneratedthemachinecode.

Errors,warnings,andmessagesareembeddedbetweenthesourcelinesandpertaintothefollowingsourceline.

Thesymboltablelistsallsymbolsdefinedintheprogram.Thememoryusagemapgivesagraphicalrepresentationofmemoryusage.'X'marksausedlocationand'-'marksmemorythatisnotusedbythisobject.Thememorymapisnotprintedifanobjectfileisgenerated.

MPASM01.99.21IntermediateMANUAL.ASM5-30-199715:31:05PAGE1LOCOBJECTCODELINESOURCETEXTVALUE00001;00002;SampleMPASMSourceCode.Forillustrationonly.00003;

00004listp=16c540000000B00005DestequH'0B'0000601FF00007orgH'01FF'01FF0A0000008gotoStart00009000000010orgH'0000'0001100000C0A00012StartmovlwH'0A'0001002B00013movwfDest00020A0000014gotoStart0001500016endMPASM01.99.21IntermediateMANUAL.ASM5-30-199715:31:05PAGE2SYMBOLTABLELABELVALUEDest0000000BStart00000000__16C5400000001MEMORYUSAGEMAP('X'=Used,'-'=Unused)0000:XXX-------------------------------------------------------------01C0:---------------------------------------------------------------XAllothermemoryblocksunused.ProgramMemoryWordsUsed:4ProgramMemoryWordsFree:508Errors:0Warnings:0reported,0suppressedMessages:0reported,0suppressed

ErrorFile(.err)

MPASMassembler,bydefault,generatesanerrorfile.Thisfilecanbeusefulwhendebuggingyourcode.TheMPLABIDESourceLevelDebuggerwillautomaticallyopenthisfileinthecaseofanerror.Theformatofthemessagesintheerrorfileis:

<type>[<number>]<file><line><description>

Forexample:

Error[113]C:\PROG.ASM7:Symbolnotpreviouslydefined(start)

TheerrorfilewillcontainMPASMassemblererrors,warningsandmessages.

HexFileFormats(.hex,.hxl,.hxh)

MPASMAssembleriscapableofproducingdifferenthexfileformats.

FormatName FormatType FileExtension UseIntelHexFormat INHX8M .HEX forstandardprogrammersIntelSplitHexFormat INHX8S .HXL,.HXH forodd/evenROMprogrammersIntelHex32Format INHX32 .HEX for16-bitcoreprogrammers

IntelHexFormat

Thisformatproducesone8-bithexfilewithalowbyte,highbytecombination.Sinceeachaddresscanonlycontain8bitsinthisformat,alladdressesaredoubled.ThisfileformatisusefulfortransferringPICmicroMCUseriescodetoPROMATEII,PICSTARTPlusandthirdpartyPICmicroMCUprogrammers.

Eachdatarecordbeginswitha9-characterprefixandendswitha2-characterchecksum.Eachrecordhasthefollowingformat:

:BBAAAATTHHHH....HHHCC

where:

BB-isatwodigithexadecimalbytecountrepresentingthenumberofdatabytesthatwillappearontheline.

AAAA-isafourdigithexadecimaladdressrepresentingthestartingaddressofthedatarecord.

TT-isatwodigitrecordtyperecordtypethatwillalwaysbe'00'exceptfortheend-of-filerecord,whichwillbe'01'.

HH-isatwodigithexadecimaldatabyte,presentedinlow-byte/high-bytecombinations.

CC-isatwodigithexadecimalchecksumthatisthetwo'scomplementofthesumofallprecedingbytesintherecord.

Example

<file_name>.HEX:1000000000000000000000000000000000000000F0:0400100000000000EC:100032000000280040006800A800E800C80028016D:100042006801A9018901EA01280208026A02BF02C5:10005200E002E80228036803BF03E803C8030804B8:1000620008040804030443050306E807E807FF0839:06007200FF08FF08190A57:00000001FF

IntelSplitHexFormat

Thesplit8-bitfileformatproducestwooutputfiles:.HXLand.HXH.Theformatisthesameasthenormal8-bitformat,exceptthatthelowbytesofthedatawordarestoredinthe.HXLfile,andthehighbytesofthedatawordarestoredinthe.HXHfile,andtheaddressesaredividedbytwo.Thisisusedtoprogram16-bitwordsintopairsof8-bitEPROMs,onefileforLowByte,onefileforHighByte.

Example

<file_name>.HXL

:0A0000000000000000000000000000F6:1000190000284068A8E8C82868A989EA28086ABFAA:10002900E0E82868BFE8C8080808034303E8E8FFD0:03003900FFFF19AD:00000001FF<file_name>.HXH:0A0000000000000000000000000000F6:1000190000000000000000010101010102020202CA:100029000202030303030304040404050607070883:0300390008080AAA:00000001FF

IntelHex32Format

Theextended32-bitaddresshexformatissimilartothehex8format,exceptthattheextendedlinearaddressrecordisoutputalsotoestablishtheupper16bitsofthedataaddress.Thisismainlyusedfor16-bitcoredevicessincetheiraddressableprogrammemoryexceeds32kwords.

Eachdatarecordbeginswitha9-characterprefixandendswitha2-characterchecksum.Eachrecordhasthefollowingformat:

:BBAAAATTHHHH....HHHCC

where:

BB-isatwodigithexadecimalbytecountrepresentingthenumberofdatabytesthatwillappearontheline.

AAAA-isafourdigithexadecimaladdressrepresentingthestartingaddressofthedatarecord.

TT-isatwodigitrecordtype:

00-Datarecord

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

01-EndofFilerecord

02-Segmentaddressrecord

04-Linearaddressrecord

HH-isatwodigithexadecimaldatabyte,presentedinlowbyte,highbytecombinations.

CC-isatwodigithexadecimalchecksumthatisthetwo'scomplementofthesumofallprecedingbytesintherecord.

SymbolandDebugFile(.cod)

ACODfileisusedbyMPLABIDEtodebugcode.TheCODfilename,includingthepath,hasa63characterlimit.MPASMassemblerandMPLINKlinkercangenerateaCODfile.

ObjectFile(.o)

Objectfilesaretherelocatablecodeproducedfromsourcefiles.

MPASMassemblerassemblessourcefilesintoobjectfiles.

MPLINKlinkercombinesobjectfilesandlibraryfiles,accordingtoalinkerscript,intoasingleoutputfile.MPLIBlibrariancombinesseveralobjectfilesintoasinglelibrary

file.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AssemblerInstallation

WhenMPLABIDEisinstalled,thewindowedversionofMPASMassemblerisalsoinstalled.YoumayobtaintheMPLABIDEsoftwareeitherfromthelatestMPLABIDECD-ROMorfromourwebsite.

Actually,therearetwoversionsofMPASMassembler:

aWindowsversion,MPASMWIN.EXE(Recommended)

aDOSversion,MPASM.EXE,forDOS5.0orgreater

AvailablefreewithMPLABIDE

MPASMWIN.EXEhasaWindowsshellinterface.MPASMWIN.EXEmaybeusedwithWindows95/98/ME,WindowsNT/2000orWindowsXP.YoucanusethisversionwithMPLABIDE(recommended)orstand-alone.

AvailablefreewithMPLABC1Xcompilers

MPASM.EXEhasacommandlineinterface.MPASM.EXEmaybeusedwithDOSoraDOSwindowinWindows3.x,Windows95/98/ME,WindowsNT/2000orWindowsXP.YoucanuseitwithMPLABIDE,thoughMPASMWIN.EXEisrecommended.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AssemblerUsagewithMPLABIDE

HowtouseMPASMassemblerwithMPLABIDEv6.xxandlaterisdiscussedhere.Thewindowsversion(mpasmwin.exe)oftheassemblershouldbeusedwithMPLABIDE.

MPLABIDEInterface

MPLABIDEProjectsProjectandAssemblerSetup

MPLABIDEInterface

MPASMassemblermaybeusedwiththeMPLABIDEintegrateddevelopmentenvironmenttoprovideGUIdevelopmentofyourapplication.InordertouseMPASMassemblerwithMPLABIDE,youmustfirstinstallMPLABIDE.Thelatestversionofthisfreesoftwareisavailableatourwebsite(http://www.microchip.com)orfromanysalesoffice(backcover).WhenyouinstallMPLABIDE,youwillbeinstallingMPASMassembleraswell.

OnceMPLABIDEisinstalledonyourPC,checkthesettingsbelowtoensurethattheassemberisinstalledproperlyasalanguagetool.

1. FromtheMPLABIDEmenubar,selectProject>SetLanguageToolLocationstoopenadialogtoset/checklanguagetoolexecutablelocation.

FIGURE:MPASMASSEMBLEREXECUTABLELOCATION

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

1. Inthedialog,underRegisteredTools,select"MicrochipMPASMToolsuite".Clickthe"+"toexpand.

SelectExecutables.Clickthe"+"toexpand.

SelectMPASMAssembler(mpasmwin.exe).UnderLocation,apathtothempasmwin.exefileshouldbedisplayed.Ifnopathisdisplayed,enteroneorbrowsetothelocationofthisfile.Bydefault,itislocatedat:

C:\ProgramFiles\MPLABIDE\MCHIP_Tools\mpasmwin.exe

ClickOK.

MPLABIDEProjects

AprojectinMPLABIDEisagroupoffilesneededtobuildanapplication,alongwiththeirassociationstovariousbuildtools.BelowagenericMPLABIDEProjectusingtheMPASMassemblertoolisshown.

FIGURE:PROJECTRELATIONSHIPS

InthisMPLABIDEProject,anassemblysourcefile(prog.asm)isshownwithitsassociatedassembler(MPASMassembler).MPLABIDEwillusethisinformationtogeneratetheobjectfileprog.oforinputintoMPLINKlinker.

TheCsourcefilemain.cisalsoshownwithitsassociatedMPLABC1Xcompiler.MPLABIDEwillusethisinformationtogenerateanobjectfile(main.o)forinputintothelinker(MPLINKlinker).SeeeithertheMPLABC17CompilerUser'sGuide(DS51290)forPIC17CXXXdevicesortheMPLABC18CompilerUser'sGuide(DS51288)forPIC18XXXXXdevicesformoreinformationonusingthesecompilers.

Inaddition,precompiledobjectfiles(precomp.o)maybeincludedinaproject,withnoassociatedtoolrequired.Typesofprecompiledobjectfilesthataregenerallyrequiredinaprojectare:

Startupcode

InitializationcodeInterruptserviceroutinesRegisterdefinitions

Precompiledobjectfilesareoftendeviceand/ormemorymodeldependent.FormoreinformationonavailableMicrochipprecompiledobjectfiles,seeeithertheMPLABC17CompilerLibraries(DS51296)forPIC17CXXXdevicesortheMPLABC18CompilerLibraries(DS51297)forPIC18XXXXXdevices.

Somelibraryfiles(math.lib)areavailablewiththecompiler.Othersmaybebuiltoutsidetheprojectusingthelibrariantool(MPLIBlibrarian).SeetheMPLIBObjectLibrariansectionlaterinthismanualformoreinformationonusingthelibrarian.FormoreinformationonavailableMicrochiplibraries,seetheMPLABC1Xlibrarydocumentspreviouslymentioned.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Theobjectfiles,alongwithlibraryfilesandalinkerscriptfile(device.lkr)areusedtogeneratetheprojectoutputfilesviathelinker(MPLINKlinker).SeetheMPLINKObjectLinkersectionlaterinthismanualformoreinformationonlinkerscriptfilesandusingthelinker.

ThemainoutputfilegeneratedbyMPLINKlinkeristheHexfile(prog.hex),usedbysimulators(MPLABSIM),emulators(MPLABICE2000)andprogrammers(PROMATEIIandPICSTARTPlus).Theotheroutputfilesare:

COFFfile(.out).IntermediatefileusedbyMPLINKlinkertogenerateCodefile,Hexfile,andListingfile.

Codefile(.cod).DebugfileusedbyMPLABIDE.Listingfile(.lst).Originalsourcecode,side-by-sidewithfinal

binarycode.Mapfile(.map).Showsthememorylayoutafterlinking.

Indicatesusedandunusedmemoryregions.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ProjectandAssemblerSetup

TosetupanMPLABIDEprojectforthefirsttime,itisadvisabletousethebuilt-inProjectWizard(Project>ProjectWizard.)Inthiswizard,youwillbeabletoselectalanguagetoolsuitethatusesMPASMassembler,e.g.,theMicrochipMPASMToolsuite.Formoreonthewizard,andMPLABIDEprojects,seeMPLABIDEdocumentation.

Onceyouhaveaprojectsetup,youmaythensetuppropertiesofMPASMassemblerinMPLABIDE.

1. FromtheMPLABIDEmenubar,selectProject>BuildOptions>Projecttoopenadialogtoset/checkprojectbuildoptions.

Note:MPASMassemblerdoesnotrecognizeincludepathinformationspecifiedinMPLABIDE.

ClickontheMPASMAssemblertabandenter/changeassemblersettings.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AssemblerUsagewithoutMPLABIDE

HowtouseMPASMassemblerwithoutMPLABIDEisdiscussedhere.

Thecommand-lineversion(mpasm.exe)mayberunfromthecommandlineoracommandshell.Thewindowsversion(mpasmwin.exe)maybefromthecommandlineoraWindowsshell.

CommandLineInterface

CommandShellInterfaceWindowsShellInterfaceTroubleshooting

CommandLineInterface

MPASMassemblercanbeinvokedthroughthecommandlineinterface(commandprompt)asfollows:

mpasmwin[/<Option>[/<Option>...]][<filename>]

or

mpasm[/<Option>[/<Option>...]][<filename>]

where

/<Option>-referstooneofthecommandlineoptions

<filename>-isthefilebeingassembled

Forexample,iftest.asmexistsinthecurrentdirectory,itcanbeassembledwithfollowingcommand:

mpasmwin/e/ltest

Theassemblerdefaults(notedbelow)canbeoverriddenwithoptions:

Option Result/<option> Enablestheoption

/<option>+ Enablestheoption

/<option>- Disablestheoption

/<option><filename>

Ifappropriate,enablestheoptionanddirectstheoutputtothespecifiedfile

Ifthesourcefilenameisomitted,theappropriateshellinterfaceisinvoked,i.e.,

mpasmwin-aWindowsinterfaceisdisplayed,whichincludesaHelpbutton

mpasm-theassemblerhelppanelisdisplayed(sameasmpasm/?)

Option Default Description? N/A Displaystheassemblerhelppanel(mpasm.exe).

a INHX8M Generateabsolute.codand.hexoutputdirectlyfromassembler;/a<hex-format>,where<hex-format>isoneof[INHX8M|INHX8S|INHX32].

c On Enables/Disablescasesensitivity.

d N/A Defineatextstringsubstitution;/d<label>[=<value>].

e On

Enable/Disable/SetPathforerrorfile./eEnable/e+Enable/e-Disable/e<path>error.fileEnables/setspath

h N/A Displaystheassemblerhelppanel.

l On

Enable/Disable/SetPathforlistfile/lEnable/l+Enable/l-Disable/l<path>list.fileEnables/setspath

m On Enable/Disablemacroexpansion.

o Off

Enable/Disable/SetPathforobjectfile./oEnable/o+Enable/o-Disable/o<path>object.fileEnables/setspath

p None Settheprocessortype;/p<processor_type>,where<processor_type>isaPICmicroMCUdevice,e.g.,PIC16C54.

q Off Enable/Disablequietmode(suppressscreenoutput).

r Hex Definesdefaultradix;/r<radix>,where<radix>isoneof[HEX|DEC|OCT].

t 8 Listfiletabsize;/t<size>.

w 0

Setmessagelevel;/w<value>,where<value>isoneof[0|1|2].0allmessages1errorsandwarnings2errorsonly

x Off

Enable/Disable/SetPathforcrossreferencefile./xEnable/x+Enable/x-Disable/x<path>xref.fileEnables/setspath

y Disabled

Enable/Disableextendedinstructionset./yEnable/y+Enable/y-DisableCanonlybeenabledforprocessorswhichsupporttheextendedinstructionsetand

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

thegenericprocessorPIC18CXX./y-overridesLISTPE=<type>directive.(Specifyprocessortypeandenableextendedinstructionset.)

CommandShellInterface

TheMPASMassemblercommandshellinterfacedisplaysascreeninTextGraphicsmode.Itisinvokedbyexecutingmpasm.exeinWindowsExplorer.

Onthisscreen,youcanfillinthenameofthesourcefileyouwanttoassembleandotherinformation.

FIGURE:TEXTGRAPHICSMODEDISPLAY

SourceFile

Typethenameofyoursourcefile.ThenamecanincludeaDOSpathandwildcards.Ifyouusewildcards(oneof*or?),alistofallmatchingfilesisdisplayedforyoutoselectfrom.Toautomaticallyenter*.ASMinthisfield,press<TAB>.

ProcessorType

Ifyoudonotspecifytheprocessorinyoursourcefile,usethisfieldtoselecttheprocessor.Enterthefieldbyusingthearrowkeys,thentogglethroughtheprocessorsbypressing<RET>.

ErrorFile

Anerrorfile(<sourcename>.err)iscreatedbydefault.Toturntheerrorfileoff,usethe<Ã>tomovetotheYESandpress<RET>tochangeittoNO.Theerrorfilenamecanbechangedbypressingthe<TAB>keytomovetotheshadedareaandtypinganewname.Wildcardsarenotallowedintheerrorfilename.

CrossReferenceFile

Acrossreferencefile(<sourcename>.xrf)isnotgeneratedbydefault.Tocreateacrossreferencefile,usethekeyboardarrowkeystomovetotheNOandpress<RET>tochangeittoYES.Thecrossreferencefilenamecanbechangedbypressingthe<TAB>keytomovetotheshadedareaandtypinganewname.Wildcardsarenotallowedinthecrossreferencefilename.

ListingFile

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Alistingfile(<sourcename>.lst)iscreatedbydefault.Toturnthelistingfileoff,usethe<Ã>tomovetotheYESandpress<RET>tochangeittoNO.Thelistingfilenamecanbechangedbypressingthe<TAB>keytomovetotheshadedareaandtypinganewname.Wildcardsarenotallowedinthelistingfilename.

HEXDumpType

Setthisvaluetogeneratethedesiredhexfileformat.Changingthisvalueisaccomplishedbymovingtothefieldwiththe<Ã>keyandpressingthe<RET>keytoscrollthroughtheavailableoptions.Tochangethehexfilename,pressthe<TAB>keytomovetheshadedarea,andtypeinthenewname.

AssembletoObjectFile

Enablingthisoptionwillgeneratetherelocatableobjectcodethatcanbeinputtothelinkerandsuppressgenerationofthehexfile.Thefilenamemaybemodifiedinthesamemannerastheerrorfile.

WindowsShellInterface

MPASMassemblerforWindowsprovidesagraphicalinterfaceforsettingassembleroptions.Itisinvokedbyexecutingmpasmwin.exeinWindowsExplorer.

FIGURE:MPASMASSEMBLERWINDOWSSHELLINTERFACE

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SelectasourcefilebytypinginthenameorusingtheBrowsebutton.Setthevariousoptionsasdescribedbelow.ThenclickAssembletoassemblethesourcefile.

Note:WhenMPASMassemblerforWindowsisinvokedthroughMPLABIDE,theoptionsscreenisnotavailable.RefertotheMakeSetupoptionintheMPLABIDEUser'sGuideforselectingassemblyoptionsinMPLABIDE.

Option UsageRadix Overrideanysourcefileradixsettings.WarningLevel Overrideanysourcefilemessagelevelsettings.HexOutput Overrideanysourcefilehexfileformatsettings.GeneratedFiles Enable/disablevariousoutputfiles.CaseSensitivity Enable/disablecasesensitivity.MacroExpansion Overrideanysourcefilemacroexpansionsettings.Processor Overrideanysourcefileprocessorsettings.TabSize Setthelistfiletabsize.

ExtraOptions Anyadditionalcommandlineoptions.SeeCommandLineInterfaceformoredetails.

SaveSettingsonExit

Savethesesettingsinmplab.ini.Theywillbeusedthenexttimeyourunmpasmwin.exe.

ExtendedMode Enableextendedmode.

Troubleshooting

Ifyouareusingmpasm.exeandgetamessagesayingthatyouhaverunoutofenvironmentspace,useMicrosoftWindowsInternetExplorertoselectthempasm.exefileintheMPLABIDEinstallationdirectory,andclickontherightmousebuttontobringupthePropertiesdialog.

FIGURE:PROPERTIESDIALOG-MPASM.EXE

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

IncreasethesizeoftheInitialEnvironment.Usuallyasettingof2048willsuffice,butifyouhavealotofapplicationsthatsetvariablesandaddtoyourpathstatementinyourAUTOEXEC.BATfile,youmayneedtomakeitlarger.

Directives

Directivesareassemblercommandsthatappearinthesourcecodebutarenottranslateddirectlyintoopcodes.Theyareusedtocontroltheassembler:itsinput,output,anddataallocation.

Manyoftheassemblerdirectiveshavealternatenamesandformats.ThesemayexisttoprovidebackwardcompatibilitywithpreviousassemblersfromMicrochipandtobecompatiblewithindividualprogrammingpractices.Ifportablecodeisdesired,itisrecommendedthatprogramsbewrittenusingthespecificationscontainedhere.

Note:AlthoughMPASMassemblerisoftenusedwithMPLINKobjectlinker,MPASMassemblerdirectivesarenotsupportedbyMPLINKlinker.SeeMPLINKobjectlinkerdocumentationformoreinformationonlinkeroptionstocontrollistingandhexfileoutput.

Directivesdiscussedare:

Note:Directivesarenotcase-sensitive,e.g.,cblockmaybeexecutedasCBLOCK,cblock,Cblock,etc

__BADRAM-IdentifyUnimplementedRAM

__BADROM-IdentifyUnimplementedROM__CONFIG-SetProcessorConfigurationBits__IDLOCS-SetProcessorIDLocations__MAXRAM-DefineMaximumRAMLocation__MAXROM-DefineMaximumROMLocation#DEFINE-DefineaTextSubstitutionLabel#INCLUDE-IncludeAdditionalSourceFile

#UNDEFINE-DeleteaSubstitutionLabelBANKISEL-GenerateIndirectBankSelectingCodeBANKSEL-GenerateBankSelectingCodeCBLOCK-DefineaBlockofConstantsCODE-BeginanObjectFileCodeSectionCODE_PACK-BeginanObjectFilePackedCodeSectionCONSTANT-DeclareSymbolConstantDA-StoreStringsinProgramMemoryData-CreateNumericandTextDataDB-DeclareDataofOneByteDE-DeclareEEPROMDataByteDT-DefineTableDW-DeclareDataofOneWordELSE-BeginAlternativeAssemblyBlocktoIFEND-EndProgramBlockENDC-EndanAutomaticConstantBlockENDIF-EndConditionalAssemblyBlockENDM-EndaMacroDefinitionENDW-EndaWhileLoopEQU-DefineanAssemblerConstantERROR-IssueanErrorMessageERRORLEVEL-SetMessageLevelEXITM-ExitfromaMacroEXPAND-ExpandMacroListingEXTERN-DeclareanExternallyDefinedLabelFILL-SpecifyMemoryFillValueGLOBAL-ExportaLabelIDATA-BeginanObjectFileInitializedDataSection

IF-BeginConditionallyAssembledCodeBlockIFDEF-ExecuteIfSymbolhasBeenDefinedIFNDEF-ExecuteIfSymbolhasnotBeenDefinedLIST-ListingOptionsLOCAL-DeclareLocalMacroVariableMACRO-DeclareMacroDefinitionMESSG-CreateUserDefinedMessageNOEXPAND-TurnoffMacroExpansionNOLIST-TurnoffListingOutputORG-SetProgramOriginPAGE-InsertListingPageEjectPAGESEL-GeneratePageSelectingCodePROCESSOR-SetProcessorTypeRADIX-SpecifyDefaultRadixRES-ReserveMemorySET-DefineanAssemblerVariableSPACE-InsertBlankListingLinesSUBTITLE-SpecifyProgramSubtitleTITLE-SpecifyProgramTitleUDATA-BeginanObjectFileUninitializedDataSectionUDATA_ACS-BeginanObjectFileAccessUninitializedData

SectionUDATA_OVR-BeginanObjectFileOverlayedUninitializedData

SectionUDATA_SHR-BeginanObjectFileSharedUninitializedData

SectionVARIABLE-DeclareSymbolVariableWHILE-PerformLoopWhileConditionisTrue

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

__BADRAM-IdentifyUnimplementedRAM

Note:badramisprecededbytwounderlinecharacters,withnospaceinbetweenthesecharacters.Aspaceisaddedhereforreadibilityonly.

Syntax

__badram<expr>[-<expr>][,<expr>[-<expr>]]

Description

The__maxramand__badramdirectivestogetherflagaccessestounimplementedregisters.__badramdefinesthelocationsofinvalidRAMaddresses.Thisdirectiveisdesignedforusewiththe__maxramdirective.A__maxramdirectivemustproceedany__badramdirective.Each<expr>mustbelessthanorequaltothevaluespecifiedby__maxram.Oncethe__maxramdirectiveisused,strictRAMaddresscheckingisenabled,usingtheRAMmapspecifiedby__badram.Tospecifyarangeofinvalidlocations,usethesyntax<minloc>-<maxloc>.

Example

Seetheexamplefor__maxram.

SeeAlso

__MAXRAM

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

__BADROM-IdentifyUnimplementedROM

Note:badromisprecededbytwounderlinecharacters,withnospaceinbetweenthesecharacters.Aspaceisaddedhereforreadibilityonly.

Syntax

__badrom<expr>[-<expr>][,<expr>[-<expr>]]

Description

The__maxromand__badromdirectivestogetherflagaccessestounimplementedregisters.__badromdefinesthelocationsofinvalidROMaddresses.Thisdirectiveisdesignedforusewiththe__maxromdirective.A__maxromdirectivemustproceedany__badromdirective.Each<expr>mustbelessthanorequaltothevaluespecifiedby__maxrom.Oncethe__maxromdirectiveisused,strictROMaddresscheckingisenabled,usingtheROMmapspecifiedby__badrom.Tospecifyarangeofinvalidlocations,usethesyntax<minloc>-<maxloc>.

Specifically,awarningwillberaisedinthefollowingcircumstances:

thetargetofaGOTOorCALLinstructionisevaluatedbytheassemblertoaconstant,andfallsinabadROMregion

thetargetofanLGOTOorLCALLpsuedo-opisevaluatedbytheassemblertoaconstant,andfallsinabadROMregion

a.hexfileisbeinggenerated,andpartofaninstructionfallsinabadROMregion

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Example

Seetheexamplefor__maxrom.

SeeAlso

__MAXROM

__CONFIG-SetProcessorConfigurationBits

Note:configisprecededbytwounderlinecharacters,withnospaceinbetweenthesecharacters.Aspaceisaddedhereforreadabilityonly.

Syntax

__config<expr>OR__config<addr>,<expr>

Description

Setstheprocessor'sconfigurationbitstothevaluedescribedby<expr>.ForPIC18CXXXdevices,theaddressofavalidconfigurationbytemustalsobespecifiedby<addr>.RefertoindividualPICmicromicrocontrollerdatasheetsforadescriptionoftheconfigurationbits.

Beforethisdirectiveisused,theprocessormustbedeclaredthroughthecommandline,thelistdirective,ortheprocessordirective.IfthisdirectiveisusedwiththePIC17CXXXfamily,theHexfileoutputformatmustbesettoINHX32throughthecommandlineorthelistdirective.

Examples

example1:listp=17c42,f=INHX32;defineprocessorandselectoutputformat__configH'FFFF';defaultconfigurationbits

example2:listp=16f877a;listdirectivetodefineprocessor

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

#include<p16f877a.inc>;includefilewithconfigbitdefinitions__config_HS_OSC&_WDT_OFF&_LVP_OFF;SetoscillatortoHS,;watchdogtimeoff,;low-voltageprog.off

example3:listp=18f8720;listdirectivetodefineprocessor#include<p18f8720.inc>;includefilewithconfigbitdefinitions__CONFIG_CONFIG1H,_OSCS_OFF_1H&_HS_OSC_1H;Setoscinfo__CONFIG_CONFIG2L,_BOR_OFF_2L&_PWRT_OFF_2L;Setpowerinfo

SeeAlso

__IDLOCSLISTPROCESSOR

__IDLOCS-SetProcessorIDLocations

Note:idlocsisprecededbytwounderlinecharacters,withnospaceinbetweenthesecharacters.Aspaceisaddedhereforreadibilityonly.

Syntax

__idlocs<expr>or__idlocs<expr1>,<expr2>

Description

ForPIC12CXXXandPIC16CXXXdevices,__idlocssetsthefourIDlocationstothehexadecimalvalueof<expr>.ForPIC18CXXXdevices,__idlocssetsthetwo-bytedeviceID<expr1>tothehexadecimalvalueof<expr2>.ThisdirectiveisnotvalidforthePIC17CXXXfamily.

Forexample,if<expr>evaluatesto1AF,thefirst(lowestaddress)IDlocationiszero,thesecondisone,thethirdisten,andthefourthisfifteen.

Beforethisdirectiveisused,theprocessormustbedeclaredthroughthecommandline,thelistdirective,ortheprocessordirective.

Example

__idlocsH'1234'

SeeAlso

__CONFIGLISTPROCESSOR

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

__MAXRAM-DefineMaximumRAMLocation

Note:maxramisprecededbytwounderlinecharacters,withnospaceinbetweenthesecharacters.Aspaceisaddedhereforreadibilityonly.

Syntax

__maxram<expr>

Description

The__maxramand__badramdirectivestogetherflagaccessestounimplementedregisters.__maxramdefinestheabsolutemaximumvalidRAMaddressandinitializesthemapofvalidRAMaddressestoalladdressesvalidatandbelow<expr>.<expr>mustbegreaterthanorequaltothemaximumpage0RAMaddressandlessthan1000H.Thisdirectiveisdesignedforusewiththe__badramdirective.Oncethe__maxramdirectiveisused,strictRAMaddresscheckingisenabled,usingtheRAMmapspecifiedby__badram.

__maxramcanbeusedmorethanonceinasourcefile.EachuseredefinesthemaximumvalidRAMaddressandresetstheRAMmaptoalllocations.

Example

listp=16c622__maxramH'0BF'__badramH'07'-H'09',H'0D'-H'1E'__badramH'87'-H'89',H'8D',H'8F'-H'9E'

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

movwfH'07';GeneratesinvalidRAMwarningmovwfH'87';GeneratesinvalidRAMwarning;andtruncationmessage

SeeAlso

__BADRAM

__MAXROM-DefineMaximumROMLocation

Note:maxromisprecededbytwounderlinecharacters,withnospaceinbetweenthesecharacters.Aspaceisaddedhereforreadibilityonly.

Syntax

__maxrom<expr>

Description

The__maxromand__badromdirectivestogetherflagaccessestounimplementedregisters.__maxromdefinestheabsolutemaximumvalidROMaddressandinitializesthemapofvalidROMaddressestoalladdressesvalidatandbelow<expr>.<expr>mustbegreaterthanorequaltothemaximumROMaddressofthetargetdevice.Thisdirectiveisdesignedforusewiththe__badromdirective.Oncethe__maxromdirectiveisused,strictROMaddresscheckingisenabled,usingtheROMmapspecifiedby__badrom.

__maxromcanbeusedmorethanonceinasourcefile.EachuseredefinesthemaximumvalidROMaddressandresetstheROMmaptoalllocations.

Example

listp=12c508__maxrom0x1FF__badrom0x2-0x4,0xAorg0x5

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

goto0x2;generatesawarningcall0x3;generatesawarningorg0xAmovlw5;generatesawarning

SeeAlso

__BADROM

#DEFINE-DefineaTextSubstitutionLabel

Syntax

#define<name>[<string>]

Description

Thisdirectivedefinesatextsubstitutionstring.Wherever<name>isencounteredintheassemblycode,<string>willbesubstituted.

Usingthedirectivewithno<string>causesadefinitionof<name>tobenotedinternallyandmaybetestedforusingtheifdefdirective.

ThisdirectiveemulatestheANSI'C'standardfor#define.SymbolsdefinedwiththismethodarenotavailableforviewingusingMPLABIDE.

Example

#definelength20#definecontrol0x19,7#defineposition(X,Y,Z)(Y-(2*Z+X))::test_labeldwposition(1,length,512)bsfcontrol;setbit7inf19

SeeAlso

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

#UNDEFINE#INCLUDEIFDEFIFNDEF

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

#INCLUDE-IncludeAdditionalSourceFile

Syntax

#include<<include_file>>#include"<include_file>"

Description

Thespecifiedfileisreadinassourcecode.Theeffectisthesameasiftheentiretextoftheincludedfilewereinsertedintothefileatthelocationoftheincludestatement.Uponend-of-file,sourcecodeassemblywillresumefromtheoriginalsourcefile.Upto5levelsofnestingarepermitted.Upto255includefilesareallowed.

<include_file>maybeenclosedinquotesoranglebrackets.Ifafullyqualifiedpathisspecified,onlythatpathwillbesearched.Otherwise,thesearchorderis:currentworkingdirectory,sourcefiledirectory,MPASMassemblerexecutabledirectory.

Example

#include"c:\sys\sysdefs.inc";systemdefs#include<regs.h>;registerdefs

SeeAlso

#DEFINE#UNDEFINE

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

#UNDEFINE-DeleteaSubstitutionLabel

Syntax

#undefine<label>

Description

<label>isanidentifierpreviouslydefinedwiththe#definedirective.ItmustbeavalidMPASMassemblerlabel.Thesymbolnamedisremovedfromthesymboltable.

Example

#definelength20:#undefinelength

SeeAlso

#DEFINE#INCLUDEIFDEFIFNDEF

BANKISEL-GenerateIndirectBankSelectingCode

Syntax

bankisel<label>

Description

Forusewhengeneratinganobjectfile.Thisdirectiveisaninstructiontothelinkertogeneratetheappropriatebankselectingcodeforanindirectaccessoftheaddressspecifiedby<label>.Onlyone<label>shouldbespecified.Nooperationscanbeperformedon<label>.<label>musthavebeenpreviouslydefined.

Thelinkerwillgeneratetheappropriatebankselectingcode.For14-bitcoredevices,theappropriatebitset/clearinstructionontheIRPbitintheSTATUSregisterwillbegenerated.Forthe16-bitcoredevices,MOVLBorMOVLRwillbegenerated.Iftheusercancompletelyspecifytheindirectaddresswithouttheseinstructions,nocodewillbegenerated.

Formoreinformation,refertoRelocatableObjects.

Example

movlwVar1movwfFSRbankiselVar1:movwfINDF

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SeeAlso

BANKSELPAGESEL

BANKSEL-GenerateBankSelectingCode

Syntax

banksel<label>

Description

Forusewhengeneratinganobjectfile.Thisdirectiveisaninstructiontothelinkertogeneratebankselectingcodetosetthebanktothebankcontainingthedesignated<label>.Onlyone<label>shouldbespecified.Nooperationscanbeperformedon<label>.<label>musthavebeenpreviouslydefined.

Thelinkerwillgeneratetheappropriatebankselectingcode.For12-bitcoredevices,theappropriatebitset/clearinstructionsontheFSRwillbegenerated.For14-bitdevices,bitset/clearinstructionsontheSTATUSregisterwillbegenerated.Forthe16-bitcoredevices,MOVLBorMOVLRwillbegenerated.Fortheenhanced16-bitcoredevices,MOVLBwillbegenerated.IfthedevicecontainsonlyonebankofRAM,noinstructionswillbegenerated.

Formoreinformation,refertoRelocatableObjects.

Example

bankselVar1movwfVar1

SeeAlso

BANKISELPAGESEL

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

CBLOCK-DefineaBlockofConstants

Syntax

cblock[<expr>]<label>[:<increment>][,<label>[:<increment>]]endc

Description

Definealistofnamedconstants.Each<label>isassignedavalueofonehigherthantheprevious<label>.Thepurposeofthisdirectiveistoassignaddressoffsetstomanylabels.Thelistofnamesendwhenanendcdirectiveisencountered.

<expr>indicatesthestartingvalueforthefirstnameintheblock.Ifnoexpressionisfound,thefirstnamewillreceiveavalueonehigherthanthefinalnameinthepreviouscblock.Ifthefirstcblockinthesourcefilehasno<expr>,assignedvaluesstartwithzero.

If<increment>isspecified,thenthenext<label>isassignedthevalueof<increment>higherthantheprevious<label>.

Multiplenamesmaybegivenonaline,separatedbycommas.

cblockisusefulfordefiningconstantsinprogramanddatamemory.

Example

cblock0x20;name_1willbeassigned20name_1,name_2;name_2,21andsoon

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

name_3,name_4;name_4isassigned23.endccblock0x30TwoByteVar:0,TwoByteHigh,TwoByteLowQueue:QUEUE_SIZEQueueHead,QueueTailDouble1:2,Double2:2endc

SeeAlso

ENDC

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

CODE-BeginanObjectFileCodeSection

Syntax

[<label>]code[<ROMaddress>]

Description

Forusewhengeneratinganobjectfile.Declaresthebeginningofasectionofprogramcode.If<label>isnotspecified,thesectionisnamed.code.Thestartingaddressisinitializedtothespecifiedaddressorwillbeassignedatlinktimeifnoaddressisspecified.

Note:Twosectionsinthesamesourcefilemaynothavethesamename.

Formoreinformation,refertoRelocatableObjects.

Example

RESETcodeH'01FF'gotoSTART

SeeAlso

EXTERNCODE_PACKGLOBALIDATAUDATAUDATA_ACSUDATA_OVRUDATA_SHR

CODE_PACK-BeginanObjectFilePackedCodeSection

Syntax

[<label>]code_pack[<ROMaddress>]

Description

Forusewhengeneratinganobjectfile.DeclaresthebeginningofasectionofprogramcodeorROMdatawhereapaddingbyteofzeroisnotappendedtoanoddnumberofbytes.If<label>isnotspecified,thesectionisnamed.code.Thestartingaddressisinitializedto<ROMaddress>orwillbeassignedatlinktimeifnoaddressisspecified.If<ROMaddress>isspecified,itmustbeword-aligned.

Note:Twosectionsinthesamesourcefilemaynothavethesamename

Formoreinformation,refertoRelocatableObjects.

Note:ThisdirectiveisonlyavailableforthePIC18familyofdevices.

Example

00001LISTP=18Cxx0000200003packedcode_packH'1F0'0001F001020300004DB1,2,30001F3040500005DB4,50000600007paddedcode

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

0000000201000300008DB1,2,3000004050400009DB4,50001000011END

SeeAlso

EXTERNCODEGLOBALIDATAUDATAUDATA_ACSUDATA_OVRUDATA_SHR

MicrochipTechnologyInc.

CONSTANT-DeclareSymbolConstant

Syntax

constant<label>=<expr>[...,<label>=<expr>]

Description

CreatessymbolsforuseinMPASMassemblerexpressions.Constantsmaynotberesetafterhavingoncebeeninitialized,andtheexpressionmustbefullyresolvableatthetimeoftheassignment.Thisistheprincipaldifferencebetweensymbolsdeclaredasconstantandthosedeclaredasvariable,orcreatedbythesetdirective.Otherwise,constantsandvariablesmaybeusedinterchangeablyinexpressions.

Example

variableRecLength=64;SetDefault;RecLengthconstantBufLength=512;InitBufLength.;RecLengthmay.;beresetlater.;inRecLength=128.;constantMaxMem=RecLength+BufLength;CalcMaxMem

SeeAlso

SETVARIABLE

Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DA-StoreStringsinProgramMemory

Syntax

[<label>]da<expr>[,<expr2>,...,<exprn>]

Description

Generatesapacked14-bitnumberrepresentingtwo7-bitASCIIcharacters.ThisisusefulforstoringstringsinmemoryforthePICmicroMCUFlashROMdevices.

Examples

da"abcdef"

willput30E231E432E63380intoprogrammemory

da"12345678",0

willput18B219B41AB60000intoprogrammemory

da0xFFFF

willput0x3FFFintoprogrammemory

Data-CreateNumericandTextData

Syntax

[<label>]data<expr>,[,<expr>,...,<expr>][<label>]data"<text_string>"[,"<text_string>",...]

Description

Initializeoneormorewordsofprogrammemorywithdata.Thedatamaybeintheformofconstants,relocatableorexternallabels,orexpressionsofanyoftheabove.ThedatamayalsoconsistofASCIIcharacterstrings,<text_string>,enclosedinsinglequotesforonecharacterordoublequotesforstrings.Singlecharacteritemsareplacedintothelowbyteoftheword,whilestringsarepackedtwotoaword.Ifanoddnumberofcharactersaregiveninastring,thefinalbyteiszero.OnallfamiliesexceptthePIC18CXXX,thefirstcharacterisinthemostsignificantbyteoftheword.OnthePIC18CXXX,thefirstcharacterisintheleastsignificantbyteoftheword.

Whengeneratinganobjectfile,thisdirectivecanalsobeusedtodeclareinitializeddatavalues.Refertotheidatadirectiveformoreinformation.

Example

datareloc_label+10;constantsdata1,2,ext_label;constants,externalsdata"testing1,2,3";textstringdata'N';singlecharacterdatastart_of_program;relocatablelabel

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SeeAlso

DBDEDTDWIDATA

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DB-DeclareDataofOneByte

Syntax

[<label>]db<expr>[,<expr>,...,<expr>]

Description

Reserveprogrammemorywordswithpacked8-bitvalues.Multipleexpressionscontinuetofillbytesconsecutivelyuntiltheendofexpressions.Shouldtherebeanoddnumberofexpressions,thelastbytewillbezero.

Whengeneratinganobjectfile,thisdirectivecanalsobeusedtodeclareinitializeddatavalues.Refertotheidatadirectiveformoreinformation.

Example

db't',0x0f,'e',0x0f,'s',0x0f,'t','\n'

SeeAlso

DATADEDTDWIDATA

DE-DeclareEEPROMDataByte

Syntax

[<label>]de<expr>[,<expr>,...,<expr>]

Description

AlthoughdesignedforinitializingEEPROMdataonthePIC16F8X,thedirectivecanbeusedatanylocationforanyprocessor.

PIC18XXXX

Reservememorywordbytesarepacked.

Whenusingde,makesuretospecifythestartofdatamemoryat0xF00000forusewithprogrammers.

OtherPICmicro's

Reservememorywordswith8-bitdata.Each<expr>mustevaluatetoan8-bitvalue.Theupperbitsoftheprogramwordarezeroes.Eachcharacterinastringisstoredinaseparateword.

Whenusingde,makesuretospecifythestartofdatamemoryat0x2100forusewithprogrammers.

Example

orgH'2100';InitializeEEPROMDatade"MyProgram,v1.0",0

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SeeAlso

DATADBDTDW

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DT-DefineTable

Syntax

[<label>]dt<expr>[,<expr>,...,<expr>]

Description

GeneratesaseriesofRETLWinstructions,oneinstructionforeach<expr>.Each<expr>mustbean8-bitvalue.EachcharacterinastringisstoredinitsownRETLWinstruction.

Example

dt"AMessage",0dtFirstValue,SecondValue,EndOfValues

SeeAlso

DATADBDEDW

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DW-DeclareDataofOneWord

Syntax

[<label>]dw<expr>[,<expr>,...,<expr>]

Description

Reserveprogrammemorywordsfordata,initializingthatspacetospecificvalues.ForPIC18CXXXdevices,dwfunctionslikedb.Valuesarestoredintosuccessivememorylocationsandthelocationcounterisincrementedbyone.Expressionsmaybeliteralstringsandarestoredasdescribedinthedatadirective.

Whengeneratinganobjectfile,thisdirectivecanalsobeusedtodeclareinitializeddatavalues.Refertotheidatadirectiveformoreinformation.

Example

dw39,"diagnostic39",(d_list*2+d_offset)dwdiagbase-1

SeeAlso

DATADBIDATA

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ELSE-BeginAlternativeAssemblyBlocktoIF

Syntax

else

Description

Usedinconjunctionwithanifdirectivetoprovideanalternativepathofassemblycodeshouldtheifevaluatetofalse.elsemaybeusedinsidearegularprogramblockormacro.

Example

speedmacrorateifrate<50dwslowelsedwfastendifendm

SeeAlso

ENDIFIF

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

END-EndProgramBlock

Syntax

end

Description

Indicatestheendoftheprogram.

Example

listp=17c42:;executablecode:;end;endofinstructions

SeeAlso

ORG

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ENDC-EndanAutomaticConstantBlock

Syntax

endc

Description

endcterminatestheendofacblocklist.Itmustbesuppliedtoterminatethelist.

SeeAlso

CBLOCK

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ENDIF-EndConditionalAssemblyBlock

Syntax

endif

Description

Thisdirectivemarkstheendofaconditionalassemblyblock.endifmaybeusedinsidearegularprogramblockormacro.

SeeAlso

ELSEIF

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ENDM-EndaMacroDefinition

Syntax

endm

Description

Terminatesamacrodefinitionbegunwithmacro.

Example

make_tablemacroarg1,arg2dwarg1,0;nullterminatetablenameresarg2;reservestorageendm

SeeAlso

MACROEXITM

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ENDW-EndaWhileLoop

Syntax

endw

Description

endwterminatesawhileloop.Aslongastheconditionspecifiedbythewhiledirectiveremainstrue,thesourcecodebetweenthewhiledirectiveandtheendwdirectivewillberepeatedlyexpandedintheassemblysourcecodestream.Thisdirectivemaybeusedinsidearegularprogramblockormacro.

Example

SeetheexampleforWHILE.

SeeAlso

WHILE

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

EQU-DefineanAssemblerConstant

Syntax

<label>equ<expr>

Description

Thevalueof<expr>isassignedto<label>.

Example

fourequ4;assignedthenumericvalueof4tolabelfour

SeeAlso

SET

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ERROR-IssueanErrorMessage

Syntax

error"<text_string>"

Description

<text_string>isprintedinaformatidenticaltoanyMPASMassemblererrormessage.<text_string>maybefrom1to80characters.

Example

error_checkingmacroarg1ifarg1>=55;ifargisoutofrangeerror"error_checking-01argoutofrange"endifendm

SeeAlso

MESSG

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ERRORLEVEL-SetMessageLevel

Syntax

errorlevel{0|1|2|+<msgnum>|-<msgnum>}[,...]

Description

Setsthetypesofmessagesthatareprintedinthelistingfileanderrorfile.

Setting Affect0 Messages,warnings,anderrorsprinted

1 Warningsanderrorsprinted

2 Errorsprinted

-<msgnum> Inhibitsprintingofmessage<msgnum>+<msgnum> Enablesprintingofmessage<msgnum>

Errormessagescannotbedisabled.Thesettingof0,1,or2overridesindividualmessagedisablingorenabling.

Example

errorlevel1,-202

SeeAlso

LISTERROR

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

EXITM-ExitfromaMacro

Syntax

exitm

Description

Forceimmediatereturnfrommacroexpansionduringassembly.Theeffectisthesameasifanendmdirectivehadbeenencountered.

Example

testmacrofileregiffilereg==1;checkforvalidfileexitmelseerror"badfileassignment"endifendm

SeeAlso

ENDMMACRO

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

EXPAND-ExpandMacroListing

Syntax

expand

Description

Expandallmacrosinthelistingfile.Thisdirectiveisroughlyequivalenttothe/mMPASMassemblercommandlineoption,butmaybedisabledbytheoccurrenceofasubsequentnoexpand.

SeeAlso

MACRONOEXPAND

MicrochipTechnologyInc.Microchip'sWebSite

EXTERN-DeclareanExternallyDefinedLabel

Syntax

extern<label>[,<label>...]

Description

Forusewhengeneratinganobjectfile.Declaressymbolnamesthatmaybeusedinthecurrentmodulebutaredefinedasglobalinadifferentmodule.

Theexternstatementmustbeincludedbeforethe<label>isused.Atleastonelabelmustbespecifiedontheline.If<label>isdefinedinthecurrentmodule,MPASMassemblerwillgenerateaduplicatelabelerror.

Formoreinformation,refertoRelocatableObjects.

Example

externFunction:callFunction

SeeAlso

GLOBALIDATAUDATAUDATA_ACSUDATA_OVRUDATA_SHR

Voice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

FILL-SpecifyMemoryFillValue

Syntax

[<label>]fill<expr>,<count>

Description

Generates<count>occurrencesoftheprogramwordorbyte(PIC18CXXXdevices),<expr>.Ifboundedbyparentheses,<expr>canbeanassemblerinstruction.

Examples

example1fill0x1009,5;fillwithaconstantfill(GOTORESET_VECTOR),NEXT_BLOCK-$

example2listp=18f252org0x12foogoto$org0x100fill(gotofoo),(h'8000'-$)/2;Divideby2for2-word;instructionsend

SeeAlso

DATADWORG

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200

GLOBAL-ExportaLabel

Syntax

global<label>[,<label>...]

Description

Forusewhengeneratinganobjectfile.Declaressymbolnamesthataredefinedinthecurrentmoduleandshouldbeavailabletoothermodules.Atleastonelabelmustbespecifiedontheline.

Formoreinformation,refertoRelocatableObjects.

Example

udataVar1res1Var2res1globalVar1,Var2codeAddThreeglobalAddThreeaddlw3return

SeeAlso

EXTERNIDATAUDATAUDATA_ACSUDATA_OVRUDATA_SHR

Fax:(480)899-9210Microchip'sE-mailAddress

IDATA-BeginanObjectFileInitializedDataSection

Syntax

[<label>]idata[<RAMaddress>]

Description

Forusewhengeneratinganobjectfile.Declaresthebeginningofasectionofinitializeddata.If<label>isnotspecified,thesectionisnamed.idata.Thestartingaddressisinitializedtothespecifiedaddressorwillbeassignedatlinktimeifnoaddressisspecified.Nocodecanbegeneratedinthissegment.

Thelinkerwillgeneratealook-uptableentryforeachbytespecifiedinanidatasection.Youmustthenlinkorincludetheappropriateinitializationcode.ExamplesofinitializationcodethatmaybeusedandmodifiedasneededmaybefoundwithMPLINKlinkersampleapplicationexamples.

Note:Thisdirectiveisnotavailablefor12-bitcoredevices.

Theres,dbanddwdirectivesmaybeusedtoreservespaceforvariables.reswillgenerateaninitialvalueofzero.dbwillinitializesuccessivebytesofRAM.dwwillinitializesuccessivebytesofRAM,onewordatatime,inlow-byte/high-byteorder.

Formoreinformation,refertoRelocatableObjects.

Example

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

idataLimitLdw0LimitHdwD'300'GaindwD'5'Flagsdb0Stringdb'Hithere!'

SeeAlso

EXTERNGLOBALUDATAUDATA_ACSUDATA_OVRUDATA_SHR

IF-BeginConditionallyAssembledCodeBlock

Syntax

if<expr>

Description

Beginexecutionofaconditionalassemblyblock.If<expr>evaluatestotrue,thecodeimmediatelyfollowingtheifwillassemble.Otherwise,subsequentcodeisskippeduntilanelsedirectiveoranendifdirectiveisencountered.

AnexpressionthatevaluatestozeroisconsideredlogicallyFALSE.AnexpressionthatevaluatestoanyothervalueisconsideredlogicallyTRUE.Theifandwhiledirectivesoperateonthelogicalvalueofanexpression.ArelationalTRUEexpressionisguaranteedtoreturnanonzerovalue,FALSEavalueofzero.

if'smaybenestedupto16deep.

Example

ifversion==100;checkcurrentversionmovlw0x0amovwfio_1elsemovlw0x01amovwfio_2endif

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SeeAlso

ELSEENDIF

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

IFDEF-ExecuteIfSymbolhasBeenDefined

Syntax

ifdef<label>

Description

If<label>hasbeenpreviouslydefined,usuallybyissuinga#definedirectiveorbysettingthevalueontheMPASMassemblercommandline,theconditionalpathistaken.Assemblywillcontinueuntilamatchingelseorendifdirectiveisencountered.

Example

#definetesting1;settesting"on":ifdeftesting<executetestcode>;thispathwouldbeexecuted.endif

SeeAlso

#DEFINE#UNDEFINEELSEENDIFIFNDEF

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200

IFNDEF-ExecuteIfSymbolhasnotBeenDefined

Syntax

ifndef<label>

Description

If<label>hasnotbeenpreviouslydefined,orhasbeenundefinedbyissuingan#undefinedirective,thenthecodefollowingthedirectivewillbeassembled.Assemblywillbeenabledordisableduntilthenextmatchingelseorendifdirectiveisencountered.

Example

#definetesting1;settestingon:#undefinetesting1;settestingoffifndeftesting;ifnotintestingmode:;executethispathendifend;endofsource

SeeAlso

#DEFINE#UNDEFINEELSEENDIFIFDEF

Fax:(480)899-9210Microchip'sE-mailAddress

LIST-ListingOptions

Syntax

list[<list_option>,...,<list_option>]

Description

Occurringonalinebyitself,thelistdirectivehastheeffectofturninglistingoutputon,ifithadbeenpreviouslyturnedoff.Otherwise,oneofthefollowinglistoptionscanbesuppliedtocontroltheassemblyprocessorformatthelistingfile.

ListDirectiveOptions

Option Default Descriptionb=nnn 8 Settabspaces.

c=nnn 132 Setcolumnwidth.

f=<format> INHX8M Setthehexfileoutput.<format>canbeINHX32,INHX8M,orINHX8S.

free FIXED Usefree-formatparser.Providedforbackwardcompatibility.

fixed FIXED Usefixed-formatparser.

mm={ON|OFF} On Printmemorymapinlistfile.

n=nnn 60 Setlinesperpage.

p=<type> None Setprocessortype;forexample,PIC16C54.

pe=<type> None

Setprocessortypeandenableextendedinstructionset,forexample;LISTpe=PIC18F4620OnlyvalidwithprocessorswhichsupporttheextendedinstructionsetandthegenericprocessorPIC18CXX.Isoverriddenbycommand-lineoption/y-(disableextendedinstructionset).

r=<radix> hex Setdefaultradix:hex,dec,oct.

st={ON|OFF} On Printsymboltableinlistfile.

t={ON|OFF} Off Truncatelinesoflisting(otherwisewrap).

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

w={0|1|2}

0 Setthemessagelevel.SeeERRORLEVEL.

x={ON|OFF} On Turnmacroexpansiononoroff.

Note:Alllistoptionsareevaluatedasdecimalnumbers.

Example

listp=17c42,f=INHX32,r=DEC

SeeAlso

ERRORLEVELEXPANDNOEXPANDNOLISTPROCESSORRADIX

LOCAL-DeclareLocalMacroVariable

Syntax

local<label>[,<label>...]

Description

Declaresthatthespecifieddataelementsaretobeconsideredinlocalcontexttothemacro.<label>maybeidenticaltoanotherlabeldeclaredoutsidethemacrodefinition;therewillbenoconflictbetweenthetwo.

Ifthemacroiscalledrecursively,eachinvocationwillhaveitsownlocalcopy.

Example

<maincodesegment>::lenequ10;globalversionsizeequ20;notethatalocalvariable;maynowbecreatedandmodifiedtestmacrosizelocallen,label;locallenandlabellensetsize;modifylocallenlabelreslen;reservebufferlensetlen-20endm;endmacro

SeeAlso

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ENDMMACRO

MACRO-DeclareMacroDefinition

Syntax

<label>macro[<arg>,...,<arg>]

Description

Amacroisasequenceofinstructionsthatcanbeinsertedintheassemblysourcecodebyusingasinglemacrocall.Themacromustfirstbedefined,thenitcanbereferredtoinsubsequentsourcecode.

Argumentsarereadinfromthesourceline,storedinalinkedlistandthencounted.Themaximumnumberofargumentswouldbethenumberofargumentsthatwouldfitonthesourceline,afterthelabelandmacroterms.Themaximumsourcelinelengthis200.

Amacrocancallanothermacro,ormaycallitselfrecursively.Themaximumnumberofnestedmacrocallsis16.

PleaserefertoMacroLanguageformoreinformation.

Example

Readmacrodevice,buffer,countmovlwdevicemovwfram_20movlwbuffer;bufferaddressmovwfram_21movlwcount;bytecountcallsys_21;readfilecallendm

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SeeAlso

ENDMEXITMLOCAL

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MESSG-CreateUserDefinedMessage

Syntax

messg"<message_text>"

Description

Causesaninformationalmessagetobeprintedinthelistingfile.Themessagetextcanbeupto80characters.Issuingamessgdirectivedoesnotsetanyerrorreturncodes.

Example

mssg_macromacromessg"mssg_macro-001invokedwithoutargument"endm

SeeAlso

ERROR

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

NOEXPAND-TurnoffMacroExpansion

Syntax

noexpand

Description

Turnsoffmacroexpansioninthelistingfile.

SeeAlso

EXPAND

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

NOLIST-TurnoffListingOutput

Syntax

nolist

Description

Turnofflistingfileoutput.

SeeAlso

LIST

ORG-SetProgramOrigin

Syntax

[<label>]org<expr>

Description

Settheprogramoriginforsubsequentcodeattheaddressdefinedin<expr>.If<label>isspecified,itwillbegiventhevalueofthe<expr>.Ifnoorgisspecified,codegenerationwillbeginataddresszero.

ForPIC18CXXXdevices,onlyeven<expr>valuesareallowed.

Whengeneratinganobjectfile,theorgdirectiveisinterpretedasintroducinganabsoluteCODEsectionwithaninternallygeneratedname.Forexample:

L1:org0x200

isinterpretedas:

.scnnameCODE0x200L1:

where.scnnameisgeneratedbytheassembler,andwillbedistinctfromeverynamepreviouslygeneratedinthiscontext.

Example

int_1org0x20;Vector20codegoeshereint_2orgint_1+0x10

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;Vector30codegoeshere

SeeAlso

FILLRESEND

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

PAGE-InsertListingPageEject

Syntax

page

Description

Insertsapageejectintothelistingfile.

SeeAlso

LISTSUBTITLETITLE

PAGESEL-GeneratePageSelectingCode

Syntax

pagesel<label>

Description

Forusewhengeneratinganobjectfile.Aninstructiontothelinkertogeneratepageselectingcodetosetthepagebitstothepagecontainingthedesignated<label>.Onlyone<label>shouldbespecified.Nooperationscanbeperformedon<label>.<label>musthavebeenpreviouslydefined.

Thelinkerwillgeneratetheappropriatepageselectingcode.For12-bitcoredevices,theappropriatebitset/clearinstructionsontheSTATUSregisterwillbegenerated.For14-bitand16-bitcoredevices,MOVLWandMOVWFinstructionswillbegeneratedtomodifythePCLATH.Ifthedevicecontainsonlyonepageofprogrammemory,nocodewillbegenerated.

ForPIC18CXXXdevices,thiscommandwilldonothing.

Formoreinformation,refertoRelocatableObjects.

Example

pageselGotoDestgotoGotoDest:pageselCallDestcallCallDest

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SeeAlso

BANKISELBANKSEL

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

PROCESSOR-SetProcessorType

Syntax

processor<processor_type>

Description

Setstheprocessortypeto<processor_type>.

Example

processor16C54

SeeAlso

LIST

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

RADIX-SpecifyDefaultRadix

Syntax

radix<default_radix>

Description

Setsthedefaultradixfordataexpressions.Thedefaultradixishex.Validradixvaluesare:

hex-hexadecimal(base16)

dec-decimal(base10)oct-octal(base8)

Youmayalsospecifyaradixusingthelistdirective.Forspecifyingtheradixofconstants,seeNumericConstantsandRadix.

Example

radixdec

SeeAlso

LIST

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

RES-ReserveMemory

Syntax

[<label>]res<mem_units>

Description

Causesthememorylocationpointertobeadvancedfromitscurrentlocationbythevaluespecifiedin<mem_units>.Innon-relocatablecode,<label>isassumedtobeaprogrammemoryaddress.Inrelocatablecode(usingMPLINKlinker),rescanalsobeusedtoreservedatastorage.

Addresslocationsaredefinedinwordsfor12-,14-and16-bitPICmicroMCUs,andbytesforenhanced16-bitPICmicroMCUs.

Example

bufferres64;reserve64addresslocationsofstorage

SeeAlso

FILLORG

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SET-DefineanAssemblerVariable

Syntax

<label>set<expr>

Description

<label>isassignedthevalueofthevalidMPASMassemblerexpressionspecifiedby<expr>.Thesetdirectiveisfunctionallyequivalenttotheequdirectiveexceptthatsetvaluesmaybesubsequentlyalteredbyothersetdirectives.

Example

areaset0widthset0x12lengthset0x14areasetlength*widthlengthsetlength+1

SeeAlso

EQUVARIABLE

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SPACE-InsertBlankListingLines

Syntax

space<expr>

Description

Insert<expr>numberofblanklinesintothelistingfile.

Example

space3;Insertsthreeblanklines

SeeAlso

LIST

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

SUBTITLE-SpecifyProgramSubtitle

Syntax

subtitle"<sub_text>"

Description

<sub_text>isanASCIIstringenclosedindoublequotes,60charactersorlessinlength.Thisdirectiveestablishesasecondprogramheaderlineforuseasasubtitleinthelistingoutput.

Example

subtitle"diagnosticsection"

SeeAlso

LISTTITLE

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

TITLE-SpecifyProgramTitle

Syntax

title"<title_text>"

Description

<title_text>isaprintableASCIIstringenclosedindoublequotes.Itmustbe60charactersorless.Thisdirectiveestablishesthetexttobeusedinthetoplineofeachpageinthelistingfile.

Example

title"operationalcode,rev5.0"

SeeAlso

LISTSUBTITLE

MicrochipTechnologyInc.

UDATA-BeginanObjectFileUninitializedDataSection

Syntax

[<label>]udata[<RAMaddress>]

Description

Forusewhengeneratinganobjectfile.Declaresthebeginningofasectionofuninitializeddata.If<label>isnotspecified,thesectionisnamed.udata.Thestartingaddressisinitializedtothespecifiedaddressorwillbeassignedatlinktimeifnoaddressisspecified.Nocodecanbegeneratedinthissegment.Theresdirectiveshouldbeusedtoreservespacefordata.

Note:Twosectionsinthesamesourcefilemaynothavethesamename.

Formoreinformation,refertoRelocatableObjects.

Example

udataVar1res1Doubleres2

SeeAlso

EXTERNGLOBALIDATAUDATA_ACSUDATA_OVRUDATA_SHR

Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

UDATA_ACS-BeginanObjectFileAccessUninitializedDataSection

Syntax

[<label>]udata_acs[<RAMaddress>]

Description

Forusewhengeneratinganobjectfile.Declaresthebeginningofasectionofaccessuninitializeddata.If<label>isnotspecified,thesectionisnamed.udata_acs.Thestartingaddressisinitializedtothespecifiedaddressorwillbeassignedatlinktimeifnoaddressisspecified.ThisdirectiveisusedtodeclarevariablesthatareallocatedinaccessRAMofPIC18CXXXdevices.Nocodecanbegeneratedinthissegment.Theresdirectiveshouldbeusedtoreservespacefordata.

Note:Twosectionsinthesamesourcefilemaynothavethesamename.

Formoreinformation,refertoRelocatableObjects.

Example

udata_acsVar1res1Doubleres2

SeeAlso

EXTERNGLOBALIDATAUDATAUDATA_OVRUDATA_SHR

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

UDATA_OVR-BeginanObjectFileOverlayedUninitializedDataSection

Syntax

[<label>]udata_ovr[<RAMaddress>]

Description

Forusewhengeneratinganobjectfile.Declaresthebeginningofasectionofoverlayeduninitializeddata.If<label>isnotspecified,thesectionisnamed.udata_ovr.Thestartingaddressisinitializedtothespecifiedaddressorwillbeassignedatlinktimeifnoaddressisspecified.Thespacedeclaredbythissectionisoverlayedbyallotherudata_ovrsectionsofthesamename.Itisanidealwayofdeclaringtemporaryvariablessinceitallowsmultiplevariablestobedeclaredatthesamememorylocation.Nocodecanbegeneratedinthissegment.Theresdirectiveshouldbeusedtoreservespacefordata.

Note:Twosectionsinthesamesourcefilemaynothavethesamename.

Formoreinformation,refertoRelocatableObjects.

Example

Tempsudata_ovrTemp1res1Temp2res1Temp3res1Tempsudata_ovrLongTemp1res2;thiswillbeavariableatthe

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;samelocationasTemp1andTemp2LongTemp2res2;thiswillbeavariableatthe;samelocationasTemp3

SeeAlso

EXTERNGLOBALIDATAUDATAUDATA_ACSUDATA_SHR

UDATA_SHR-BeginanObjectFileSharedUninitializedDataSection

Syntax

[<label>]udata_shr[<RAMaddress>]

Description

Forusewhengeneratinganobjectfile.Declaresthebeginningofasectionofshareduninitializeddata.If<label>isnotspecified,thesectionisnamed.udata_shr.Thestartingaddressisinitializedtothespecifiedaddressorwillbeassignedatlinktimeifnoaddressisspecified.ThisdirectiveisusedtodeclarevariablesthatareallocatedinRAMthatissharedacrossallRAMbanks(i.e.unbankedRAM).Nocodecanbegeneratedinthissegment.Theresdirectiveshouldbeusedtoreservespacefordata.

Note:Twosectionsinthesamesourcefilemaynothavethesamename.

Formoreinformation,refertoRelocatableObjects.

Example

Tempsudata_shrTemp1res1Temp2res1Temp3res1

SeeAlso

EXTERNGLOBALIDATAUDATAUDATA_ACSUDATA_OVR

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

VARIABLE-DeclareSymbolVariable

Syntax

variable<label>[=<expr>][,<label>[=<expr>]...]

Description

CreatessymbolsforuseinMPASMassemblerexpressions.Variablesandconstantsmaybeusedinterchangeablyinexpressions.

Thevariabledirectivecreatesasymbolthatisfunctionallyequivalenttothosecreatedbythesetdirective.Thedifferenceisthatthevariabledirectivedoesnotrequirethatsymbolsbeinitializedwhentheyaredeclared.

Thevariablevaluescannotbeupdatedwithinanoperand.Youmustplacevariableassignments,increments,anddecrementsonseparatelines.

Example

Pleaserefertotheexamplegivenfortheconstantdirective.

SeeAlso

CONSTANTSET

WHILE-PerformLoopWhileConditionisTrue

Syntax

while<expr>:endw

Description

Thelinesbetweenthewhileandtheendwareassembledaslongas<expr>evaluatestoTRUE.AnexpressionthatevaluatestozeroisconsideredlogicallyFALSE.AnexpressionthatevaluatestoanyothervalueisconsideredlogicallyTRUE.ArelationalTRUEexpressionisguaranteedtoreturnanon-zerovalue;FALSEavalueofzero.

Awhileloopcancontainatmost100linesandberepeatedamaximumof256times.whileloopscanbenestedupto8deep.

Example

test_macmacrocountvariableii=0whilei<countmovlwii+=1endwendmstarttest_mac5

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

end

SeeAlso

ENDWIF

DirectiveUsage

HowtousetheMPASMassemblerdirectivelanguageisshownusingexamples.

Directivesareassemblercommandsthatappearinthesourcecodebutarenottranslateddirectlyintoopcodes.Theyareusedtocontroltheassembler:itsinput,output,anddataallocation.

Manyoftheassemblerdirectiveshavealternatenamesandformats.ThesemayexisttoprovidebackwardcompatibilitywithpreviousassemblersfromMicrochipandtobecompatiblewithindividualprogrammingpractices.Ifportablecodeisdesired,itisrecommendedthatprogramsbewrittenusingthespecificationscontainedwithinthisdocument.

Forareferencelistingofalldirectivesdiscussedinexampleshere,pleaseseeDirectives.

Note:AlthoughMPASMassemblerisoftenusedwithMPLINKobjectlinker,MPASMassemblerdirectivesarenotsupportedbyMPLINKlinker.SeeMPLINKobjectlinkerdocumentationformoreinformationonlinkeroptionstocontrollistingandhexfileoutput.

Therearesixbasictypesofdirectivesprovidedbytheassembler:

Note:Directivesarenotcase-sensitive,e.g.,cblockmaybeexecutedasCBLOCK,cblock,Cblock,etc.

ControlDirectives

ConditionalAssemblyDirectivesDataDirectivesListingDirectives

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroDirectivesObjectFileDirectives

Foralldirectivetypes:

AdditionalDirectiveExamples

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ControlDirectives

Controldirectivescontrolhowcodeisassembled.

ListofControlDirectives

Controldirectiveexamplesavailable:

MultipleDirectiveExample1

MultipleDirectiveExample2ORGPIC16CXXXExampleORGPIC18CXXXExampleRADIXExampleSET/EQUExampleUNDEFINE/DEFINEExampleVARIABLE/CONSTANTExample

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ConditionalAssemblyDirectives

Conditionalassemblydirectivespermitsectionsofconditionallyassembledcode.

ListofConditionalAssemblyDirectives

Conditionalassemblydirectiveexamplesavailable:

IF/ELSE/ENDIFExample

IFDEFExampleWHILE/ENDWExample

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DataDirectives

DataDirectivesarethosethatcontroltheallocationofmemoryandprovideawaytorefertodataitemssymbolically,thatis,bymeaningfulnames.

ListofDataDirectives

Datadirectiveexamplesavailable:

CBLOCK/ENDCExample

CONFIGPIC16CXXXExampleCONFIGPIC18CXXXExampleDAExampleDATAPIC16CXXXExampleDATAPIC18CXXXExampleDBPIC16CXXXExampleDBPIC18CXXXExampleDEPIC16CXXXExampleDEPIC18CXXXExampleFILLPIC16CXXXExampleFILLPIC18CXXXExampleIDLOCPIC16CXXXExampleIDLOCPIC18CXXXExampleRESExample

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListingDirectives

ListingDirectivesarethosedirectivesthatcontroltheMPASMassemblerlistingfileformat.Theyallowthespecificationoftitles,pagination,andotherlistingcontrol.Somelistingdirectivesalsocontrolhowcodeisassembled.

ListofListingDirectives

Listingdirectiveexamplesavailable:

ERRORExample

ERRORLEVELExampleMESSGExample

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroDirectives

Thesedirectivescontroltheexecutionanddataallocationwithinmacrobodydefinitions.

ListofMacroDirectives

Macrodirectiveexamplesavailable:

EXITMExample

LOCALExampleMACRO/ENDMExample

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ObjectFileDirectives

Thesedirectivesareusedonlywhencreatinganobjectfile.

ListofObjectFileDirectives

Objectfiledirectiveexamplesavailable:

BANKISELExample

BANKSELExampleCODEExampleGLOBAL/EXTERNExampleIDATAExamplePAGESELExampleUDATAExampleUDATA_ACSExampleUDATA_OVRExampleUDATA_SHRExample

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AdditionalDirectiveExamples

Shortexamplesofuseforeachdirectivearelistedundereachdirectivetopic.SeeDirectives.

Examplesofuseformultipledirectivesareavailablefromthefollowingsources:

readme.asm-SerialEEPROMSupport

ApplicationNotes,TechnicalBriefs

EmbeddedControlHandbook,Volume1(DS00092)

EmbeddedControlHandbook,Volume2MathLibrary(DS00167)EmbeddedControlHandbook,Update2000(DS00711)Website-http://www.microchip.comCodeExamplesandTemplates

MPLABIDEinstallationdirectory

Website-http://www.microchip.com

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

RelocatableObjects

SincetheintroductionofMPASMassemblerv2.00andMPLINKlinkerv1.00,youhavehadtheabilitytogenerateandlinkprecompiledobjectmodules.Writingsourcecodethatwillbeassembledtoanobjectmoduleisslightlydifferentfromgeneratingexecutablecodedirectlytoahexfile.MPASMassemblerroutinesdesignedforabsoluteaddressassemblywillrequireminormodificationstocompilecorrectlyintorelocatableobjectmodules.

HeaderFiles

ProgramMemoryInstructionOperandsRAMAllocationConfigurationBitsandIDLocationsAccessingLabelsFromOtherModulesPagingandBankingIssuesUnavailableDirectivesGeneratingtheObjectModuleCodeExamples

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

HeaderFiles

TheMicrochip-suppliedstandardheaderfiles(e.g.,p17c756.inc)shouldbeusedwhengeneratingobjectmodules.Theseheaderfilesdefinethespecialfunctionregistersforthetargetprocessor.

ProgramMemory

ProgrammemorycodemustbeprecededbyaCODEsectiondeclaration.

AbsoluteCode

StartCLRWOPTION:

RelocatableCode

CODEStartCLRWOPTION:

IfmorethanoneCODEsectionisdefinedinasourcefile,eachsectionmusthaveauniquename.Ifthenameisnotspecified,itwillbegiventhedefaultname.code.

Eachprogrammemorysectionmustbecontiguouswithinasinglesourcefile.Asectionmaynotbebrokenintopieceswithinasingesourcefile.

ThephysicaladdressofthecodecanbefixedbysupplyingtheoptionaladdressparameteroftheCODEdirective.Situationswherethismightbenecessaryare:

Specifyinginterruptvectors

Ensuringthatacodesegmentdoesnotoverlappageboundaries

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ExampleRelocatableCode

ResetCODEH'0lFF'GOTOStartMainCODECLRWOPTION

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

InstructionOperands

Therearesomerestrictionsinvolvinginstructionoperands.Instructionoperandsmustbeoftheform:

[HIGH|LOW|UPPER](<relocatablesymbol>+<constantoffset>)

where:

<relocatablesymbol>isanylabelthatdefinesaprogramordatamemoryaddress

<constantoffset>isanexpressionthatisresolvableatassemblytimetoavaluebetween-32768and32767

Either<relocatablesymbol>or<constantoffset>maybeomitted.

Operandsoftheform:

<relocatablesymbol>-<relocatablesymbol>

willbereducedtoaconstantvalueifbothsymbolsaredefinedinthesamecodeordatasection.

IfHIGHisused,onlybits8through15oftheexpressionwillbeused.IfLOWisused,onlybits0through7oftheexpressionwillbeused.IfUPPERisused,onlybits16through21oftheexpressionwillbeused.

RAMAllocation

RAMspacemustbeallocatedinadatasection.Fivetypesofdatasectionsareavailable:

UDATA-Uninitializeddata.Thisisthemostcommontypeofdatasection.Locationsreservedinthissectionarenotinitializedandcanbeaccessedonlybythelabelsdefinedinthissectionorbyindirectaccesses.

UDATA_ACS-Uninitializedaccessdata.ThisdatasectionisusedforvariablesthatwillbeplacedinaccessRAMofPIC18CXXXdevices.AccessRAMisusedasquickdataaccessforspecifiedinstructions.UDATA_OVR-Uninitializedoverlaiddata.Thisdatasectionis

usedforvariablesthatcanbedeclaredatthesameaddressasothervariablesinthesamemoduleorinotherlinkedmodules.Atypicaluseofthissectionisfortemporaryvariables.UDATA_SHR-Uninitializedshareddata.Thisdatasectionis

usedforvariablesthatwillbeplacedinRAMthatisunbankedorsharedacrossallbanks.IDATA-Initializeddata.Thelinkerwillgeneratealookuptable

thatcanbeusedtoinitializethevariablesinthissectiontothespecifiedvalues.Thelocationsreservedbythissectioncanbeaccessedonlybythelabelsdefinedinthissectionorbyindirectaccesses.

Thefollowingexampleshowshowadatadeclarationmightbecreated.

AbsoluteCode

CBLOCK0x20InputGain,OutputGain;Controlloopgains

HistoryVector;Mustbeinitializedto0Templ,Temp2,Temp3;UsedforinternalcalculationsENDC

RelocatableCode

IDATAHistoryVectorDB0UDATAInputGainRES1OutputGainRES1UDATA_OVRTemplRES1Temp2RES1Temp3RES1

Ifnecessary,thelocationofthesectionmaybefixedinmemorybysupplyingtheoptionaladdressparameter.Ifmorethanoneofeachsectiontypeisspecified,eachsectionmusthaveauniquename.Ifanameisnotprovided,thedefaultsectionnamesare:.idata,.udata,.udata_acs,.udata_shr,and.udata_ovr.

WhendefininginitializeddatainanIDATAsection,thedirectivesDB,DW,andDATAcanbeused.DBwilldefinesuccessivebytesofdatamemory.DWandDATAwilldefinesuccessivewordsofdatamemoryinlow-byte/high-byteorder.Thefollowingexampleshowshowdatawillbeinitialized.

RelocatableCode

00001LISTp=17C4400002IDATA000001020300003BytesDB1,2,300033412785600004WordsDWH'1234',H'5678'00074142430000005StringDB"ABC",0

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ConfigurationBitsandIDLocations

ConfigurationbitsandIDlocationscanstillbedefinedinarelocatableobjectusingthe__CONFIGand__IDLOCSdirectives.Onlyonelinkedmodulecanspecifythesedirectives.TheyshouldbeusedpriortodeclaringanyCODEsections.Afterusingthesedirectives,thecurrentsectionisundefined.

AccessingLabelsFromOtherModules

LabelsthataredefinedinonemoduleforuseinothermodulesmustbeexportedusingtheGLOBALdirective.LabelsmustbedefinedbeforetheyaredeclaredGLOBAL.ModulesthatusetheselabelsmustusetheEXTERNdirectivetodeclaretheexistenceoftheselabels.AnexampleofusingtheGLOBALandEXTERNdirectivesisshownbelow.

RelocatableCode,DefiningModule

UDATAInputGainRES1OutputGainRES1GLOBALInputGain,OutputGainCODEFilterGLOBALFilter:;Filtercode

RelocatableCode,ReferencingModule

EXTERNInputGain,OutputGain,FilterUDATAReadingRES1CODE...MOVLWGAIN1MOVWFInputGainMOVLWGAIN2MOVWFOutputGainMOVFReading,WCALLFilter

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

PagingandBankingIssues

Inmanycases,RAMallocationwillspanmultiplebanks,andexecutablecodewillspanmultiplepages.Inthesecases,itisnecessarytoperformproperbankandpageset-uptoproperlyaccessthelabels.However,sincetheabsoluteaddressesofthesevariableandaddresslabelsarenotknownatassemblytime,itisnotalwayspossibletoplacethepropercodeinthesourcefile.Forthesesituations,twonewdirectives,BANKSELandPAGESELhavebeenadded.Thesedirectivesinstructthelinkertogeneratethecorrectbankorpageselectingcodeforaspecifiedlabel.Anexampleofhowcodeshouldbeconvertedisshownbelow.

AbsoluteCode

LISTP=12C509#include"P12C509.INC"VarlEQUH'10'Var2EQUH'30'...MOVLWInitialValueBCFFSR,5MOVWFVarlBSFFSR,5MOVWFVar2BSFSTATUS,PA0CALLSubroutine...SubroutineCLRW;InPage1...RETLW0

RelocatableCode

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

LISTP=12C509#include"P12C509.INC"UDATAVarlRES1Var2RES1...CODEMOVLWInitialValueBANKSELVarlMOVWFVarlBANKSELVar2MOVWFVar2PAGESELSubroutineCALLSubroutine...SubroutineCLRW...RETLW0

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

UnavailableDirectives

Macrocapabilityandnearlyalldirectivesareavailablewhengeneratinganobjectfile.TheonlydirectivethatisnotallowedistheORGdirective.ThiscanbereplacedbyspecifyinganabsoluteCODEsegment,asshownbelow.

AbsoluteCode

ResetORGH'01FF'GOTOStart

RelocatableCode

ResetCODEH'0lFF'GOTOStart

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

GeneratingtheObjectModule

Oncethecodeconversioniscomplete,theobjectmoduleisgeneratedbyrequestinganobjectfileonthecommandlineorintheshellinterface.WhenusingMPASMassemblerforWindows,checkthecheckboxlabeled"ObjectFile."WhenusingtheDOScommandlineinterface,specifythe/ooptionandtoggle"AssembletoObjectFile"to"Yes."Theoutputfilewillhavea.oextension.

CodeExamples

ThefollowingisextractedfromtheexamplemultiplyroutinesgivenasasamplewithMPASMassembler.Mostofthecommentshavebeenstrippedforbrevity.

AbsoluteCodebecomesRelocatableCode,CallingFileandRelocatableCode,LibraryRoutine.

AbsoluteCode

LISTP=16C54#INCLUDE"P16C5X.INC"cblockH'020'mulcnd;8bitmultiplicandmulplr;8bitmultiplierH_byte;Highbyteofthe16bitresultL_byte;Lowbyteofthe16bitresultcount;loopcounterendcmpyclrfH_byteclrfL_bytemovlw8movwfcountmovfmulcnd,wbcfSTATUS,C;ClearcarrybitLooprrfmulplr,FbtfscSTATUS,CaddwfH_byte,FrrfH_byte,FrrfL_byte,Fdecfszcount,Fgotoloopretlw0;*******************************************************

;TestProgram;*******************************************************startclrwoptionmainmovfPORTB,wmovwfmulplr;multiplier(inmulplr)=05movfPORTB,Wmovwfmulcndcall_mcallmpy;TheresultisinF12&F13;H_byte&L_bytegotomainORG01FFhgotostartEND

Sinceaneight-by-eightbitmultiplyisauseful,genericroutine,itwouldbehandytobreakthisoffintoaseparateobjectfilethatcanbelinkedinwhenrequired.Theabovefilecanbebrokenintotwofiles:acallingfilerepresentinganapplicationandagenericroutinethatcouldbeincorporatedinalibrary.

RelocatableCode,CallingFile

LISTP=16C54#INCLUDE"P16C5x.INC"EXTERNmulcnd,mulplr,H_byte,L_byteEXTERNmpyCODEstartclrwoptionmainmovfPORTB,WmovwfmulplrmovfPORTB,Wmovwfmulcndcall_mcallmpy;TheresultisinH_byte&L_bytegotomain

MicrochipTechnologyInc.Microchip'sWebSite

ResetCODEH'0lFF'gotostartEND

RelocatableCode,LibraryRoutine

LISTP=16C54#INCLUDE"P16C5x.INC"UDATAmulcndRESl;8bitmultiplicandmulplrRES1;8bitmultiplierH_byteRES1;Highbyteofthe16bitresultL_byteRES1;Lowbyteofthe16bitresultcountRES1;loopcounterGLOBALmulcnd,mulplr,H_byte,L_byteCODEmpyGLOBALmpyclrfH_byteclrfL_bytemovlw8movwfcountmovfmuland,WbcfSTATUS,C;Clearcarrybitlooprrfmulplr,FbtfscSTATUS,CaddwfH_byte,FrrfH_byte,FrrfL_byte,Fdecfszcount,Fgotoloopretlw0END

Voice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroLanguage

Macrosareuserdefinedsetsofinstructionsanddirectivesthatwillbeevaluatedin-linewiththeassemblersourcecodewheneverthemacroisinvoked.

Macrosconsistofsequencesofassemblerinstructionsanddirectives.Theycanbewrittentoacceptarguments,makingthemquiteflexible.Theiradvantagesare:

Higherlevelsofabstraction,improvingreadabilityandreliability.

Consistentsolutionstofrequentlyperformedfunctions.Simplifiedchanges.Improvedtestability.

Applicationsmightincludecreatingcomplextables,frequentlyusedcode,andcomplexoperations.

MacroSyntax

MacroDirectivesDefinedMacroTextSubstitutionMacroUsageMacroCodeExamples

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroSyntax

MPASMassemblermacrosaredefinedaccordingtothefollowingsyntax:

<label>macro[<arg1>,<arg2>...,<argn>]::endm

where<label>isavalidassemblerlabeland<arg>isanynumberofoptionalargumentssuppliedtothemacro(thatwillfitonthesourceline.)Thevaluesassignedtotheseargumentsatthetimethemacroisinvokedwillbesubstitutedwherevertheargumentnameoccursinthebodyofthemacro.

ThebodyofamacromaybecomprisedofMPASMassemblerdirectives,PICmicroMCUassemblyinstructions,orMPASMassemblermacrodirectives(LOCALforexample.)TheassemblercontinuestoprocessthebodyofthemacrountilanEXITMorENDMdirectiveisencountered.

Note:Forwardreferencestomacrosarenotpermitted.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroDirectivesDefined

Therearedirectivesthatareuniquetomacrodefinitions.Theycannotbeusedoutofthemacrocontext.

MacroDirectives

Whenwritingmacros,youcanuseanyofthesedirectivesPLUSanyotherdirectivessupportedbytheassembler.

Note:Theprevioussyntaxofthe"dot"formatformacrospecificdirectivesisnolongersupported.Forcompatibilityreasons,oldASM17codethatusesthisformatwillassemblebyMPASMassembler,butasmentionedbefore,youareencouragedtowritenewcodebasedontheconstructsdefinedwithinthishelpfiletoensureupwardcompatibility.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroTextSubstitution

Stringreplacementandexpressionevaluationmayappearwithinthebodyofamacro.

Command Description<arg> Substitutetheargumenttextsuppliedaspartofthemacroinvocation.

#v(<expr>)Returntheintegervalueof<expr>.Typically,usedtocreateuniquevariablenameswithcommonprefixesorsuffixes.Cannotbeusedinconditionalassemblydirectives(e.g.IFDEF,WHILE).

Argumentsmaybeusedanywherewithinthebodyofthemacro,exceptaspartofnormalexpression.Forexample,thefollowingmacro:

define_tablemacrolocala=0whilea<3entry#v(a)dw0a+=1endwendmwheninvoked,wouldgenerate:entry0dw0entry1dw0entry2dw0entry3dw0

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MacroUsage

Oncethemacrohasbeendefined,itcanbeinvokedatanypointwithinthesourcemodulebyusingamacrocall,asdescribedbelow:

<macro_name>[<arg>,...,<arg>]

where<macro_name>isthenameofapreviouslydefinedmacroandargumentsaresuppliedasrequired.

Themacrocallitselfwillnotoccupyanylocationsinmemory.However,themacroexpansionwillbeginatthecurrentmemorylocation.Commasmaybeusedtoreserveanargumentposition.Inthiscase,theargumentwillbeanemptystring.Theargumentlististerminatedbywhitespaceorasemicolon.

TheEXITMdirectiveprovidesanalternatemethodforterminatingamacroexpansion.Duringamacroexpansion,thisdirectivecausesexpansionofthecurrentmacrotostopandallcodebetweentheEXITMandtheENDMdirectivesforthismacrotobeignored.Ifmacrosarenested,EXITMcausescodegenerationtoreturntothepreviouslevelofmacroexpansion.

MacroCodeExamples

Thefollowingareexamplesofmacros:

Eight-by-EightMultiply

ConstantCompare

Eight-by-EightMultiply

subtitle"macrodefinitions"page;;multiply-isaneightbyeightmultiplymacro,;executinginprogrammemory,optimizedforspeed,;straightlinecode.;;Thismacrohasfiveparametersasdefinedhere:;arg1-firsteightbitliteraltobemultiplied;arg2-secondeightbitliteraltobemultiplied;dest_hi-memorylocationforhighbyteofresult;dest_lo-memorylocationforlowbyteofresult;temp-memorylocationfortemporarystorage;;Duringtheexecutionofthismacro,thewregisteris;destroyed.;;Theresultofmultiplyisa16bitvaluestoredinthe;twoeightbitregisters(dest_hi,dest_lo);;ThismacroiswrittenforthePIC17C42.;;multiplymacroarg1,arg2,dest_hi,dest_lo,temp;

locali=0;Establishalocalindex;variableandinitializeit.;movlwarg1;Setuptheeightbitmovwftemp;literalmultiplierinthe;memorylocationtemp.;movlwarg2;Setuptheeightbit;literalmultiplicandinthe;wregister.;clrfdest_hi,F;Clearboththehighandclrfdest_lo,F;thelowdestination;registers.;bcfALUSTA,C;Clearthecarrybit.;whilei<8;Usethelooptocheckall;eightbitsofthe;multiplier(temp).;btfsctemp,i;Testthecurrentaddwfdest_hi,F;multiplierbit,iftemp,I;thenaddthemultiplicand;tothehighregister.;rrcfdest_hi,F;Foreachpassintherrcfdest_lo,F;loop,rightshifteach;destinationregisterusing;thecarrybit.;i+=1;Placethisincrementin;column1toavoid;Warning[207].endw;endm;

Themacrodeclaresalloftherequiredarguments.Inthiscase,therearefive.TheLOCALdirectivethenestablishesalocalvariable"i"thatwillbeusedasanindexcounter.Itisinitializedtozero.Anumberofassemblerinstructionsarethenincluded.Whenthemacroisexecuted,theseinstructionswillbewritteninlinewiththerestoftheassemblersourcecode.Themacrowritesthemultiplicationcodeusinganalgorithmthataddsforeachbitsetintheeightbitsofthemultiplierandusesrightshifts.TheWHILEdirectiveisusedforthisfunction,continuingtheloopuntil"I"isgreaterthanorequaltoeight.

ConstantCompare

Asanotherexample,ifthefollowingmacrowerewritten:

include"16cxx.reg";;comparefiletoconstantandjumpiffile;>=constant.;cfl_jgemacrofile,con,jump_tomovlwcon&0xffsubwffile,wbtfscstatus,carrygotojump_toendm

andinvokedby:

cfl_jgeswitch_val,max_switch,switch_on

itwouldproduce:

movlwmax_switch&0xffsubwfswitch_val,wbtfscstatus,carrygotoswitch_on

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ExpressionSyntaxandOperation

Variousexpressionformats,syntax,andoperationsusedbyMPASMassembleraredescribedhere.

TextStrings

NumericConstantsandRadixArithmeticOperatorsandPrecedence

TextStrings

A"string"isasequenceofanyvalidASCIIcharacter(ofthedecimalrangeof0to127)enclosedbydoublequotes.

Stringsmaybeofanylengththatwillfitwithina255columnsourceline.Ifamatchingquotemarkisfound,thestringends.Ifnoneisfoundbeforetheendoftheline,thestringwillendattheendoftheline.Whilethereisnodirectprovisionforcontinuationontoasecondline,itisgenerallynoproblemtouseasecondDWdirectiveforthenextline.

TheDWdirectivewillstoretheentirestringintosuccessivewords.Ifastringhasanoddnumberofcharacters(bytes),theDWandDATAdirectiveswillpadtheendofthestringwithonebyteofzero(00).

Ifastringisusedasaliteraloperand,itmustbeexactlyonecharacterlong,oranerrorwilloccur.

CodeExamples

Seetheexamplesbelowfortheobjectcodegeneratedbydifferentstatementsinvolvingstrings.

74657374696Edw"testingoutputstringone\n"67206F757470757420737472696E67206F6E650A#definestr"testingoutputstringtwo"B061movlw"a"74657374696Edata"testingfirstoutputstring"67206669727374206F757470

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

757420737472696E6700

EscapeCharacters

TheassembleracceptstheANSI`C'escapesequencestorepresentcertainspecialcontrolcharacters:

TABLE:ANSI`C'ESCAPESEQUENCESEscapeCharacter Description Hex

Value\a Bell(alert)character 07\b Backspacecharacter 08\f Formfeedcharacter 0C\n Newlinecharacter 0A\r Carriagereturncharacter 0D\t Horizontaltabcharacter 09\v Verticaltabcharacter 0B\\ Backslash 5C\? Questionmarkcharacter 3F\' Singlequote(apostrophe) 27\" Doublequotecharacter 22

\0OO Octalnumber(zero,Octaldigit,Octaldigit) \xHH Hexadecimalnumber

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

NumericConstantsandRadix

MPASMassemblersupportsthefollowingradixformsforconstants:hexadecimal,decimal,octal,binary,andASCII.Thedefaultradixishexadecimal;thedefaultradixdetermineswhatvaluewillbeassignedtoconstantsintheobjectfilewhenaradixisnotexplicitlyspecifiedbyabasedescriptor.

Note:Theradixfornumericconstantscanbedifferentfromthedefaultradixspecifedwiththedirectivesradixorlistr=.Also,allowabledefaultradicesarelimitedtohexadecimal,decimal,andoctal.

Constantscanbeoptionallyprecededbyaplusorminussign.Ifunsigned,thevalueisassumedtobepositive.

Note:Intermediatevaluesinconstantexpressionsaretreatedas32-bitunsignedintegers.Wheneveranattemptismadetoplaceaconstantinafieldforwhichitistoolarge,atruncationwarningwillbeissued.

Thefollowingtablepresentsthevariousradixspecifications:

TABLE:RADIXSPECIFICATIONSType Syntax Example

Decimal D'<digits>'.'<digits>'

D'100'.'100'

Hexadecimal H'<hex_digits>'0x<hex_digits>H'9f'0x9f

Octal O'<octal_digits>' O'777'Binary B'<binary_digits>' B'00111001'

ASCII A'<character>''<character>'

A'C''C'

ArithmeticOperatorsandPrecedence

ArithmaticoperatorsandtheirprecedencearelistedinTable:ArithmeticOperatorsandPrecedence.

Selectedoperatorsarediscussedingreaterdetailinsubsectionsfollowingthetable.

TABLE:ARITHMETICOPERATORSANDPRECEDENCEOperator Example

$ Current/Returnprogramcounter goto$+3( LeftParenthesis 1+(d*4)) RightParenthesis (Length+1)*256! ItemNOT(logicalcomplement) if!(a==b)- Negation(2'scomplement) -1*Length~ Complement flags=~flagshigh Returnhighbyte movlwhighCTR_Tablelow Returnlowbyte movlwlowCTR_Tableupper Returnupperbyte movlwupperCTR_Table* Multiply a=b*c/ Divide a=b/c% Modulus entry_len=tot_len%16+ Add tot_len=entry_len*8+1- Subtract entry_len=(tot-1)/8<< Leftshift flags=flags<<1>> Rightshift flags=flags>>1>= Greaterorequal ifentry_idx>=num_entries> Greaterthan ifentry_idx>num_entries< Lessthan ifentry_idx<num_entries<= Lessorequal ifentry_idx<=num_entries== Equalto ifentry_idx==num_entries= Notequalto ifentry_idx!=num_entries& BitwiseAND flags=flags&ERROR_BIT^ BitwiseexclusiveOR flags=flags^ERROR_BIT| BitwiseinclusiveOR flags=flags|ERROR_BIT&& LogicalAND if(len==512)&&(b==c)|| LogicalOR if(len==512)||(b==c)= Setequalto entry_index=0+= Addto,setequal entry_index+=1

-= Subtract,setequal entry_index-=1*= Multiply,setequal entry_index*=entry_length/= Divide,setequal entry_total/=entry_length%= Modulus,setequal entry_index%=8<<= Leftshift,setequal flags<<=3>>= Rightshift,setequal flags>>=3&= AND,setequal flags&=ERROR_FLAG|= InclusiveOR,setequal flags|=ERROR_FLAG^= ExclusiveOR,setequal flags^=ERROR_FLAG++ Increment i++-- Decrement i--

High/Low/Upper

Syntax

high<operand>low<operand>upper<operand>

Description

Theseoperatorsareusedtoreturnonebyteofamulti-bytelabelvalue.Thisisdonetohandledynamicpointercalculationsasmightbeusedwithtablereadandwriteinstructions.

Example

movlwlowsize;handlethelsb'smovpfwreg,lowsize_lomovlwhighsize;handlethemsb'smovpfwreg,highsize_hi

Increment/Decrement(++/--)

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Syntax

<variable>++<variable>--

Description

Incrementsordecrementsavariablevalue.Theseoperatorscanonlybeusedonalinebythemselves;theycannotbeembeddedwithinotherexpressionevaluation.

Example

LoopCount=4whileLoopCount>0rlfReg,fLoopCount--endw

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Troubleshooting

Errormessages,warningmessagesandgeneralmessagesareproducedbytheMPASMassembler.Thesemessagesalwaysappearinthelistingfiledirectlyaboveeachlineinwhichtheerroroccurred.

Themessagesarestoredintheerrorfile(.err)ifnoMPASMassembleroptionsarespecified.Ifthe/e-optionisused(turnserrorfileoff),thenthemessageswillappearonthescreen.Ifthe/q(quietmode)optionisusedwiththe/e-,thenthemessageswillnotdisplayonthescreenorinanerrorfile.Themessageswillstillappearinthelistingfile.

Limitationsoftheassemblertoolarealsolistedhere.

AssemblerErrors

AssemblerWarningsAssemblerMessagesAssemblerLimitations

AssemblerErrors

MPASMassemblererrorsarelistednumericallybelow:

101ERROR:

Usererror,invokedwiththeERRORdirective.

102Outofmemory.

Notenoughmemoryformacros,#definesorinternalprocessing.EliminateanyTSR's,closeanyopenapplications,andtryassemblingthefileagain.IfthiserrorwasobtainedusingtheRealModeDOSexecutable,tryusingeithertheWindowsversion(MPASMWIN)orDPMIversion(MPASM_DP)

103Symboltablefull.

Nomorememoryavailableforthesymboltable.EliminateanyTSR's,closeanyopenapplications,andtryassemblingthefileagain.IfthiserrorwasobtainedusingtheRealModeDOSexecutable,tryusingeithertheWindowsversion(MPASMWIN)orDPMIversion(MPASM_DP)

104Tempfilecreationerror.

Couldnotcreateatemporaryfile.Checktheavailablediskspace.

105Cannotopenfile.

Couldnotopenafile.Ifitisasourcefile,thefilemaynotexist.Ifitisanoutputfile,theoldversionmaybewriteprotected.

106Stringsubstitutiontoocomplex.

Toomuchnestingof#defines.

107Illegaldigit.

Anillegaldigitinanumber.Validdigitsare0-1forbinary,0-7foroctal,0-9fordecimal,and0-9,a-f,andA-Fforhexadecimal.

108Illegalcharacter.

Anillegalcharacterinalabel.Validcharactersforlabelsarealphabetic(a..f,A..F),numeric(0-9),theunderscore(_),andthequestionmark(?).Labelsmaynotbeginwithanumeric.

109Unmatched(

Anopenparenthesisdidnothaveamatchingcloseparenthesis.Forexample,"DATA(1+2".

110Unmatched)

Ancloseparenthesisdidnothaveamatchingopenparenthesis.Forexample,DATA1+2).

111Missingsymbol.

AnEQUorSETstatementdidnothaveasymboltoassignthevalueto.

112Missingoperator.

Anarithmeticoperatorwasmissingfromanexpression.Forexample,DATA12.

113Symbolnotpreviouslydefined.

Asymbolwasreferencedthathasnotyetbeendefined.Onlyaddressesmaybeusedasforwardreferences.Constantsandvariablesmustbedeclaredbeforetheyareused.

114Dividebyzero.

Divisionbyzeroencounteredduringanexpressionevaluation.

115Duplicatelabel.

Alabelwasdeclaredasaconstant(e.g.,withtheEQUorCBLOCKdirective)inmorethanonelocation.

116Addresslabelduplicatedordifferentinsecondpass.

Thesamelabelwasusedintwolocations.Alternately,thelabelwasusedonlyoncebutevaluatedtoadifferentlocationonthesecondpass.Thisoftenhappenswhenuserstrytowritepage-bitsettingmacrosthatgeneratedifferentnumbersofinstructionsbasedonthedestination.

117Addresswrappedaround0.

ThelocationcountercanonlyadvancetoFFFF.Afterthat,itwrapsbackto0.

118Overwritingpreviousaddresscontents.

Codewaspreviouslygeneratedforthisaddress.

119Codetoofragmented.

Thecodeisbrokenintotoomanypieces.Thiserrorisveryrare,andwillonlyoccurinsourcecodethatreferencesaddressesabove32K(includingconfigurationbits).

120Callorjumpnotallowedatthisaddress.

Acallorjumpcannotbemadetothisaddress.Forexample,CALLdestinationsonthePIC16C5xfamilymustbeinthelowerhalfofthepage.

121Illegallabel.

Labelsarenotallowedoncertaindirectivelines.Simplyputthelabelonitsownline,abovethedirective.Also,HIGH,LOW,PAGE,andBANKarenotallowedaslabels.

122Illegalopcode.

Tokenisnotavalidopcode.

123Illegaldirective.

Directiveisnotallowedfortheselectedprocessor;forexample,the

__IDLOCSdirectiveonthePIC17C42.

124Illegalargument.

Anillegaldirectiveargument;forexample,LISTSTUPID.

125Illegalcondition.

Abadconditionalassembly.Forexample,anunmatchedENDIF.

126Argumentoutofrange.

Opcodeordirectiveargumentoutofthevalidrange;forexample,TRIS10.

127Toomanyarguments.

Toomanyargumentsspecifiedforamacrocall.

128Missingargument(s).

Notenoughargumentsforamacrocalloranopcode.

129Expected.

Expectedacertaintypeofargument.Theexpectedlistwillbeprovided.

130Processortypepreviouslydefined.

Adifferentfamilyofprocessorisbeingselected.

131Processortypeisundefined.

Codeisbeinggeneratedbeforetheprocessorhasbeendefined.Notethatuntiltheprocessorisdefined,theopcodesetisnotknown.

132Unknownprocessor.

Theselectedprocessorisnotavalidprocessor.

133HexfileformatINHX32required.

Anaddressabove32Kwasspecified.Forexample,specifyingtheconfigurationbitsonthePIC17CXXXfamily.

134Illegalhexfileformat.

AnillegalhexfileformatwasspecifiedintheLISTdirective.

135Macronamemissing.

Amacrowasdefinedwithoutaname.

136Duplicatemacroname.

Amacronamewasduplicated.

137Macrosnestedtoodeep.

Themaximummacronestinglevelwasexceeded.

138Includefilesnestedtoodeep.

Themaximumincludefilenestinglevelwasexceeded.

139Maximumof100linesinsideWHILE-ENDW.

AWHILE-ENDWcancontainatmost100lines.

140WHILEmustterminatewithin256iterations.

AWHILE-ENDWloopmustterminatewithin256iterations.Thisistopreventinfiniteassembly.

141WHILEsnestedtoodeep.

ThemaximumWHILE-ENDWnestinglevelwasexceeded.

142IFsnestedtoodeep.

ThemaximumIFnestinglevelwasexceeded.

143Illegalnesting.

Macros,IF'sandWHILE'smustbecompletelynested;theycannotoverlap.IfyouhaveanIFwithinaWHILEloop,theENDIFmustcomebeforetheENDW.

144UnmatchedENDC.

ENDCfoundwithoutaCBLOCK.

145UnmatchedENDM.

ENDMfoundwithoutaMACROdefinition.

146UnmatchedEXITM.

EXITMfoundwithoutaMACROdefinition.

147Directivenotallowedwhengeneratinganobjectfile.

TheORGdirectiveisnotallowedwhengeneratinganobjectfile.Instead,declareadataorcodesection,specifyingtheaddressifnecessary.

148Expandedsourcelineexceeded200characters.

Themaximumlengthofasourceline,after#DEFINEandmacroparametersubstitution,is200characters.Notethat#DEFINEsubstitutiondoesnotincludecomments,butmacroparametersubstitutiondoes.

149Directiveonlyallowedwhengeneratinganobjectfilesection.

Certaindirectives,suchasGLOBALandEXTERN,onlyhavemeaningwhenanobjectfileisgenerated.Theycannotbeusedwhengeneratingabsolutecode.

150Labelsmustbedefinedinacodeordatasectionwhenmakinganobjectfile.

Whengeneratinganobjectfile,alldataandcodeaddresslabels

mustbedefinedinsideadataorcodesection.SymbolsdefinedbytheEQUandSETdirectivescanbedefinedoutsideofasection.

151Operandcontainsunresolvablelabelsoristoocomplex.

Whengeneratinganobjectfile,operandsmustbeoftheform[HIGH|LOW]([<relocatableaddresslabel>]+[<offset>]).

152Executablecodeanddatamustbedefinedinanappropriatesection.

Whengeneratinganobjectfile,allexecutablecodeanddatadeclarationsmustbeplacedwithinappropriatesections.

153PageorBankbitscannotbeevaluatedfortheoperand.

TheoperandofaPAGESEL,BANKSELorBANKISELdirectivemustbeoftheform<relocatableaddresslabel>or<constant>.

154Eachobjectfilesectionmustbecontiguous.

Objectfilesections,exceptUDATA_OVRsections,cannotbestoppedandrestartedwithinasinglesourcefile.Toresolvethisproblem,eithernameeachsectionwithitsownnameormovethecodeanddatadeclarationssuchthateachsectioniscontiguous.Thiserrorwillalsobegeneratediftwosectionsofdifferenttypesaregiventhesamename.

155Alloverlaidsectionsofthesamename

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

musthavethesamestartingaddress.

IfmultipleUDATA_OVRsectionswiththesamenamearedeclared,theymustallhavethesamestartingaddress.

156Operandmustbeanaddresslabel.

Whengeneratingobjectfiles,onlyaddresslabelsincodeordatasectionsmaybedeclaredglobal.VariablesdeclaredbytheSETorEQUdirectivesmaynotbeexported.

157UNKNOWNERROR.

Anerrorhasoccurredwhichtheassemblercannotunderstand.Itisnotanyoftheerrorsdescribedinthisappendix.ContactyourMicrochipFieldApplicationEngineer(FAE)ifyoucannotdebugthiserror.

AssemblerWarnings

MPASMassemblerwarningsarelistednumericallybelow:

201Symbolnotpreviouslydefined.

Symbolbeing#undefinedwasnotpreviouslydefined.

202Argumentoutofrange.Leastsignificantbitsused.

Argumentdidnotfitintheallocatedspace.Forexample,literalsmustbe8bits.

203Foundopcodeincolumn1.

Anopcodewasfoundincolumnone,whichisreservedforlabels.

204Foundpseudo-opincolumn1.

Apseudo-opwasfoundincolumnone,whichisreservedforlabels.

205Founddirectiveincolumn1.

Adirectivewasfoundincolumnone,whichisreservedforlabels.

206Foundcalltomacroincolumn1.

Amacrocallwasfoundincolumnone,whichisreservedforlabels.

207Foundlabelaftercolumn1.

Alabelwasfoundaftercolumnone,whichisoftenduetoamisspelledopcode.

208Labeltruncatedat32characters.

Maximumlabellengthis32characters.

209Missingquote.

Atextstringorcharacterwasmissingaquote.Forexample,DATA'a.

210Extra),

Anextracommawasfoundattheendoftheline.

211Extraneousargumentsontheline.

Extraargumentswerefoundontheline.Thesewarningsshouldbeinvestigated,sincetheyareoftenindicationsofthefree-formatparserinterpretingsomethinginamannerotherthanwasintended(tryassemblingOPTIONEQU0x81withLISTFREE).

212Expected

Expectedacertaintypeofargument.Adescriptionshouldbeprovided.Forthewarning,anassumptionismadeabouttheargument.

213TheEXTERNdirectiveshouldonlybe

usedwhenmakinga.ofile.

TheEXTERNdirectiveonlyhasmeaningifanobjectfileisbeingcreated.ThiswarninghasbeensupersededbyError149.

214Unmatched(

Anunmatchedparenthesiswasfound.Thewarningisusediftheparenthesisisnotusedforindicatingorderofevaluation.

215Processorsupersededbycommandline.Verifyprocessorsymbol.

Theprocessorwasspecifiedonthecommandlineaswellasinthesourcefile.Thecommandlinehasprecedence.

216Radixsupersededbycommandline.

Theradixwasspecifiedonthecommandlineaswellasinthesourcefile.Thecommandlinehasprecedence.

217Hexfileformatspecifiedoncommandline.

Thehexfileformatwasspecifiedonthecommandlineaswellasinthesourcefile.Thecommandlinehasprecedence.

218ExpectedDEC,OCT,HEX.WilluseHEX.

Badradixspecification.

219InvalidRAMlocationspecified.

Ifthe__MAXRAMand__BADRAMdirectivesareused,thiswarningflagsuseofanyRAMlocationsdeclaredasinvalidbythesedirectives.Notethattheprovidedheaderfilesinclude__MAXRAMand__BADRAMforeachprocessor.

220Addressexceedsmaximumrangeforthisprocessor.

AROMlocationwasspecifiedthatexceedstheprocessor'smemorysize.

221Invalidmessagenumber.

Themessagenumberspecifiedfordisplayingorhidingisnotavalidmessagenumber.

222Errormessagescannotbedisabled.

ErrormessagescannotbedisabledwiththeERRORLEVELcommand.

223Redefiningprocessor

TheselectedprocessorisbeingreselectedbytheLISTorPROCESSORdirective.

224Useofthisinstructionisnotrecommended.

UseoftheTRISandOPTIONinstructionsisnotrecommendedfor

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

aPIC16CXXXdevice.

225Invalidlabelinoperand.

Operandwasnotavalidaddress.Forexample,iftheusertriedtoissueaCALLtoaMACROname.

226UNKNOWNWARNING

Awarninghasoccurredwhichtheassemblercannotunderstand.Itisnotanyofthewarningsdescribedinthisappendix.ContactyourMicrochipFieldApplicationEngineer(FAE)ifyoucannotdebugthiswarning.

AssemblerMessages

MPASMassemblermessagesarelistednumericallybelow:

301MESSAGE:

Usermessage,invokedwiththeMESSGdirective.

302Registerinoperandnotinbank0.Ensurethatbankbitsarecorrect.

Registeraddresswasspecifiedbyavaluethatincludedthebankbits.Forexample,RAMlocationsinthePIC16CXXXarespecifiedwith7bitsintheinstructionandoneortwobankbits.

303Programwordtoolarge.Truncatedtocoresize.

ProgramwordsforthePIC16C5Xmayonlybe12-bits;programwordsforthePIC16CXXXmayonlybe14-bits.

304IDLocationsvaluetoolarge.Lastfourhexdigitsused.

OnlyfourhexdigitsareallowedfortheIDlocations.

305Usingdefaultdestinationof1(file).

Ifnodestinationbitisspecified,thedefaultisused.

306Crossingpageboundary-ensurepagebitsareset.

Generatedcodeiscrossingapageboundary.

307Settingpagebits.

PagebitsarebeingsetwiththeLCALLorLGOTOpseudo-op.

308Warninglevelsupersededbycommandlinevalue.

Thewarninglevelwasspecifiedonthecommandlineaswellasinthesourcefile.Thecommandlinehasprecedence.

309Macroexpansionsupersededbycommandline.

Macroexpansionwasspecifiedonthecommandlineaswellasinthesourcefile.Thecommandlinehasprecedence.

310SupersedingcurrentmaximumRAMandRAMmap.

The__MAXRAMdirectivehasbeenusedpreviously.

312PageorBankselectionnotneededforthisdevice.Nocodegenerated.

IfadevicecontainsonlyoneROMpageorRAMbank,nopageorbankselectionisrequired,andanyPAGESEL,BANKSEL,or

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

BANKISELdirectiveswillnotgenerateanycode.

313CBLOCKconstantswillstartwithavalueof0.

IfthefirstCBLOCKinthesourcefilehasnostartingvaluespecified,thismessagewillbegenerated.

314UNKNOWNMESSAGE

Amessagehasoccurredwhichtheassemblercannotunderstand.Itisnotanyofthemessagesdescribedinthisappendix.ContactyourMicrochipFieldApplicationEngineer(FAE)ifyoucannotdebugthismessage.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

AssemblerLimitations

GeneralLimitations

MPASMassembleronlylooksinthepathoftheexecutableorthefilebeingassembledforincludedfiles.Therefore,IncludePathinformationenteredintheMPLABIDEEditProjectdialogwillNOTbeusedbytheassembler.

Sourcelinelimit(expanded)=200charactersFilenamelimit=8.3format

DirectiveLimitations

whilenestlimit=8deepwhilelooplimit=100lineswhileiterationlimit=256

ifnestlimit=16deepincludenestlimit=5levelsincludemax.numberoffiles=255macronestlimit=16deepmacrosourcelinelimit(expanded)=

200charactersDonotuse#includesinmacros.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

InstructionSets

PICmicroMCUinstructionsetsareusedindevelopingapplicationswithMPASMassembler,MPLINKobjectlinkerandMPLIBobjectlibrarian.

Instructionsarelistedherebasedondevicecoresize.Asofthetimeofpublicationofthisdocument,thefollowingcoresizesmaptothefollowingdevices:

12-BitCoreDevices:PIC12C5XX,PIC12CE5XX,PIC16X5X,PIC16C505

14-BitCoreDevices:PIC12C67X,PIC12CE67X,PIC12F629/675,PIC16XXXX16-BitCoreDevices:PIC17CXXXExtended16-BitCoreDevices:PIC18XXXXX

Topicscoveredare:

KeytoPICmicroFamilyInstructionSets

12-BitCoreInstructionSet14-BitCoreInstructionSet16-BitCoreInstructionSetKeytoExtended16-BitCoreInstructionSetExtended16-BitCoreInstructionSet

KeytoPICmicroFamilyInstructionSets

Field DescriptionRegisterFiles

dest DestinationeithertheWREGregisterorthespecifiedregisterfilelocation.Seed.f Registerfileaddress(5-bit,7-bitor8-bit).p Peripheralregisterfileaddress(5-bit).r PortforTRIS.

xDon'tcare(`0'or`1').Theassemblerwillgeneratecodewithx=0.ItistherecommendedformofuseforcompatibilitywithallMicrochipsoftwaretools.

Literals

k

Literalfield,constantdataorlabel.k4-bit.kk8-bit.kkk12-bit.

Bits

b Bitaddresswithinan8-bitfileregister(0to7).

dDestinationselectbit.d=0:storeresultinWREGd=1:storeresultinfileregisterf(default)

iTablepointercontrol.i=0:donotchange.i=1:incrementafterinstrucitonexecution.

sDestinationselectbit.s=0:storeresultinfileregisterfandWREGs=1:storeresultinfileregisterf(default)

tTablebyteselect.t=0:performoperationonlowerbyte.t=1:performoperationonupperbyte.

'' Bitvalues,asopposedtoHexvalue.NamedRegistersBSR BankSelectRegister.UsedtoselectthecurrentRAMbank.OPTION OPTIONRegister.PCL ProgramCounterLowByte.PCH ProgramCounterHighByte.PCLATH ProgramCounterHighByteLatch.PCLATU ProgramCounterUpperByteLatch.PRODH ProductofMultiplyHighByte.PRODL ProductofMultiplyLowByte.TBLATH TableLatch(TBLAT)HighByte.TBLATL TableLatch(TBLAT)LowByte.

TBLPTR 16-bitTablePointer(TBLPTRH:TBLPTRL).PointstoaProgramMemorylocation.WREG Workingregister(accumulator).NamedBitsC,DC,Z,OV,N ALUStatusbits:Carry,DigitCarry,Zero,Overflow,Negative.

TO Time-outbit.PD Power-downbit.GIE GlobalInterruptEnablebit(s).NamedDeviceFeaturesPC ProgramCounter.TOS Top-of-Stack.WDT WatchdogTimer.Misc.Descriptors() Contents.→,↔ Assignedto.<> Registerbitfield.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

12-BitCoreInstructionSet

Microchip'sbase-line8-bitmicrocontrollerfamilyusesa12-bitwideinstructionset.Allinstructionsexecuteinasingleinstructioncycleunlessotherwisenoted.AnyunusedopcodeisexecutedasaNOP.

Theinstructionsetisgroupedintothefollowingcatagories:Byte-orientedfileregisteroperations,bit-orientedfileregisteroperations,andcoreliteralandcontroloperations.Instructionsarelistedbycatagoryinthetablesbelow.InstructionopcodeisshowinHexbycertainmakingassumptions,eitherlistedinthekeyorasafootnote.Formoreinformationontheopcodebitvaluesforeachinstruction,aswellasthenumberofcyclesperinstruction,statusbitsaffectedandcompleteinstructiondetails,seethereleventdevicedatasheet.

TABLE:12-BITCOREBYTE-ORIENTEDFILEREGISTEROPERATIONS

Hex Mnemonic Description Function1Ef* ADDWF f,d AddWandf WREG+f→dest

16f* ANDWF f,d ANDWandf WREG.AND.f→dest

06f CLRF f Clearf 0→f

040 CLRW ClearW 0→WREG

26f* COMF f,d Complementf .NOT.f→dest

0Ef* DECF f,d Decrementf f-1→dest

2Ef* DECFSZ f,d Decrementf,skipifzero f-1→dest,skipifzero

2Af* INCF f,d Incrementf f+1→dest

3Ef* INCFSZ f,d Incrementf,skipifzero f+1→dest,skipifzero

12f* IORWF f,d InclusiveORWandf WREG.OR.f→dest

22f* MOVF f,d Movef f→dest

02f MOVWF f MoveWtof WREG→f

000 NOP Nooperation

36f* RLF f,d Rotateleftf

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

32f* RRF f,d Rotaterightf

0Af* SUBWF f,d SubtractWfromf f-WREG→dest

3Af* SWAPF f,d Swaphalvesf f(0:3)↔f(4:7)→dest

1Af* XORWF f,d ExclusiveORWandf WREG.XOR.f→dest*Assumingdefaultbitvalueford.

TABLE:12-BITCOREBIT-ORIENTEDFILEREGISTEROPERATIONS

Hex Mnemonic Description Function4bf BCF f,b Bitclearf 0→f(b)

5bf BSF f,b Bitsetf 1→f(b)

6bf BTFSC f,b Bittest,skipifclear skipiff(b)=0

7bf BTFSS f,b Bittest,skipifset skipiff(b)=1

TABLE:12-BITCORELITERALANDCONTROLOPERATIONSHex Mnemonic Description FunctionEkk ANDLW kk ANDliteralandW kk.AND.WREG→WREG

9kk CALL kk Callsubroutine PC+1→TOS,kk→PC

004 CLRWDT Clearwatchdogtimer 0→WDT(andPrescalerifassigned)

Akk GOTO kk Gotoaddress(kisninebits) kk→PC(9bits)

Dkk IORLW kk Incl.ORliteralandW kk.OR.WREG→WREG

Ckk MOVLW kk MoveLiteraltoW kk→WREG

002 OPTION LoadOPTIONRegister WREG→OPTIONRegister

8kk RETLW kk ReturnwithliteralinW kk→WREG,TOS→PC

003 SLEEP GointoStandbyMode 0→WDT,stoposcillator

00r TRIS r Tristateportr WREG→I/Ocontrolregr

Fkk XORLW kk ExclusiveORliteralandW kk.XOR.WREG→WREG

14-BitCoreInstructionSet

Microchip'smid-range8-bitmicrocontrollerfamilyusesa14-bitwideinstructionset.Thisinstructionsetconsistsof36instructions,eachasingle14-bitwideword.Mostinstructionsoperateonafileregister,f,andtheworkingregister,WREG(accumulator).TheresultcanbedirectedeithertothefileregisterortheWREGregisterortobothinthecaseofsomeinstructions.Afewinstructionsoperatesolelyonafileregister(BSF,forexample).

Theinstructionsetisgroupedintothefollowingcatagories:Byte-orientedfileregisteroperations,bit-orientedfileregisteroperations,andcoreliteralandcontroloperations.Instructionsarelistedbycatagoryinthetablesbelow.InstructionopcodeisshowinHexbycertainmakingassumptions,eitherlistedinthekeyorasafootnote.Formoreinformationontheopcodebitvaluesforeachinstruction,aswellasthenumberofcyclesperinstruction,statusbitsaffectedandcompleteinstructiondetails,seethereleventdevicedatasheet.

TABLE:14-BITCOREBYTE-ORIENTEDFILEREGISTEROPERATIONS

Hex Mnemonic Description Function07df ADDWF f,d AddWandf W+f→d

05df ANDWF f,d ANDWandf W.AND.f→d

01'1'f CLRF f Clearf 0→f

01xx CLRW ClearW 0→W

09df COMF f,d Complementf .NOT.f→d

03df DECF f,d Decrementf f-1→d

0Bdf DECFSZ f,d Decrementf,skipifzero f-1→d,skipif0

0Adf INCF f,d Incrementf f+1→d

0Fdf INCFSZ f,d Incrementf,skipifzero f+1→d,skipif0

04df IORWF f,d InclusiveORWandf W.OR.f→d

08df MOVF f,d Movef f→d

00'1'f MOVWF f MoveWtof W→f

0000 NOP Nooperation

0Ddf RLF f,d Rotateleftf

0Cdf RRF f,d Rotaterightf

02df SUBWF f,d SubtractWfromf f-W→d

0Edf SWAPF f,d Swaphalvesf f(0:3)↔f(4:7)→d

06df XORWF f,d ExclusiveORWandf W.XOR.f→d

TABLE:14-BITCOREBIT-ORIENTEDFILEREGISTEROPERATIONS

Hex Mnemonic Description Function4bf BCF f,b Bitclearf 0→f(b)

5bf BSF f,b Bitsetf 1→f(b)

6bf BTFSC f,b Bittest,skipifclear skipiff(b)=0

7bf BTFSS f,b Bittest,skipifset skipiff(b)=1

TABLE:14-BITCORELITERALANDCONTROLOPERATIONSHex Mnemonic Description Function

3Ekk ADDLW kk AddliteraltoW kk+WREG→WREG

39kk ANDLW kk ANDliteralandW kk.AND.WREG→WREG

2'0'kkk CALL kkk Callsubroutine PC+1→TOS,kk→PC

0064 CLRWDT Clearwatchdogtimer 0→WDT(andPrescalerifassigned)

2'1'kkk GOTO kkk Gotoaddress(kisninebits) kk→PC(9bits)

38kk IORLW kk Incl.ORliteralandW kk.OR.WREG→WREG

30kk MOVLW kk MoveLiteraltoW kk→WREG

0062 OPTION LoadOPTIONregister WREG→OPTIONRegister

0009 RETFIE ReturnfromInterrupt TOS→PC,1→GIE

34kk RETLW kk ReturnwithliteralinW kk→WREG,TOS→PC

0008 RETURN Returnfromsubroutine TOS→PC

0063 SLEEP GointoStandbyMode 0→WDT,stoposcillator

3Ckk SUBLW kk SubtractWfromliteral kk-WREG→WREG

006r TRIS r Tristateportr WREG→I/Ocontrolregr

3Akk XORLW kk ExclusiveORliteralandW kk.XOR.WREG→WREG

TABLE:12-BIT/14-BITCORESPECIALINSTRUCTIONMNEMONICS

Mnemonic Description EquivalentOperation(s) Status

BTFSC 3,0

ADDCF f,d AddCarrytoFile INCF f,d Z

ADDDCF f,d AddDigitCarrytoFile BTFSCINCF

3,1f,d Z

B k Branch GOTO k -

BC k BranchonCarry BTFSCGOTO

3,0k -

BDC k BranchonDigitCarry BTFSCGOTO

3,1k -

BNC k BranchonNoCarry BTFSSGOTO

3,0k -

BNDC k BranchonNoDigitCarry BTFSSGOTO

3,1k -

BNZ k BranchonNoZero BTFSSGOTO

3,2k -

BZ k BranchonZero BTFSCGOTO

3,2k -

CLRC ClearCarry BCF 3,0 -

CLRDC ClearDigitCarry BCF 3,1 -

CLRZ ClearZero BCF 3,2 -

LCALL k LongCallBCF/BSFBCF/BSFCALL

0x0A,30x0A,4k

LGOTO k LongGOTOBCF/BSFBCF/BSFGOTO

0x0A,30x0A,4k

MOVFW f MoveFiletoW MOVF f,0 Z

NEGF f,d NegateFile COMFINCF

f,1f,d Z

SETC SetCarry BSF 3,0 -

SETDC SetDigitCarry BSF 3,1 -

SETZ SetZero BSF 3,2 -

SKPC SkiponCarry BTFSS 3,0 -

SKPDC SkiponDigitCarry BTFSS 3,1 -

SKPNC SkiponNoCarry BTFSC 3,0 -

SKPNDC SkiponNoDigitCarry BTFSC 3,1 -

SKPNZ SkiponNonZero BTFSC 3,2 -

SKPZ SkiponZero BTFSS 3,2 -

SUBCF f,d SubtractCarryfromFile BTFSCDECF

3,0f,d Z

SUBDCF f,d SubtractDigitCarryfromFile BTFSC 3,1 Z

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DECF f,dTSTF f TestFile MOVF f,1 Z

16-BitCoreInstructionSet

Microchip'shigh-performance8-bitmicrocontrollerfamilyusesa16-bitwideinstructionset.Thisinstructionsetconsistsof55instructions,eachasingle16-bitwideword.Mostinstructionsoperateonafileregister,f,andtheworkingregister,WREG(accumulator).TheresultcanbedirectedeithertothefileregisterortheWREGregisterortobothinthecaseofsomeinstructions.Somedevicesinthisfamilyalsoincludehardwaremultiplyinstructions.Afewinstructionsoperatesolelyonafileregister(BSFforexample).

Theinstructionsetisgroupedintothefollowingcatagories:Byte-orientedfileregisteroperations,bit-orientedfileregisteroperations,andcoreliteralandcontroloperations.Instructionsarelistedbycatagoryinthetablesbelow.InstructionopcodeisshowinHexbycertainmakingassumptions,eitherlistedinthekeyorasafootnote.Formoreinformationontheopcodebitvaluesforeachinstruction,aswellasthenumberofcyclesperinstruction,statusbitsaffectedandcompleteinstructiondetails,seethereleventdevicedatasheet.

TABLE:16-BITBYTE-ORIENTEDFILEREGISTEROPERATIONSHex Mnemonic Description Function0Ff* ADDWF f,d AddWREGtoF (WREG+f)→dest

11f* ADDWFC f,d AddWREGandCarrytof (WREG+f+C)→dest

0Bf* ANDWF f,d ANDWREGwithf (WREG.AND.f)→dest

29f* CLRF f,s Cleardest 0x00→dest

13f* COMF f,d Complementf .NOT.f→dest

31f CPFSEQ f Comparef,WREG,skipiff=WREG f-WREG,skipiff=WREG

32f CPFSGT f Comparef,WREG,skipiff>WREG f-WREG,skipiff>WREG

30f CPFSLT f Comparef,WREG,skipiff<WREG f-WREG,skipiff<WREG

2Ff* DAW f,s Dec.adjustWREG,storeindest WREGadjusted→dest

07f* DECF f,d Decrementf (f-1)→dest

17f* DECFSZ f,d Decrementf,skipif0 (f-1)→dest,skipif0

27f* DCFSNZ f,d Decrementf,skipifnot0 (f-1)→dest,skipifnot0

15f* INCF f,d Incrementf (f+1)→dest

1Ff* INCFSZ f,d Incrementf,skipifzero (f+1)→dest,skipif0

25f* INFSNZ f,d Incrementf,skipifnotzero (f+1)→dest,skipifnot0

09f* IORWF f,d InclusiveorWREGwithf (WREG.OR.f)→dest

6pf MOVFP f,p Moveftop f→p

4pf MOVPF p,f Moveptof p→f

01f MOVWF f MoveWREGtoF WREG→f

34f MULWF f MultiplyWREGandf (WREGxf)→PRODH:PRODL

2Df* NEGW f,s NegateWREG,storeindest -WREG→dest

0000 NOP Nooperation Nooperation

1Bf* RLCF f,d Rotateleftthroughcarry

23f* RLNCF f,d Rotateleft(nocarry)

19f* RRCF f,d Rotaterightthroughcarry

21f* RRNCF f,d Rotateright(nocarry)

2Af* SETF f,s Setdest 0xFF→dest

05f* SUBWF f,d SubtractWREGfromf (f-WREG)→d

03f* SUBWFB f,d Subtractfromfwithborrow (f-WREG-c)→d

1Df* SWAPF f,d Swapf f(0:3)→d(4:7),f(4:7)→d(0:3)

A8f TABLRD t,i,f

Readdatafromtablelatchintofilef,thenupdatetablelatchwith16-bitcontentsofmemorylocationaddressedbytablepointer

TBLATH→fift=1,TBLATL→fift=0;ProgMem(TBLPTR)→TBLAT;TBLPTR+1→TBLPTRifi=1

ACf TABLWT t,i,f

Writedatafromfileftotablelatchandthenwrite16-bittablelatchtoprogrammemorylocationaddressedbytablepointer

f→TBLATHift=1,f→TBLATLift=0;TBLAT→ProgMem(TBLPTR);TBLPTR+1→TBLPTRifi=1

A0f TLRD t,f Readdatafromtablelatchintofilef(tablelatchunchanged)

TBLATH→fift=1TBLATL→fift=0

A4f TLWT t,f Writedatafromfilefintotablelatch f→TBLATHift=1f→TBLATLift=0

33f TSTFSZ f Testf,skipifzero skipiff=0

0Df* XORWF f,d ExclusiveORWREGwithf (WREG.XOR.f)→dest

*Assumingdefaultbitvaluesfordands.

TABLE:16-BITCOREBIT-ORIENTEDFILEREGISTEROPERATIONS

Hex Mnemonic Description Function8'1'bf BCF f,b Bitclearf 0→f(b)

8'0'bf BSF f,b Bitsetf 1→f(b)

9'1'bf BTFSC f,b Bittest,skipifclear skipiff(b)=0

9'0'bf BTFSS f,b Bittest,skipifset skipiff(b)=1

3'1'bf BTG f,b Bittogglef .NOT.f(b)→f(b)

TABLE:16-BITCORELITERALANDCONTROLOPERATIONSHex Mnemonic Description FunctionB1kk ADDLW kk AddliteraltoWREG (WREG+kk)→WREG

B5kk ANDLW kk ANDLiteralandWREG (WREG.AND.kk)→WREG

Ekkk CALL kkk Subroutinecall(within8kpage)PC+1→TOS,k→PC(12:0),k(12:8)→PCLATH(4:0),PC(15:13)→PCLATH(7:5)

0004 CLRWT Clearwatchdogtimer 0→WDT,0→WDTprescaler,1→PD,1→TO

Ckkk GOTO kkk Unconditionalbranch(within8k)k→PC(12:0)k(12:8)→PCLATH(4:0),PC(15:13)→PCLATH(7:5)

B3kk IORLW kk InclusiveORliteralwithW (WREG.OR.kk)→WREG

B7kk LCALL kk LongCall(within64k) (PC+1)→TOS;kk→PCL,(PCLATH)→PCH

B8xk MOVLB k MoveliteraltolownibbleinBSR k→BSR(3:0)

BAkx MOVLR k MoveliteraltohighnibbleinBSR k→BSR(7:4)

B0kk MOVLW kk MoveliteraltoWREG kk→WREG

BCkk MULLW kk MultiplyliteralandWREG (kkxWREG)→PRODH:PRODL

0005 RETFIE Returnfrominterrupt,enableinterrupt (PCLATH)→PCH:k→PCL0→GLINTD

B6kk RETLW kk ReturnwithliteralinWREG kk→W,TOS→PC,(PCLATHunchanged)

0002 RETURN Returnfromsubroutine TOS→PC(PCLATHunchanged)

0003 SLEEP EnterSleepModeStoposcillator,powerdown,0→WDT,0→WDTPrescaler1→PD,1→TO

B2kk SUBLW kk SubtractWREGfromliteral (kk-WREG)→WREG

B4kk XORLW kk ExclusiveORliteralwithWREG (WREG.XOR.kk)→WREG

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

KeytoExtended16-BitCoreInstructionSet

Field DescriptionRegisterFiles

dest DestinationeithertheWREGregisterorthespecifiedregisterfilelocation.Seed.

f

Registerfileaddress.f8-bit(0x00to0xFF).f'12-bit(0x000to0xFFF).Thisisthesourceaddress.f"12-bit(0x000to0xFFF).Thisisthedestinationaddress.

r 0,1or2forFSRnumber.

xDon'tcare(`0'or`1').Theassemblerwillgeneratecodewithx=0.ItistherecommendedformofuseforcompatibilitywithallMicrochipsoftwaretools.

Literals

k

Literalfield,constantdataorlabel.k4-bit.kk8-bit.kkk12-bit.

Offsets,Increments/Decrements

n Therelativeaddress(2'scomplementnumber)forrelativebranchinstructions,orthedirectaddressforCall/BranchandReturninstructions.

**+*-+*

ThemodeoftheTBLPTRregisterforthetablereadandtablewriteinstructions.Onlyusedwithtableread(TBLRD)andtablewrite(TBLWT)instructions:NoChangetoregisterPost-IncrementregisterPost-DecrementregisterPre-Incrementregister

Bits

aRAMaccessbita=0:RAMlocationinAccessRAM(BSRregisterisignored)a=1:RAMbankisspecifiedbyBSRregister(default)

b Bitaddresswithinan8-bitfileregister(0to7).

dDestinationselectbitd=0:storeresultinWREGd=1:storeresultinfileregisterf(default)

sFastCall/Returnmodeselectbits=0:donotupdateinto/fromshadowregisters(default)s=1:certainregistersloadedinto/fromshadowregisters(Fastmode)

'' Bitvalues,asopposedtoHexvalue.NamedRegistersBSR BankSelectRegister.UsedtoselectthecurrentRAMbank.FSR FileSelectRegister.PCL ProgramCounterLowByte.PCH ProgramCounterHighByte.

PCLATH ProgramCounterHighByteLatch.PCLATU ProgramCounterUpperByteLatch.PRODH ProductofMultiplyHighByte.PRODL ProductofMultiplyLowByte.STATUS StatusRegisterTABLAT 8-bitTableLatch.TBLPTR 21-bitTablePointer(pointstoaProgramMemorylocation).WREG Workingregister(accumulator).NamedBitsC,DC,Z,OV,N ALUStatusbits:Carry,DigitCarry,Zero,Overflow,Negative.

TO Time-outbit.PD Power-downbit.PEIE PeripheralInterruptEnablebit.GIE,GIEL/H GlobalInterruptEnablebit(s).

NamedDeviceFeaturesMCLR Mastercleardevicereset.PC ProgramCounter.TOS Top-of-Stack.WDT WatchdogTimer.Misc.Descriptors() Contents.→ Assignedto.<> Registerbitfield.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Extended16-BitCoreInstructionSet

Microchip'snewhigh-performance8-bitmicrocontrollerfamilyusesa16-bitwideinstructionset.Thisinstructionsetconsistsof76instructions,eachasingle16-bitwideword(2bytes).Mostinstructionsoperateonafileregister,f,andtheworkingregister,WREG(accumulator).TheresultcanbedirectedeithertothefileregisterortheWREGregisterortobothinthecaseofsomeinstructions.Afewinstructionsoperatesolelyonafileregister(BSFforexample).

TABLE:EXTENDED16-BITCOREBYTE-ORIENTEDREGISTEROPERATIONSHex Mnemonic Description Function27f* ADDWF f,d,a ADDWREGtof WREG+f→dest

23f* ADDWFC f,d,a ADDWREGandCarrybittof WREG+f+C→dest

17f* ANDWF f,d,a ANDWREGwithf WREG.AND.f→dest

6Bf* CLRF f,a Clearf 0→f

1Ff* COMF f,d,a Complementf .NOT.f→dest

63f* CPFSEQ f,a ComparefwithWREG,skipiff=WREG

f-WREG,iff=WREG,PC+4→PCelsePC+2→PC

65f* CPFSGT f,a ComparefwithWREG,skipiff>WREG

f-WREG,iff>WREG,PC+4→PCelsePC+2→PC

61f* CPFSLT f,a ComparefwithWREG,skipiff<WREG

f-WREG,iff<WREG,PC+4→PCelsePC+2→PC

07f* DECF f,d,a Decrementf f-1→dest

2Ff* DECFSZ f,d,a Decrementf,skipif0 f-1→dest,ifdest=0,PC+4→PCelsePC+2→PC

4Ff* DCFSNZ f,d,a Decrementf,skipifnot0 f-1→dest,ifdest¼0,PC+4→PCelsePC+2→PC

2Bf* INCF f,d,a Incrementf f+1→dest

3Ff* INCFSZ f,d,a Incrementf,skipif0 f+1→dest,ifdest=0,PC+4→PCelsePC+2→PC

4Bf* INFSNZ f,d,a Incrementf,skipifnot0 f+1→dest,ifdest¼0,PC+4→PCelsePC+2→PC

13f* IORWF f,d,a InclusiveORWREGwithf WREG.OR.f→dest

53f* MOVF f,d,a Movef f→dest

Cf'Ff" MOVFF f',f" Movef'tofd"(secondword) f'→f"

6Ff* MOVWF f,a MoveWREGtof WREG→f

03f* MULWF f,a MultiplyWREGwithf WREG*f→PRODH:PRODL

6Df* NEGF f,a Negatef -f→f

37f* RLCF f,d,a RotateleftfthroughCarry

47f* RLNCF f,d,a Rotateleftf(nocarry)

33f* RRCF f,d,a RotaterightfthroughCarry

43f* RRNCF f,d,a Rotaterightf(nocarry)

69f* SETF f,a Setf 0xFF→f

57f* SUBFWB f,d,a SubtractffromWREGwithBorrow WREG-f-C→dest

5Ff* SUBWF f,d,a SubtractWREGfromf f-WREG→dest

5Bf* SUBWFB f,d,a SubtractWREGfromfwithBorrow f-WREG-C→dest

3Bf* SWAPF f,d,a Swapnibblesoff f<3:0>→dest<7:4>,f<7:4>→dest<3:0>

67f* TSTFSZ f,a Testf,skipif0 PC+4→PC,iff=0,elsePC+2→PC

1Bf* XORWF f,d,a ExclusiveORWREGwithf WREG.XOR.f→dest*Assumingdefaultbitvaluesfordanda.

TABLE:EXTENDED16-BITCOREBIT-ORIENTEDREGISTEROPERATIONS

Hex Mnemonic Description Function91f* BCF f,b,a BitClearf 0→f<b>

81f* BSF f,b,a BitSetf 1→f<b>

B1f* BTFSC f,b,a Bittestf,skipifclear iff<b>=0,PC+4→PC,elsePC+2→PC

A1f* BTFSS f,b,a Bittestf,skipifset iff<b>=1,PC+4→PC,elsePC+2→PC

71f* BTG f,b,a BitTogglef f<b>→f<b>*Assumingb=0anddefaultbitvaluefora.

TABLE:EXTENDED16-BITCORECONTROLOPERATIONSHex Mnemonic Description Function

E2n BC n BranchifCarry ifC=1,PC+2+2*n→PC,elsePC+2→PC

E6n BN n BranchifNegative ifN=1,PC+2+2*n→PC,elsePC+2→PC

E3n BNC n BranchifNotCarry ifC=0,PC+2+2*n→PC,elsePC+2→PC

E7n BNN n BranchifNotNegative ifN=0,PC+2+2*n→PC,elsePC+2→PC

E5n BNOV n BranchifNotOverflow ifOV=0,PC+2+2*n→PC,elsePC+2→PC

E1n BNZ n BranchifNotZero ifZ=0,PC+2+2*n→PC,elsePC+2→PC

E4n BOV n BranchifOverflow ifOV=1,PC+2+2*n→PC,elsePC+2→PC

D'0'n BRA n BranchUnconditionally PC+2+2*n→PC

E0n BZ n BranchifZero ifZ=1,PC+2+2*n→PC,elsePC+2→PC

ECkk*Fkkk CALL n,s CallSubroutine1stword

2ndword

PC+4→TOS,n→PC<20:1>,ifs=1,WREG→WREGs,STATUS→STATUSs,BSR→BSRs

0004 CLRWDT ClearWatchdogTimer 0→WDT,0→WDTpostscaler,1→TO,1→PD

0007 DAW DecimalAdjustWREG

ifWREG<3:0>>9orDC=1,WREG<3:0>+6→WREG<3:0>,elseWREG<3:0>→WREG<3:0>;ifWREG<7:4>>9orC=1,WREG<7:4>+6→WREG<7:4>,elseWREG<7:4>→WREG<7:4>;

EFkkFkkk GOTO n Gotoaddress1stword

2ndword n→PC<20:1>

0000 NOP NoOperation NoOperation

Fxxx NOP NoOperation NoOperation(2-wordinstructions)

0006 POP Poptopofreturnstack(TOS) TOS-1→TOS

0005 PUSH Pushtopofreturnstack(TOS) PC+2→TOS

D'1'n RCALL n RelativeCall PC+2→TOS,PC+2+2*n→PC

00FF RESET Softwaredevicereset SameasMCLRreset

0010* RETFIE s Returnfrominterrupt(andenableinterrupts)

TOS→PC,1→GIE/GIEHorPEIE/GIEL,ifs=1,WREGs→WREG,STATUSs→STATUS,BSRs→BSR,PCLATU/PCLATHunchngd.

0012* RETURN s ReturnfromsubroutineTOS→PC,ifs=1,WREGs→WREG,STATUSs→STATUS,BSRs→BSR,PCLATU/PCLATHareunchanged

0003 SLEEP EnterSLEEPMode 0→WDT,0→WDTpostscaler,1→TO,0→PD

*Assumingdefaultbitvaluefors.

TABLE:EXTENDED16-BITCORELITERALOPERATIONSHex Mnemonic Description Function0Fkk ADDLW kk AddliteraltoWREG WREG+kk→WREG

0Bkk ANDLW kk ANDliteralwithWREG WREG.AND.kk→WREG

09kk IORLW kk InclusiveORliteralwithWREG WREG.OR.kk→WREG

EErkF0kk LFSR r,kk Moveliteral(12bit)2ndword

toFSRr1stword kk→FSRr

010k MOVLB k MoveliteraltoBSR<3:0> kk→BSR

0Ekk MOVLW kk MoveliteraltoWREG kk→WREG

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

0Dkk MULLW kk MultiplyliteralwithWREG WREG*kk→PRODH:PRODL

0Ckk RETLW kk ReturnwithliteralinWREG kk→WREG

08kk SUBLW kk SubtractWREGfromliteral kk-WREG→WREG

0Akk XORLW kk ExclusiveORliteralwithWREG WREG.XOR.kk→WREG

TABLE:EXTENDED16-BITCOREMEMORYOPERATIONSHex Mnemonic Description Function0008 TBLRD* TableRead ProgMem(TBLPTR)→TABLAT

0009 TBLRD*+ TableReadwithpost-increment ProgMem(TBLPTR)→TABLATTBLPTR+1→TBLPTR

000A TBLRD*- TableReadwithpost-decrement ProgMem(TBLPTR)→TABLATTBLPTR-1→TBLPTR

000B TBLRD+* TableReadwithpre-increment TBLPTR+1→TBLPTRProgMem(TBLPTR)→TABLAT

000C TBLWT* TableWrite TABLAT→ProgMem(TBLPTR)

000D TBLWT*+ TableWritewithpost-increment TABLAT→ProgMem(TBLPTR)TBLPTR+1→TBLPTR

000E TBLWT*- TableWritewithpost-decrement TABLAT→ProgMem(TBLPTR)TBLPTR-1→TBLPTR

000F TBLWT+* TableWritewithpre-increment TBLPTR+1→TBLPTRTABLAT→ProgMem(TBLPTR)

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

UsefulTables

Someusefultablesareincludedforreferencehere.

ASCIICharacterSet

HexadecimaltoDecimalConversion

ASCIICharacterSet

LeastSignificantNibble

MostSignificantNibbleHEX 0 1 2 3 4 5 6 70 NUL DLE Space 0 @ P ` p1 SOH DC1 ! 1 A Q a q2 STX DC2 " 2 B R b r3 ETX DC3 # 3 C S c s4 EOT DC4 $ 4 D T d t5 ENQ NAK % 5 E U e u6 ACK SYN & 6 F V f v7 Bell ETB ' 7 G W g w8 BS CAN ( 8 H X h x9 HT EM ) 9 I Y i yA LF SUB * : J Z j zB VT ESC + ; K [ k {C FF FS , < L \ l |D CR GS - = M ] m }E SO RS . > N ^ n ~F SI US / ? O _ o DEL

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

HexadecimaltoDecimalConversion

Thisappendixdescribeshowtoconverthexadecimaltodecimal.ForeachHEXdigit,findtheassociateddecimalvalue.Addthenumberstogether.

HighByte LowByteHEX1000 Dec HEX100 Dec HEX10 Dec HEX1 Dec

0 0 0 0 0 0 0 01 4096 1 256 1 16 1 12 8192 2 512 2 32 2 23 12288 3 768 3 48 3 34 16384 4 1024 4 64 4 45 20480 5 1280 5 80 5 56 24576 6 1536 6 96 6 67 28672 7 1792 7 112 7 78 32768 8 2048 8 128 8 89 36864 9 2304 9 144 9 9A 40960 A 2560 A 160 A 10B 45056 B 2816 B 176 B 11C 49152 C 3072 C 192 C 12D 53248 D 3328 D 208 D 13E 57344 E 3584 E 224 E 14F 61440 F 3840 F 240 F 15

Forexample,HEXA38Fconvertsto41871asfollows:

HEX1000'sDigit HEX100'sDigit HEX10'sDigit HEX1'sDigit Result

40960 768 128 15 41871Decimal

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Support

ThegeneralinformationcontainedherewillbeusefultoknowwhenworkingwithMicrochipTechnology'sMPASMassembler(theassembler),MPLINKobjectlinker(thelinker),andMPLIBobjectlibrarian(thelibrarian).

RecommendedReading

TheMicrochipWebSiteDevelopmentSystemsCustomerNotificationServiceCustomerSupport

RecommendedReading

Otherusefuldocumentsarelistedbelow.

ReadmeFile-readme.asm

ForthelatestinformationonusingMPASMassembler,readthereadme.asmfile(anASCIItextfile)intheMPLABIDEdirectory.TheREADMEfilecontainsupdateinformationandknownissuesthatmaynotbeincludedintheuser'sguideortheon-linehelpfile.

ReadmeFile-readme.lkr

ForthelatestinformationonusingMPLINKlinkerandMPLIBlibrarian,readthereadme.lkrfile(anASCIItextfile)intheMPLABIDEdirectory.TheREADMEfilecontainsupdateinformationandknownissuesthatmaynotbeincludedintheuser'sguideortheon-linehelpfile.

MPASMAssembler,MPLINKObjectLinker,andMPLIBObjectLibrarianUser'sGuide(DS00000)

Thisuser'sguidedescribeshowtousetheMicrochipPICmicroMCUMPASMassembler,MPLINKobjectlinkerandMPLIBobjectlibrarian.

MPASMandMPLINKPICmicroQuickReferenceCard(DS30400)

Aquickreferencecard(QRC)containingMPASMassemblerdirectivelanguagesummary,MPASMassemblerradixtypessupported,MPLINKobjectlinkercommandlineoptions,MPLIBobjectlibrarianusageformatandexamples,PIC18CXXXcorespecialfunctionregisterfiles,ASCIIcharacterset,andPICmicroMCUinstructionsetsummaries.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnicalLibraryCD-ROM(DS00161)

ThisCD-ROMcontainscomprehensiveapplicationnotes,datasheets,andtechnicalbriefsforallofMicrochipproducts.ToobtainthisCD-ROM,contactthenearestMicrochipSalesandServicelocation(seebackpage).

EmbeddedControlHandbookVol.1&2andtheEmbeddedControlHandbookUpdate2000(DS00092,DS00167,andDS00711)

Thesehandbookscontainawealthofinformationaboutmicrocontrollerapplications.Toobtainthesedocuments,contactthenearestMicrochipsalesandservicelocation(seebackpage).

TheapplicationnotesdescribedinthesemanualsarealsoobtainablefromMicrochipsalesandservicelocationsorfromtheMicrochipwebsite(http://www.microchip.com).

Microsoft®Windows®Manuals

ThismanualassumesthatusersarefamiliarwiththeMicrosoftWindowsoperatingsystem.Manyexcellentreferencesexistforthissoftwareprogram,andshouldbeconsultedforgeneraloperationofWindows.

TheMicrochipWebSite

MicrochipprovidesonlinesupportontheMicrochipWorldWideWeb(WWW)site.ThewebsiteisusedbyMicrochipasameanstomakefilesandinformationeasilyavailabletocustomers.Toviewthesite,youmusthaveaccesstotheInternetandawebbrowsersuchasNetscapeNavigatororMicrosoftInternetExplorer.

TheMicrochipwebsiteisavailablebyusingyourfavoriteInternetbrowsertoattachto:

http://www.microchip.com

Thewebsiteprovidesavarietyofservices.Usersmaydownloadfilesforthelatestdevelopmenttools,datasheets,applicationnotes,user'sguides,articles,andsampleprograms.AvarietyinformationspecifictothebusinessofMicrochipisalsoavailable,includinglistingsofMicrochipsalesoffices,distributorsandfactoryrepresentatives.

TechnicalSupport

FrequentlyAskedQuestions(FAQ)

OnlineDiscussionGroups-Conferencesforproducts,DevelopmentSystems,technicalinformationandmoreMicrochipConsultantProgramMemberListingLinkstootherusefulwebsitesrelatedtoMicrochipproducts

Developer'sToolbox

DesignTips

DeviceErrata

Otheravailableinformation

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

LatestMicrochipPressReleases

ListingofseminarsandeventsJobPostings

DevelopmentSystemsCustomerNotificationService

MicrochipstartedthecustomernotificationservicetohelpourcustomerskeepcurrentonMicrochipproductswiththeleastamountofeffort.Onceyousubscribe,youwillreceiveemailnotificationwheneverwechange,update,reviseorhaveerratarelatedtoyourspecifiedproductfamilyordevelopmenttoolofinterest.

GototheMicrochipWWWwebpage(http://www.microchip.com)andclickonCustomerChangeNotificationunderItemsofInterest.Followtheinstructionstoregister.

TheDevelopmentSystemsproductgroupcategoriesare:

Compilers

EmulatorsIn-CircuitDebuggersMPLABProgrammers

Hereisadescriptionofthesecategories:

COMPILERS-ThelatestinformationonMicrochipCcompilersandotherlanguagetools.TheseincludetheMPLABC17,MPLABC18andMPLABC30Ccompilers;MPASMandMPLABASM30assemblers;MPLINKandMPLABLINK30objectlinkers;andMPLIBandMPLABLIB30objectlibrarians.

EMULATORS-ThelatestinformationonMicrochipin-circuitemulators.ThisincludestheMPLABICE2000andMPLABICE4000.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

IN-CIRCUITDEBUGGERS-ThelatestinformationonMicrochipin-circuitdebuggers.TheseincludetheMPLABICDandMPLABICD2.

MPLAB-ThelatestinformationonMicrochipMPLABIDE,theWindowsIntegratedDevelopmentEnvironmentfordevelopmentsystemstools.ThislistisfocusedontheMPLABIDE,MPLABSIMandMPLABSIM30simulators,MPLABIDEProjectManagerandgeneraleditinganddebuggingfeatures.

PROGRAMMERS-ThelatestinformationonMicrochipdeviceprogrammers.TheseincludethePROMATEIIdeviceprogrammerandPICSTARTPlusdevelopmentprogrammer.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

CustomerSupport

UsersofMicrochipproductscanreceiveassistancethroughseveralchannels:

DistributororRepresentative

LocalSalesOfficeFieldApplicationEngineer(FAE)CorporateApplicationsEngineer(CAE)Hotline

Customersshouldcalltheirdistributor,representativeorfieldapplicationengineer(FAE)forsupport.Localsalesofficesarealsoavailabletohelpcustomers.Seethebackcoverforalistingofsalesofficesandlocations.

CorporateApplicationsEngineers(CAEs)maybecontactedat(480)792-7627.

Inaddition,thereisaSystemsInformationandUpgradeLine.ThislineprovidessystemusersalistingofthelatestversionsofallofMicrochip'sdevelopmentsystemssoftwareproducts.Plus,thislineprovidesinformationonhowcustomerscanreceiveanycurrentlyavailableupgradekits.

TheHotlineNumbersare:

1-800-755-2345forU.S.andmostofCanada.

1-480-792-7302fortherestoftheworld.

Glossary

AbsoluteSection

Asectionwithafixed(absolute)addressthatcannotbechangedbythelinker.

AccessMemory(PIC18Only)

SpecialregistersonPIC18XXXXXdevicesthatallowaccessregardlessofthesettingofthebankselectregister(BSR).

Address

Valuethatidentifiesalocationinmemory.

AlphabeticCharacter

Alphabeticcharactersarethosecharactersthatarelettersofthearabicalphabet(a,b,...,z,A,B,...,Z).

Alphanumeric

Alphanumericcharactersarecomprisedofalphabeticcharactersanddecimaldigits(0,1,...,9).

AnonymousStructure

AnunnamedstructurethatisamemberofaCunion.Themembersofananonymousstructuremaybeaccessedasiftheyweremembersoftheenclosingunion.Forexample,inthefollowingcode,hiandloaremembersofananonymousstructureinsidetheunioncaster.

unioncastawayintintval;

struct{charlo;//accessibleascaster.locharhi;//accessibleascaster.hi};}caster;ANSI

AmericanNationalStandardsInstituteisanorganizationresponsibleforformulatingandapprovingstandardsintheUnitedStates.

Application

AsetofsoftwareandhardwarethatmaybecontrolledbyaPICmicromicrocontroller.

Archive

Acollectionofrelocatableobjectmodules.Itiscreatedbyassemblingmultiplesourcefilestoobjectfiles,andthenusingthearchivertocombinetheobjectfilesintoonelibraryfile.Alibrarycanbelinkedwithobjectmodulesandotherlibrariestocreateexecutablecode.

Archiver

Atoolthatcreatesandmanipulateslibraries.

ASCII

AmericanStandardCodeforInformationInterchangeisacharactersetencodingthatuses7binarydigitstorepresenteachcharacter.Itincludesupperandlowercaseletters,digits,symbolsandcontrolcharacters.

Assembler

Alanguagetoolthattranslatesassemblylanguagesourcecode

intomachinecode.

AssemblyLanguage

Aprogramminglanguagethatdescribesbinarymachinecodeinasymbolicform.

AssignedSection

Asectionwhichhasbeenassignedtoatargetmemoryblockinthelinkercommandfile.

AsynchronousEvents

Multipleeventsthatdonotoccuratthesametime.Thisisgenerallyusedtorefertointerruptsthatmayoccuratanytimeduringprocessorexecution.

AsynchronousStimulus

Datageneratedtosimulateexternalinputstoasimulatordevice.

Binary

Thebasetwonumberingsystemthatusesthedigits0-1.Theright-mostdigitcountsones,thenextcountsmultiplesof2,then22=4,etc.

Breakpoint,Hardware

Aneventwhoseexecutionwillcauseahalt.

Breakpoint,Software

Anaddresswhereexecutionofthefirmwarewillhalt.Usuallyachievedbyaspecialbreakinstruction.

Build

Compileandlinkallthesourcefilesforanapplication.

C

Ageneral-purposeprogramminglanguagewhichfeatureseconomyofexpression,moderncontrolflowanddatastructures,andarichsetofoperators.

CalibrationMemory

AspecialfunctionregisterorregistersusedtoholdvaluesforcalibrationofaPICmicromicrocontrolleron-boardRCoscillatororotherdeviceperipherals.

CentralProcessingUnit

Thepartofadevicethatisresponsibleforfetchingthecorrectinstructionforexecution,decodingthatinstruction,andthenexecutingthatinstruction.Whennecessary,itworksinconjunctionwiththearithmeticlogicunit(ALU)tocompletetheexecutionoftheinstruction.Itcontrolstheprogrammemoryaddressbus,thedatamemoryaddressbus,andaccessestothestack.

COFF

CommonObjectFileFormat.Anobjectfileofthisformatcontainsmachinecode,debuggingandotherinformation.

CommandLineInterface

Ameansofcommunicationbetweenaprogramanditsuserbasedsolelyontextualinputandoutput.

Compiler

Aprogramthattranslatesasourcefilewritteninahigh-levellanguageintomachinecode.

ConditionalCompilation

Theactofcompilingaprogramfragmentonlyifacertainconstantexpression,specifiedbyapreprocessordirective,istrue.

ConfigurationBits

Special-purposebitsprogrammedtosetPICmicromicrocontrollermodesofoperation.Aconfigurationbitmayormaynotbepreprogrammed.

ControlDirectives

Directivesinassemblylanguagecodethatcausecodetobeincludedoromittedbasedontheassembly-timevalueofaspecifiedexpression.

CPU

SeeCentralProcessingUnit.

CrossReferenceFile

Afilethatreferencesatableofsymbolsandalistoffilesthatreferencesthesymbol.Ifthesymbolisdefined,thefirstfilelistedisthelocationofthedefinition.Theremainingfilescontainreferencestothesymbol.

DataDirectives

Datadirectivesarethosethatcontroltheassembler'sallocationofprogramordatamemoryandprovideawaytorefertodataitemssymbolically;thatis,bymeaningfulnames.

DataMemory

OnMicrochipMCUandDSCdevices,datamemory(RAM)iscomprisedofgeneralpurposeregisters(GPRs)andspecial

functionregisters(SFRs).SomedevicesalsohaveEEPROMdatamemory.

DeviceProgrammer

Atoolusedtoprogramelectricallyprogrammablesemiconductordevicessuchasmicrocontrollers.

Directives

Statementsinsourcecodethatprovidecontrolofthelanguagetool'soperation.

Download

Downloadistheprocessofsendingdatafromahosttoanotherdevice,suchasanemulator,programmerortargetboard.

EEPROM

ElectricallyErasableProgrammableReadOnlyMemory.AspecialtypeofPROMthatcanbeerasedelectrically.Dataiswrittenorerasedonebyteatatime.EEPROMretainsitscontentsevenwhenpoweristurnedoff.

Emulation

Theprocessofexecutingsoftwareloadedintoemulationmemoryasifitwerefirmwareresidingonamicrocontrollerdevice.

EmulationMemory

Programmemorycontainedwithintheemulator.

Emulator

Hardwarethatperformsemulation.

EmulatorSystem

TheMPLABICE2000and4000emulatorsystemsincludethepod,processormodule,deviceadapter,cables,andMPLABIDEsoftware.

Endianess

Describesorderofbytesinamulti-byteobject.

EPROM

ErasableProgrammableReadOnlyMemory.Aprogrammableread-onlymemorythatcanbeerasedusuallybyexposuretoultravioletradiation.

ErrorFile

Afilecontainingerrormessagesanddiagnosticsgeneratedbyalanguagetool.

Event

Adescriptionofabuscyclewhichmayincludeaddress,data,passcount,externalinput,cycletype(fetch,R/W),andtimestamp.Eventsareusedtodescribetriggers,breakpointsandinterrupts.

Export

SenddataoutoftheMPLABIDEinastandardizedformat.

ExtendedMicrocontrollerMode

Inextendedmicrocontrollermode,on-chipprogrammemoryaswellasexternalmemoryisavailable.ExecutionautomaticallyswitchestoexternaliftheprogrammemoryaddressisgreaterthantheinternalmemoryspaceofthePIC17CXXXorPIC18CXXXdevice.

ExternalLabel

Alabelthathasexternallinkage.

ExternalLinkage

Afunctionorvariablehasexternallinkageifitcanbereferencedfromoutsidethemoduleinwhichitisdefined.

ExternalSymbol

Asymbolforanidentifierwhichhasexternallinkage.Thismaybeareferenceoradefinition.

ExternalSymbolResolution

Aprocessperformedbythelinkerinwhichexternalsymboldefinitionsfromallinputmodulesarecollectedinanattempttoresolveallexternalsymbolreferences.Anyexternalsymbolreferenceswhichdonothaveacorrespondingdefinitioncausealinkererrortobereported.

ExternalInputLine

Anexternalinputsignallogicprobeline(TRIGIN)forsettinganeventbaseduponexternalsignals.

ExternalRAM

Off-chipRead/Writememory.

FileRegisters

On-chipdatamemory,includinggeneralpurposeregisters(GPRs)andspecialfunctionregisters(SFRs).

Flash

AtypeofEEPROMwheredataiswrittenorerasedinblocksinsteadofbytes.

FNOP

ForcedNoOperation.AforcedNOPcycleisthesecondcycleofatwo-cycleinstruction.SincethePICmicromicrocontrollerarchitectureispipelined,itprefetchesthenextinstructioninthephysicaladdressspacewhileitisexecutingthecurrentinstruction.However,ifthecurrentinstructionchangestheprogramcounter,thisprefetchedinstructionisexplicitlyignored,causingaforcedNOPcycle.

FramePointer

Apointerthatreferencesthelocationonthestackthatseparatesthestack-basedargumentsfromthestack-basedlocalvariables.Providesaconvenientbasefromwhichtoaccesslocalvariablesandothervaluesforthecurrentfunction.

Free-Standing

ACcompilerimplementationthatacceptsanystrictlyconformingprogramthatdoesnotusecomplextypesandinwhichtheuseofthefeaturesspecifiedintheISOlibraryclauseisconfinedtothecontentsofthestandardheaders<float.h>,<iso646.h>,<limits.h>,<stddef.h>,and<stdint.h>.

GPR

GeneralPurposeRegister.Theportionofdevicedatamemory(RAM)avaliableforgeneraluse.

Halt

Astopofprogramexecution.ExecutingHaltisthesameasstoppingatabreakpoint.

HEXCode

Executableinstructionsstoredinahexadecimalformatcode.HEX

codeiscontainedinaHEXfile.

HEXFile

AnASCIIfilecontaininghexadecimaladdressesandvalues(HEXcode)suitableforprogrammingadevice.

Hexadecimal

Thebase16numberingsystemthatusesthedigits0-9plusthelettersA-F(ora-f).ThedigitsA-Frepresenthexadecimaldigitswithvaluesof(decimal)10to15.Theright-mostdigitcountsones,thenextcountsmultiplesof16,then162=256,etc.

HighLevelLanguage

Alanguageforwritingprogramsthatisfurtherremovedfromtheprocessorthanassembly.

ICD

In-CircuitDebugger.MPLABICDandMPLABICD2areMicrochip'sin-circuitdebuggersforPIC16F87XandPIC18FXXXdevices,respectively.TheseICDsworkwithMPLABIDE.

ICE

In-CircuitEmulator.MPLABICE2000and4000areMicrochip'sin-circuitemulatorsthatworkwithMPLABIDE.

IDE

IntegratedDevelopmentEnvironment.MPLABIDEisMicrochip'sintegrateddevelopmentenvironment.

IEEE

InstituteofElectricalandElectronicsEngineers.

Import

BringdataintotheMPLABIDEfromanoutsidesource,suchasfromaHEXfile.

InstructionSet

Thecollectionofmachinelanguageinstructionsthataparticularprocessorunderstands.

Instructions

Asequenceofbitsthattellsacentralprocessingunittoperformaparticularoperationandcancontaindatatobeusedintheoperation.

InternalLinkage

Afunctionorvariablehasinternallinkageifitcannotbeaccessedfromoutsidethemoduleinwhichitisdefined.

InternationalOrganizationforStandardization

Anorganizationthatsetsstandardsinmanybusinessesandtechnologies,includingcomputingandcommunications.

Interrupt

AsignaltotheCPUthatsuspendstheexecutionofarunningapplicationandtransferscontroltoanInterruptServiceRoutine(ISR)sothattheeventmaybeprocessed.

InterruptHandler

Aroutinethatprocessesspecialcodewhenaninterruptoccurs.

InterruptRequest

Aneventwhichcausestheprocessortotemporarilysuspend

normalinstructionexecutionandtostartexecutinganinterrupthandlerroutine.Someprocessorshaveseveralinterruptrequesteventsallowingdifferentpriorityinterrupts.

InterruptServiceRoutine

Afunctionthatisinvokedwhenaninterruptoccurs.

InterruptServiceRoutine

User-generatedcodethatisenteredwhenaninterruptoccurs.Thelocationofthecodeinprogrammemorywillusuallydependonthetypeofinterruptthathasoccurred.

IRQ

SeeInterruptRequest.

ISO

SeeInternationalOrganizationforStandardization.

ISR

SeeInterruptServiceRoutine.

Latency

Thetimebetweenaneventanditsresponse.

Librarian

SeeArchiver.

Library

SeeArchive.

Linker

Alanguagetoolthatcombinesobjectfilesandlibrariestocreateexecutablecode,resolvingreferencesfromonemoduletoanother.

LinkerScriptFiles

Linkerscriptfilesarethecommandfilesofalinker.Theydefinelinkeroptionsanddescribeavailablememoryonthetargetplatform.

ListingDirectives

Listingdirectivesarethosedirectivesthatcontroltheassemblerlistingfileformat.Theyallowthespecificationoftitles,paginationandotherlistingcontrol.

ListingFile

AlistingfileisanASCIItextfilethatshowsthemachinecodegeneratedforeachCsourcestatement,assemblyinstruction,assemblerdirective,ormacroencounteredinasourcefile.

LittleEndianess

Adataorderingschemeformultibytedatawherebytheleastsignificantbyteisstoredattheloweraddresses.

LocalLabel

AlocallabelisonethatisdefinedinsideamacrowiththeLOCALdirective.Theselabelsareparticulartoagiveninstanceofamacro'sinstantiation.Inotherwords,thesymbolsandlabelsthataredeclaredaslocalarenolongeraccessibleaftertheENDMmacroisencountered.

LogicProbes

Upto14logicprobescanbeconnectedtosomeMicrochipemulators.Thelogicprobesprovideexternaltraceinputs,trigger

outputsignal,+5V,andacommonground.

MachineCode

Therepresentationofacomputerprogramthatisactuallyreadandinterpretedbytheprocessor.Aprograminbinarymachinecodeconsistsofasequenceofmachineinstructions(possiblyinterspersedwithdata).Thecollectionofallpossibleinstructionsforaparticularprocessorisknownasits"instructionset".

MachineLanguage

Asetofinstructionsforaspecificcentralprocessingunit,designedtobeusablebyaprocessorwithoutbeingtranslated.

Macro

Macroinstruction.Aninstructionthatrepresentsasequenceofinstructionsinabbreviatedform.

MacroDirectives

Directivesthatcontroltheexecutionanddataallocationwithinmacrobodydefinitions.

MakeProject

Acommandthatrebuildsanapplication,re-compilingonlythosesourcefilesthathavechangedsincethelastcompletecompilation.

MCU

MicrocontrollerUnit.Anabbreviationformicrocontroller.AlsouC.

MemoryModels

Versionsoflibrariesand/orprecompiledobjectfilesbasedonadevice'smemory(RAM/ROM)sizeandstructure.

MemoryModels

Adescriptionthatspecifiesthesizeofpointersthatpointtoprogrammemory.

Message

Textdisplayedtoalertyoutopotentialproblemsinlanguagetooloperation.Amessagewillnotstopoperation.

Microcontroller

AhighlyintegratedchipthatcontainsaCPU,RAM,programmemory,I/Oports,andtimers.

MicrocontrollerMode

OneofthepossibleprogrammemoryconfigurationsofthePIC17CXXXandPIC18CXXXfamiliesofmicrocontrollers.Inmicrocontrollermode,onlyinternalexecutionisallowed.Thus,onlytheon-chipprogrammemoryisavailableinmicrocontrollermode.

MicroprocessorMode

OneofthepossibleprogrammemoryconfigurationsofthePIC17CXXXandPIC18CXXXfamiliesofmicrocontrollers.Inmicroprocessormode,theon-chipprogrammemoryisnotused.Theentireprogrammemoryismappedexternally.

Mnemonics

Textinstructionsthatcanbetranslateddirectlyintomachinecode.AlsoreferredtoasOpcodes.

MPASMAssembler

MicrochipTechnology'srelocatablemacroassemblerforPICmicromicrocontrollerdevices,KeeLoqdevicesandMicrochipmemory

devices.

MPLABASM30

Microchip'srelocatablemacroassemblerfordsPIC30Fdigitialsignalcontrollerdevices.

MPLABC1X

ReferstoboththeMPLABC17andMPLABC18CcompilersfromMicrochip.MPLABC17istheCcompilerforPIC17CXXXdevicesandMPLABC18istheCcompilerforPIC18CXXXandPIC18FXXXXdevices.

MPLABC30

Microchip'sCcompilerfordsPIC30Fdigitialsignalcontrollerdevices.

MPLABICD2

Microchip'sin-circuitdebuggerforPIC16F87X,PIC18FXXXanddsPIC30FXXXXdevices.TheICDworkswithMPLABIDE.ThemaincomponentofeachICDisthemodule.Acompletesystemconsistsofamodule,header,demoboard,cables,andMPLABIDESoftware.

MPLABICE2000

Microchip'sin-circuitemulatorforPICmicroMCU'sthatworkswithMPLABIDE.

MPLABICE4000

Microchip'sin-circuitemulatorfordsPICDSC'sthatworkswithMPLABIDE.

MPLABIDE

Microchip'sIntegratedDevelopmentEnvironment.

MPLABLIB30

MPLABLIB30archiver/librarianisanobjectlibrarianforusewithCOFFobjectmodulescreatedusingeitherMPLABASM30orMPLABC30Ccompiler.

MPLABLINK30

MPLABLINK30isanobjectlinkerfortheMicrochipMPLABASM30assemblerandtheMicrochipMPLABC30Ccompiler.

MPLABSIM

Microchip'ssimulatorthatworkswithMPLABIDEinsupportofPICmicroMCUdevices.

MPLABSIM30

Microchip'ssimulatorthatworkswithMPLABIDEinsupportofdsPICDSCdevices.

MPLIBObjectLibrarian

MPLIBlibrarianisanobjectlibrarianforusewithCOFFobjectmodulescreatedusingeitherMPASMassembler(mpasmormpasmwinv2.0)orMPLABC1XCcompilers.

MPLINKObjectLinker

MPLINKlinkerisanobjectlinkerfortheMicrochipMPASMassemblerandtheMicrochipMPLABC17orC18Ccompilers.MPLINKlinkeralsomaybeusedwiththeMicrochipMPLIBlibrarian.MPLINKlinkerisdesignedtobeusedwithMPLABIDE,thoughitdoesnothavetobe.

MRU

MostRecentlyUsed.ReferstofilesandwindowsavailabletobeselectedfromMPLABIDEmainpulldownmenus.

NestingDepth

Themaximumleveltowhichmacroscanincludeothermacros.

Node

MPLABIDEprojectcomponent.

NonReal-Time

ReferstotheprocessoratabreakpointorexecutingsinglestepinstructionsorMPLABIDEbeingruninsimulatormode.

Non-VolatileStorage

Astoragedevicewhosecontentsarepreservedwhenitspowerisoff.

NOP

NoOperation.Aninstructionthathasnoeffectwhenexecutedexcepttoadvancetheprogramcounter.

ObjectCode

Themachinecodegeneratedbyanassemblerorcompiler.

ObjectFile

Afilecontainingmachinecodeandpossiblydebuginformation.Itmaybeimmediatelyexecutableoritmayberelocatable,requiringlinkingwithotherobjectfiles,e.g.libraries,toproduceacompleteexecutableprogram.

ObjectFileDirectives

Directivesthatareusedonlywhencreatinganobjectfile.

Octal

Thebase8numbersystemthatonlyusesthedigits0-7.Theright-mostdigitcountsones,thenextdigitcountsmultiplesof8,then8^2=64,etc.

Off-ChipMemory

Off-chipmemoryreferstothememoryselectionoptionforthePIC17CXXXorPIC18CXXXdevicewherememorymayresideonthetargetboard,orwhereallprogrammemorymaybesuppliedbytheEmulator.TheMemorytabaccessedfromOptions>DevelopmentModeprovidestheOff-ChipMemoryselectiondialogbox.

Opcodes

OperationalCodes.SeeMnemonics.

Operators

Symbols,liketheplussign`+'andtheminussign`-',thatareusedwhenformingwell-definedexpressions.Eachoperatorhasanassignedprecedencethatisusedtodetermineorderofevaluation.

OTP

OneTimeProgrammable.EPROMdevicesthatarenotinwindowedpackages.SinceEPROMneedsultravioletlighttoeraseitsmemory,onlywindoweddevicesareerasable.

PassCounter

Acounterthatdecrementseachtimeanevent(suchastheexecutionofaninstructionataparticularaddress)occurs.Whenthepasscountvaluereacheszero,theeventissatisfied.Youcan

assignthePassCountertobreakandtracelogic,andtoanysequentialeventinthecomplextriggerdialog.

PC

PersonalComputerorProgramCounter.

PCHost

AnyIBM™orcompatiblepersonalcomputerrunningasupportedWindowsoperatingsystem.

PICmicroMCUs

PICmicromicrocontrollers(MCUs)referstoallMicrochipmicrocontrollerfamilies.

PICSTARTPlus

AdevelopmentaldeviceprogrammerfromMicrochip.Programs8-,14-,28-,and40-pinPICmicromicrocontrollers.MustbeusedwithMPLABIDESoftware.

Pod,Emulator

Theexternalemulatorboxthatcontainsemulationmemory,tracememory,eventandcycletimers,andtrace/breakpointlogic.

Power-on-ResetEmulation

AsoftwarerandomizationprocessthatwritesrandomvaluesindataRAMareastosimulateuninitializedvaluesinRAMuponinitialpowerapplication.

Pragma

Adirectivethathasmeaningtoaspecificcompiler.Oftenapragmaisusedtoconveyimplementation-definedinformationtothe

compiler.MPLABC30usesattributestoconveythisinformation.

PROMATEII

AdeviceprogrammerfromMicrochip.ProgramsallPICmicromicrocontrollersandmostmemoryandKeeloqdevices.CanbeusedwithMPLABIDEorstand-alone.

ProgramCounter

Thelocationthatcontainstheaddressoftheinstructionthatiscurrentlyexecuting.

ProgramMemory

Thememoryareainadevicewhereinstructionsarestored.Also,thememoryintheemulatororsimulatorcontainingthedownloadedtargetapplicationfirmware.

Project

Asetofsourcefilesandinstructionstobuildtheobjectandexecutablecodeforanapplication.

PrototypeSystem

Atermreferringtoauser'stargetapplication,ortargetboard.

PWMSignals

PulseWidthModulationSignals.CertainPICmicroMCUdeviceshaveaPWMperipheral.

Qualifier

AnaddressoranaddressrangeusedbythePassCounterorasaneventbeforeanotheroperationinacomplextrigger.

Radix

Thenumberbase,HEX,ordecimal,usedinspecifyinganaddress.

RAM

RandomAccessMemory(DataMemory).Memoryinwhichinformationcanbeaccessedinanyorder.

RawData

Thebinaryrepresentationofcodeordataassociatedwithasection.

Real-Time

WhenreleasedfromthehaltstateintheemulatororMPLABICDmode,theprocessorrunsinreal-timemodeandbehavesexactlyasthenormalchipwouldbehave.Inreal-timemode,thereal-timetracebufferofMPLABICEisenabledandconstantlycapturesallselectedcycles,andallbreaklogicisenabled.IntheemulatororMPLABICD,theprocessorexecutesinreal-timeuntilavalidbreakpointcausesahalt,oruntiltheuserhaltstheemulator.Inthesimulatorreal-timesimplymeansexecutionofthemicrocontrollerinstructionsasfastastheycanbesimulatedbythehostCPU.

RecursiveCalls

Afunctionthatcallsitself,eitherdirectlyorindirectly.

Recursion

Theconceptthatafunctionormacro,havingbeendefined,cancallitself.Greatcareshouldbetakenwhenwritingrecursivemacros;itiseasytogetcaughtinaninfiniteloopwheretherewillbenoexitfromtherecursion.

Reentrant

Afunctionthatmayhavemultiple,simultaneouslyactiveinstances.

Thismayhappenduetoeitherdirectorindirectrecursionorthroughexecutionduringinterruptprocessing.

Relocatable

Anobjectfilewhosesectionshavenotbeenassignedtoafixedlocationinmemory.

ROM

ReadOnlyMemory(ProgramMemory).Memorythatcannotbemodified.

Run

Thecommandthatreleasestheemulatorfromhalt,allowingittoruntheapplicationcodeandchangeorrespondtoI/Oinrealtime.

RuntimeModel

Describestheuseoftargetarchitectureresources.

Section

Anamedsequenceofcodeordata.

SectionAttribute

Acharacteristicascribedtoasection(e.g.,anaccesssection).

SFR

SeeSpecialFunctionRegisters.

Shell

TheMPASMassemblershellisapromptedinputinterfacetothemacroassembler.TherearetwoMPASMassemblershells:onefortheDOSversionandonefortheWindowsversion.

Simulator

Asoftwareprogramthatmodelstheoperationofdevices.

SingleStep

Thiscommandstepsthoughcode,oneinstructionatatime.Aftereachinstruction,MPLABIDEupdatesregisterwindows,watchvariables,andstatusdisplayssoyoucananalyzeanddebuginstructionexecution.YoucanalsosinglestepCcompilersourcecode,butinsteadofexecutingsingleinstructions,MPLABIDEwillexecuteallassemblylevelinstructionsgeneratedbythelineofthehighlevelCstatement.

Skew

Theinformationassociatedwiththeexecutionofaninstructionappearsontheprocessorbusatdifferenttimes.Forexample,theexecutedOpcodesappearsonthebusasafetchduringtheexecutionofthepreviousinstruction,thesourcedataaddressandvalueandthedestinationdataaddressappearwhentheOpcodesisactuallyexecuted,andthedestinationdatavalueappearswhenthenextinstructionisexecuted.Thetracebuffercapturestheinformationthatisonthebusatoneinstance.Therefore,onetracebufferentrywillcontainexecutioninformationforthreeinstructions.Thenumberofcapturedcyclesfromonepieceofinformationtoanotherforasingleinstructionexecutionisreferredtoastheskew.

Skid

Whenahardwarebreakpointisusedtohalttheprocessor,oneormoreadditionalinstructionsmaybeexecutedbeforetheprocessorhalts.Thenumberofextrainstructionsexecutedaftertheintendedbreakpointisreferredtoastheskid.

SourceCode

Theforminwhichacomputerprogramiswrittenbythe

programmer.Sourcecodeiswritteninsomeformalprogramminglanguagewhichcanbetranslatedintoormachinecodeorexecutedbyaninterpreter.

SourceFile

AnASCIItextfilecontainingsourcecode.

SpecialFunctionRegisters

Theportionofdatamemory(RAM)dedicatedtoregistersthatcontrolI/Oprocessorfunctions,I/Ostatus,timers,orothermodesorperipherals.

Stack,Hardware

LocationsinPICmicromicrocontrollerwherethereturnaddressisstoredwhenafunctioncallismade.

Stack,Software

Memoryusedbyanapplicationforstoringreturnaddresses,functionparameters,andlocalvariables.Thismemoryistypicallymanagedbythecompilerwhendevelopingcodeinahigh-levellanguage.

StaticRAMorSRAM

StaticRandomAccessMemory.ProgrammemoryyoucanRead/Writeonthetargetboardthatdoesnotneedrefreshingfrequently.

StatusBar

TheStatusBarislocatedonthebottomoftheMPLABIDEwindowandindicatessuchcurrentinformationascursorposition,developmentmodeanddevice,andactivetoolbar.

StepInto

ThiscommandisthesameasSingleStep.StepInto(asopposedtoStepOver)followsaCALLinstructionintoasubroutine.

StepOver

StepOverallowsyoutodebugcodewithoutsteppingintosubroutines.WhensteppingoveraCALLinstruction,thenextbreakpointwillbesetattheinstructionaftertheCALL.Ifforsomereasonthesubroutinegetsintoanendlessloopordoesnotreturnproperly,thenextbreakpointwillneverbereached.TheStepOvercommandisthesameasSingleStepexceptforitshandlingofCALLinstructions.

Stimulus

Inputtothesimulator,i.e.,datageneratedtoexercisetheresponseofsimulationtoexternalsignals.Oftenthedataisputintotheformofalistofactionsinatextfile.Stimulusmaybeasynchronous,synchronous(pin),clockedandregister.

Stopwatch

Acounterformeasuringexecutioncycles.

StorageClass

Determinesthelifetimeofanobject.

StorageQualifier

Indicatesspecialpropertiesofanobject(e.g.,volitile).

Symbol

Asymbolisageneralpurposemechanismfordescribingthevariouspieceswhichcompriseaprogram.Thesepiecesinclude

functionnames,variablenames,sectionnames,filenames,struct/enum/uniontagnames,etc.SymbolsinMPLABIDErefermainlytovariablenames,functionnamesandassemblylabels.Thevalueofasymbolafterlinkingisitsvalueinmemory.

SystemWindowControl

Thesystemwindowcontrolislocatedintheupperleftcornerofwindowsandsomedialogs.Clickingonthiscontrolusuallypopsupamenuthathastheitems"Minimize,""Maximize,"and"Close."

Target

Referstouserhardware.

TargetApplication

Softwareresidingonthetargetboard.

TargetBoard

Thecircuitryandprogrammabledevicethatmakesupthetargetapplication.

TargetProcessor

Themicrocontrollerdeviceonthetargetapplicationboard.

Template

Linesoftextthatyoubuildforinsertingintoyourfilesatalatertime.TheMPLABEditorstorestemplatesintemplatefiles.

ToolBar

AroworcolumnoficonsthatyoucanclickontoexecuteMPLABIDEfunctions.

Trace

Anemulatororsimulatorfunctionthatlogsprogramexecution.TheemulatorlogsprogramexecutionintoitstracebufferwhichisuploadedtoMPLABIDE'stracewindow.

TraceMemory

Tracememorycontainedwithintheemulator.Tracememoryissometimescalledthetracebuffer.

TriggerOutput

Triggeroutputreferstoanemulatoroutputsignalthatcanbegeneratedatanyaddressoraddressrange,andisindependentofthetraceandbreakpointsettings.Anynumberoftriggeroutputpointscanbeset.

UninitializedData

Datawhichisdefinedwithoutaninitialvalue.InC,

intmyVar;

definesavariablewhichwillresideinanuninitializeddatasection.

Upload

TheUploadfunctiontransfersdatafromatool,suchasanemulatororprogrammer,tothehostPCorfromthetargetboardtotheemulator.

Vector

Thememorylocationsfromwhichanapplicationstartsexecutionwhenaspecificeventoccurs,suchasaresetorinterrupt.

Warning

Analertthatisprovidedtowarnyouofasituationthatwouldcausephysicaldamagetoadevice,softwarefile,orequipment.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

WatchVariable

Avariablethatyoumaymonitorduringadebuggingsessioninawatchwindow.

WatchWindow

Watchwindowscontainalistofwatchvariablesthatareupdatedateachbreakpoint.

WatchdogTimer

AtimeronaPICmicromicrocontrollerthatresetstheprocessorafteraselectablelengthoftime.TheWDTisenabledordisabledandsetupusingconfigurationbits.

WDT

SeeWatchdogTimer.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListofControlDirectives

Directive Description Syntax

CONSTANT DeclareSymbolConstant constant<label>[=<expr>,...,<label>[=<expr>]]

#DEFINE DefineaTextSubstitutionLabel

#define<name>[[(<arg>,...,<arg>)]<value>]

END EndProgramBlock end

EQU DefineanAssemblyConstant <label>equ<expr>

#INCLUDE IncludeAdditionalSourceFile

include<<include_file>>include"<include_file>"

ORG SetProgramOrigin <label>org<expr>PROCESSOR SetProcessorType processor<processsor_type>RADIX SpecifyDefaultRadix radix<default_radix>

SET DefineanAssemblerVariable <label>set<expr>

#UNDEFINE DeleteaSubstitutionLabel #undefine<label>

VARIABLE DeclareSymbolVariable variable<label>[=<expr>,...,<label>[=<expr>]]

MultipleDirectiveExample1

Directiveshighlightedinthisexampleare:

processor

radix#includeequorgend

ProgramFunctionalDescription

ThisprogramcontinuallyalternatestheoutputonthePortBpinsfrom1'sto0's.Twodelayroutinesusinginterruptsprovidethetimingforthealternatingoutput.IfLEDswereattachedtoPortB,theywouldflash(1=on,0=off).

ThetypeofPICmicroMCUissetusingprocessor,andtheradixissettohexadecimalusingradix.Thestandardheaderfilefortheprocessorselectedisincludedusing#include.Registersareassignedusingtheequdirective.Sectionsofcodeareblockedoutusingtheorgstatement.Finally,theprogramisfinishedwithanend.

CommentedCodeListing

;**************************************;*MPASMAssemblerControlDirectives*;*ExampleProgram1*;*AlternateoutputonPortBbetween*

;*1'sand0's*;**************************************processor16f877;Settheprocessorradixhex;Settheradix#include<p16f877.inc>;IncludeheaderfileDTEMPequ0x20;SettempregisterDFLAGequ0x21;SetflagregisterDFL0equ0x00;Setflagbitorg0x00;ResetVectorgotoStartorg0x04;InterruptVectorgotoServIntorg0x06;StartProgramStartclrfPORTB;ClearPortBbsfSTATUS,RP0;SelectBank1clrfTRISB;SetPortBasoutputbcfSTATUS,RP0;SelectBank0bsfINTCON,GIE;EnableGlobalInt'sbsfINTCON,T0IE;EnableTimer0IntLoopmovlw0xFFmovwfPORTB;SetPortBcallDelay1;WaitclrfPORTB;ClearPortBbsfPCLATH,3;SelectPage3bsfPCLATH,4callDelay2;WaitbcfPCLATH,3;SelectPage0bcfPCLATH,4gotoLoop;RepeatServInt;InterruptSericeRoutinebsfSTATUS,RP0;SelectBank1bsfOPTION_REG,T0CS;StopTimer0bcfSTATUS,RP0;SelectBank0bcfINTCON,T0IF;ClearoverflowflagbcfDFLAG,DFL0;Clearflagbit

retfie;***************************************;*Delay1Routine-Timer0delayloop*;***************************************Delay1movlw0xF0;SetTimer0valuemovwfTMR0;0x00-longestdelay;0xFF-shortestdelayclrfDFLAGbsfDFLAG,DFL0;SetflagbitbsfSTATUS,RP0;SelectBank1bcfOPTION_REG,T0CS;StartTimer0bcfSTATUS,RP0;SelectBank0TLoopbtfscDFLAG,DFL0;WaitforoverflowgotoTLoop;Timer00xFF->0x00return;******************************************;*Delay2Routine-Decrementdelayloop*;******************************************org0x1900;Page3Delay2movlw0xFF;SetDTEMPvaluemovwfDTEMP;0x00-shortestdelay;0xFF-longestdelayDLoopdecfszDTEMP,FgotoDLoop;EndloopwhenDTEMP=0returnend

AdditionalComments

HeaderFiles

Aheaderfileisincludedintheprogramflowwiththe#include

directive.

#include<p16f877.inc>;Includeheaderfile

Anglebracketsareusedtoenclosethenameofthefiletobeincluded,althoughquotesmayalsobeused.Youmayspecifythecompletepathtotheincludedfile,orlettheassemblersearchforit.Formoreonsearchorder,seethediscussionofthe#includedirective().

Aheaderfileisextremelyusefulforspecifyingoften-usedconstants,suchasregisterandpinnames.Thisinformationcanbetypedinonce,andthenthefilecanbeincludedinanycodeusingtheprocessorwiththoseregistersandpins.

RegisterandBitAssignments

Youcanspecifyyourownregistersandbitsbyusingtheequdirective,asisdoneinthefollowinglines.

DTEMPequ0x20;SettempregisterDFLAGequ0x21;SetflagregisterDFL0equ0x00;Setflagbit

DTEMPandDFLAGareassignedtothevalues0x20and0x21respectively.Theywillbeusedindelayloopsintheprogramtostandforthegeneralpurposeregisters(GPRs)0x20and0x21.DFL0isassignedthevalue0x00andwillbeusedasthenameforpin0intheDFLAGregister.

FIGURE:PIC16F877REGISTERFILEMAP

UsingORG

Theorgdirectiveisusedtospecifytheprogramoriginforspecificsectionsofcode.Ifnoorgisused,codegenerationbeginsataddresszero.ForExample1,orgisusedtospecifycodeat0x00(resetaddress),0x04(interruptaddress),0x06(programstartaddress)and0x1900(Delay2address).

FIGURE:PIC16F877PROGRAMMEMORYMAP

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

Mostoftheprogramiscontainedonpage0.However,thecodefordelayroutineDelay2hasbeenplacedonpage3.Whencallingthisroutine,youmustremembertousethepagingbitsinthePCLATHtoselectpage3,andthenusethemtoswitchbacktopage0onthereturn.

bsfPCLATH,3;SelectPage3bsfPCLATH,4callDelay2;WaitbcfPCLATH,3;SelectPage0bcfPCLATH,4

MultipleDirectiveExample2

Directiveshighlightedinthisexampleare:

#define

#undefineequconstantvariableset

ProgramFunctionalDescription

Thisprogramperformsseveralcalculationsusingdefindedconstantsandvariables.Asincontroldirectives-example1,processorisusedtospecifytheprocessortype,radixisusedtospecifytheradixused,and#includeisusedtoincludeaheaderfile.Seeexample1formoreonthesedirectives.

CommentedCodeListing

;**************************************;*MPASMAssemblerControlDirectives*;*ExampleProgram2*;*Performcalculations*;**************************************processor16f877;Settheprocessorradixhex;Settheradix#include<p16f877.inc>;Includeheaderfile#defineTdistance150;Definethesymbol;Tdistance1

#defineTdistance225;Definethesymbol;Tdistance2#undefineTdistance2;RemoveTdistance2from;thesymboltabledistance_regequ0x20;Setupdistance_reg;atGPR0x20org0x00;ResetVectorgotoStartorg0x06;StartProgramStartmovlwTdistance1;MovevalueofTdistance1movwfdistance_reg;intodistance_regconstantdistance1=10;Declaredistance1;aconstantsymbolvariabledistance2;Declaredistance2;avariablesymboldistance3set10;Defineavaluefor;thesymboldistance3

Setsymboldistance3to10.

distance2=15;Givedistance2an;initialvaluedistance2=distance1+distance2;Adddistance1;todistance2distance3set15;Changevalueofdistance3distance2=distance2+distance3;Adddistance3;todistance2movlwdistance2;Movevalueofdistance2movwfdistance_reg;intodistance_regend

AdditionalComments

UsingWatchWindows

Oncetheprogrambegins,thevalueofTdistance1isplaced

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

intodistance_reg.Thiscanbeobservedinawatchwindow,wherethevalueofdistance_regwillbecome50.ThesymbolTdistance1willnotbefoundinthewatchwindowsymbollist,assymbolsdefinedusingthe#definedirectivearenotavailableforviewinginMPLABIDE.

Thefinallinesoftheexampleprogramwritethefinalvalueofdistance2todistance_reg.Ifyouhadawatchwindowopentoseedistance_regloadedwiththevalueof50,youwillseeitchangeto3A.Rememberthattheradixishexadecimal,sohexadditionwasusedtodeterminethedistance2value.

Lookinginthewatchwindowsymbollist,youwillfindthesymbolsdistance1,distance2anddistance3.However,theywillhavenovalues.ThesesymbolvaluesarenotactuallystoredonthePICmicrodevice,butimplementedonlyintheassembler.

ORGPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

org

ProgramFunctionalDescription

Thisexampleshowstheusageoftheorgdirective.Codegenerationbeginsatanaddressspcifiedbyorg<address>.Theoriginofadatatablealsocanbespecifiedbythisdirective.AdatatablemaybeplacedeitherinaprogrammemoryregionorinanEEdatamemoryregion,asincaseofPICmicrodevicewithEEdataFLASH.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.org0000;Thefollowingcodewillbe;placedinresetaddress0.gotoMain;Jumptoanaddresswhoselabel;is'Main'.org0004;Thefollowingcodewillbe;placedininterruptaddress4.gotoint_routine;Jumptoanaddresswhoselabel;is'int_routine'.org0010;Thefollowingcodesectionwill;placedstartingfromaddress10H.Main;;Writeyourmainprogramhere.;;

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

gotoMain;Loopbackto'Main'.org0100;Thefollowingcodesectionwill;beplacedstartingfromaddress;100H.int_routine;;;Writeyourinterruptservice;;routinehere.retfie;Returnfrominterrupt.org1000;Youcancreateadataor;charactertablestartingfrom;anyaddressinprogrammemory.;Inthiscasetheaddressis;1000h.ch_tbl1da"PICwithFLASH";6programmemorylocations;(startingfrom1000h)will;befilledwithsix14-bit;packednumbers,each;representingtwo7-bitASCII;characters.org2100;Theabsolueaddress2100his;mappedtothe0000locationof;EEdatamemoryinPIC16Fxxx.;Youcancreateadataor;charactertablestartingfrom;anyaddressinEEdatamemory.ch_tbl2de"PICwithFLASH";12EEdatamemorylocations;(startingfrom0)willbe;filledwith12ASCII;characters.end

ORGPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

org

ProgramFunctionalDescription

Thisexampleshowstheusageoftheorgdirective.Codegenerationbeginsatanaddressspcifiedbyorg<address>.Theoriginofadatatablealsocanbespecifiedbythisdirective.AdatatablemaybeplacedeitherinaprogrammemoryregionorinanEEdatamemoryregion,asincaseofPICmicrodevicewithEEdataFLASH.

CommentedCodeListing

listp=18c452;Selectthedevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.org0000;Thefollowingcodewillbe;programmedinresetaddress0.gotoMain;Jumptoanaddresswhoselabelis;'Main'.org0008;Thefollowingcodewillbe;programmedinhighpriority;interruptaddress8.gotoint_hi;Jumptoanaddresswhoselabelis;'int_hi'.org0018;Thefollowingcodewillbe;programmedinlowpriority;interruptaddress18h.gotoint_lo;Jumptoanaddresswhoselabelis;'int_lo'.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

org0010;Thefollowingcodesectionwill;beprogrammedstartingfrom;address10H.Main;;Writeyourmainprogramhere.;;gotoMain;Loopbackto'Main'org0100;Thefollowingcodesectionwill;beprogrammedstartingfrom;address100H.int_hi;;;Writeyourhighpriority;;interruptserviceroutinehere.retfie;Returnfrominterrupt.org0200;Thefollowingcodesectionwill;beprogrammedstartingfrom;address200H.int_lo;;;Writeyourlowpriority;;interruptserviceroutinehere.retfie;Returnfrominterrupt.org1000;Youcancreateadataor;charactertablestartingfromany;addressinprogrammemory.In;thiscasetheaddressis1000h.ch_tbl1db"PICwithFLASH"end

RADIXExample

Directiveshighlightedinthisexampleare:

listr=

radix

ProgramFunctionalDescription

Thisexampleshowstheusageoftheradixdirectivefordatapresentation.Ifnotdeclared,thenthedefaultradixisinhex(adecimal).

CommentedCodeListing

listp=16f877,r=dec;Selectthedeviceandset;radixasdecimal.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.movlw50H;50isinhexmovlw0x50;Anotherwayofdeclaring50hexmovlw50O;50isinoctalmovlw50;50isnotdeclaredashexor;octalordecimal.Sobydefault;itisindecimalasdefaultradix;isdeclaredasdecimal.radixoct;Use`radix'todeclaredefault;radixasoctal.movlw50H;50isinhex.movlw0x50;Anotherwayofdeclaring50hex.movlw.50;50isindecimal.movlw50;50isnotdeclaredashexor;octalordecimal.Sobydefault

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;itisinoctalasdefaultradix;isdeclaredasoctal.radixhex;Nowdefaultradixisinhex.movlw.50;50isdeclaredindecimal.movlw50O;50isdeclaredinoctalmovlw50;50isnotdeclaredashexor;octalordecimal.Sobydefault;itisinhexasdefaultradix;isdeclaredashex.end

SET/EQUExample

Directiveshighlightedinthisexampleare:

set

equ

ProgramFunctionalDescription

Thisexampleshowsthetheusageofthesetdirective,usedforcreatingsymbolswhichmaybeusedinMPASMassemblerexpressionsonly.Thesymbolscreatedwiththisdirectivedonotoccupyanyphysicalmemorylocationofmicrocontroller.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.perimeterset0;Thelabel'perimeter'is;assignedvalue0.areaset0;Thelabel'area'isassigned;value0.lngthequ50H;Thelabel'lngth'isassigned;thevalue50H.wdthequ25H;Thelabel'wdth'isassigned;thevalue25H.perimeterset2*(lngth+wdth);Both'perimeter'andareasetlngth*wdth;'area'valuesare;reassigned.end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

UNDEFINE/DEFINEExample

Directiveshighlightedinthisexampleare:

#undefine

#define

ProgramFunctionalDescription

Thisexampleshowsthetheusageof#UNDEFINEdirective.Asymbolnamepreviouslydefinedwiththe#DEFINEdirective,isremovedfromthesymboltableif#UNDEFINEdirectiveisused.Thesamesymbolmayberedefinedagain.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.areaset0;Thelabel'area'isassigned;thevalue0.#definelngth50H;Label'lngth'isassigned;thevalue50H.#definewdth25H;Label'wdth'isassigned;thevalue25Hareasetlngth*wdth;Reassignmentoflabel'area'.;So'area'willbereassigneda;valueequalto50H*25H.#undefinelngth;Undefinelabel'lngth'.#undefinewdth;Undefinelabel'wdth'#definelngth0;Definelabel'lngth'to'0'.end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

VARIABLE/CONSTANTExample

Directiveshighlightedinthisexampleare:

variable

constant

ProgramFunctionalDescription

Thisexampleshowsthetheusageofthevariabledirective,usedforcreatingsymbolswhichmaybeusedinMPASMassemblerexpressionsonly.Thesymbolscreatedwiththisdirectivedonotoccupyanyphysicalmemorylocationofmicrocontroller.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.variableperimeter=0;Thesymbol'perimeter'is;initializedto0variablearea;Ifasymbolisdeclaredas;variable,theninitialization;isoptional,i.e.itmayormay;notbeinitialized.constantlngth=50H;Thesymbol'lngth'is;initializedto50H.constantwdth=25H;Thesymbol'wdth'is;initializedto25H.;Aconstantsymbolalwaysneeds;tobeinitialized.perimeter=2*(lngth+wdth);ThevalueofaCONSTANTcannot

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;bereassignedafterhavingbeen;initializedonce.So'lngth'and;'wdth'cannotbereassigned.But;'perimeter'hasbeendeclared;asvariable,andsocanbe;reassigned.area=lngth*wdthend

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListofConditionalAssemblyDirectives

Directive Description SyntaxELSE BeginAlternativeAssemblyBlocktoIF elseENDIF EndConditionalAssemblyBlock endifENDW EndaWhileLoop endwIF BeginConditionallyAssembledCodeBlock if<expr>IFDEF ExecuteIfSymbolisDefined ifdef<label>IFNDEF ExecuteIfSymbolisNotDefined ifndef<label>WHILE PerformLoopWhileConditionisTrue while<expr>

IF/ELSE/ENDIFExample

Directiveshighlightedinthisexampleare:

if

elseendif

ProgramFunctionalDescription

ThisprogramdemonstratestheutilityofIF,ELSEandENDIFassemblydirectives.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.variableconfig;variableusedtodefine;requiredconfigurationof;PORTA&PORTBconfigsetD'1'RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.startifconfig==H'0';Ifconfig==H'0'istrue,clrw;assemblethemnemonicsuptomovwfTRISA;thedirective'else'.movlwH'ff'movwfTRISBelseclrw;Ifconfig==H'0'isfalse,movwfTRISB;assemblethemnemonicsuptomovlwH'ff';thedirective'endif'.movwfTRISAendifgoto$service_intretfieend

IFDEFExample

Directiveshighlightedinthisexampleare:

#define

ifdefelseendif

ProgramFunctionalDescription

Thisprogramusesthecontroldirective#define,alongwiththeifdef,elseandendifdirectivestoseletivelyassemblecodeforusewitheitheranemulatororanacutalpart.Thelistdirectivestitleandlistp=areusedtosetthetitleandprocessoranddisplaythisinformationinthelistfile.Thecontroldirective#includeisusedtoincludethestandardheaderfilefortheselecteddevice.

CommentedCodeListing

title"PICmicrowithFlashEEdatamemoryInterface"listp=12ce518#include<p12ce518.inc>;#defineEMULATED...;EmulationRequires:;MPLAB-ICE;PCM16XA0processormodule;DVA12XP80DeviceAdapter

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;DefineEMULATORatthetopofthisfile;(#defineEMULATOR);ThiswillsettheI2C_PORT,SDAandSCLlines;tocommunicateoverPortA,pins0and1.It;alsoassemblesinthenecessaryTRIS;instructionstoallowreadingfromtheSDAline.;;Toconvertthecodefortheactualpart,simplycomment;outthe#defineEMULATORlineandreassemble....#ifdefEMULATEDI2C_PORTEQU5;PortAcontrolregister,;usedforI2CSCLEQU01H;EEPROMClock,SCL(I/Obit7)SDAEQU00H;EEPROMData,SDA(I/Obit6)#elseI2C_PORTEQUGPIO;PortBcontrolregister,;usedforI2CSCLEQU07H;EEPROMClock,SCL(I/Obit7)SDAEQU06H;EEPROMData,SDA(I/Obit6)#endif...START_BITBCFI2C_PORT,SDA;Startbit,SDAandSCL;presetto"1"

WHILE/ENDWExample

Directiveshighlightedinthisexampleare:

while

endw

ProgramFunctionalDescription

Thisexampleshowstheusefulnessofdirectivewhiletoperformaloopwhileacertainconditionistrue.Thisdirectiveisusedwiththeendwdirective.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.variablei;Definethesymbol'i'asa;variable.reg_hiequ20;Assignvalue20Htolabel;reg_hi.reg_loequ21;Assignvalue21Htolabel;reg_lo.ORG0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresswhoselabel;is'start'.shift_rightmacroby_n;Beginningofamacro,which;shiftsregisterdatantimes.;Codelengthgeneratedafter;assembly,variesdependingupon;thevalueofparameter'by_n'.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

i=0;Initializevariablei.whilei<by_n;Following3linesofassembly;codearerepeatedaslongas;i<by_n.bcfSTATUS,C;Clearcarrybit.rrfreg_hi;reg_hiandreg_locontainsrrfreg_lo;16-bitdatawhichisrotated;rightthroughcarry.i+=1;Incrementloopcounteri.endw;Endwhileloop.Theloopwill;breakhereafteri=by_n.endm;Endof'shift_right'macro.org0010;Mymainprogramstartsat10H.start;Thelabel'start'isequalto;10H.shift_right3;Shiftright3timesthe16-bit;datainreg_hiandreg_lo.This;isanexample.Avalue8will;shiftdata8times.goto$end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListofDataDirectives

Directive Description Syntax

__BADRAM SpecifyinvalidRAMlocations __badram<expr>

CBLOCK DefineaBlockofConstants cblock[<expr>]

CODE_PACK NoPaddingatEndofOddByte code_pack

__CONFIG Setconfigurationfuses __config<expr>OR__config<addr>,<expr>

DA StoreStringsinProgramMemory

[<label>]da<expr>[,<expr2>,...,<exprn>]

DATA CreateNumericandTextData

data<expr>,[,<expr>,...,<expr>]data"<text_string>"[,"<text_string>",...]

DB DeclareDataofOneByte db<expr>[,<expr>,...,<expr>]DE DeclareEEPROMData de<expr>[,<expr>,...,<expr>]DT DefineTable dt<expr>[,<expr>,...,<expr>]

DW DeclareDataofOneWord dw<expr>[,<expr>,...,<expr>]

ENDC EndanAutomaticConstantBlock endc

FILL SpecifyMemoryFillValue fill<expr>,<count>

__IDLOCS SetIDlocations __idlocs<expr>

__MAXRAM SpecifymaximumRAMaddress __maxram<expr>

RES ReserveMemory res<mem_units>

CBLOCK/ENDCExample

Directiveshighlightedinthisexampleare:

cblock

endc

ProgramFunctionalDescription

ThisexampleshowstheusageofCBLOCKandENDCdirectivesfordefiningconstantsorvariablersindatamemoryspace.Thesamedirectivescanbeusedforprogrammemoryspacealso.

Theprogramcalculatestheperimeterofarectangle.Lengthandwidthoftherectanglewillbestoredinbuffersaddressedbylength(22H)andwidth(23H).Thecalculatedperimeterwillbestoredinthedouble-precisionbufferaddressedbyperimeter(i.e.20Hand21H).

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.CBLOCK0x20;Startingaddressofprogramor;datamemoryspace.Herethevalue;is20H,whichisindatamemory;space.perimeter:2;Thelabelperimeteris2-byte;wide.Address20Hand21His;assignedtothelabelperimeter.length;Address22Hisassignedtothe;labellength.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

width;Address23Hisassignedtothe;labelwidth.ENDC;Thisdirectivemustbesupplied;attheendofCBLOCKlistto;terminatethelist.clrfperimeter;Clearthebufferaddressedby;'perimeter'i.e.address20H.clrfperimeter+1;Clearaddress21H.movflength,w;Movethedatapresentinthe;registeraddressedby'length';to'w'addwfwidth,w;Adddatain'w'withdatainthe;registeraddressedby'width'.movwfperimeter;Move'w'totheregister;addressedby20H.incfszperimeter+1;Incrementregister21Hifcarry;isgenerated.bcfSTATUS,C;ClearcarrybitinSTATUS;register.rlfperimeter+1rlfperimeterincfszperimeter+1;Highbyteofperimeterisin;21Handlowbyteisin20H.goto$end

CONFIGPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

__config

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthe__configdirective.Thisdirectiveisusedtoprogramconfigurationbitsintheconfigurationregisterduringdeviceprogramming.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.__config_LP_OSC;Configurationregisteris;programmedtoselectlow;poweroscillator.Referto;datasheetfordetailsof;configurationregister.RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0.';Theinstruction'gotostart';isplacedincodesectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRT;isplacedatH'4'.;Theinstruction'goto;service_int'isplacedincode;sectionINTRT.gotoservice_int;Jumpstothelocation

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;labelled'service_int'.PGMCODE;Thisisthebeginingofthe;codesectionnamedPGM.Itis;arelocatablecodesection;sincenoabsoluteaddressis;givenalongwithdirectivestart;'CODE'.goto$service_intretfieend

CONFIGPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

__config

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthe__configdirective.Thisdirectiveisusedtoprogramconfigurationbitsintheconfigurationregisterduringdeviceprogramming.

CommentedCodeListing

listp=18c452;Selectthedevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.;codeprotectdisabled.__CONFIG_CONFIG0,_CP_OFF_0;Oscillatorswitchdisabled,RCoscillatorwithOSC2;asI/Opin.__CONFIG_CONFIG1,_OSCS_OFF_1&_RCIO_OSC_1;Brown-OutResetenabled,BORVoltageis2.5v__CONFIG_CONFIG2,_BOR_ON_2&_BORV_25_2;WatchDogTimerenable,WatchDogTimerPostScaler;count-1:128__CONFIG_CONFIG3,_WDT_ON_3&_WDTPS_128_3;CCP2pinMuxenabled__CONFIG_CONFIG5,_CCP2MX_ON_5;Stackover/underflowResetenabled__CONFIG_CONFIG6,_STVR_ON_6RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.;Theinstruction'gotostart'

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;isplacedincodesectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'8';ThecodesectionnamedINTRT;isplacedatH'4'.;Theinstruction'gotoservice_int';isplacedincodesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamedPGM.Itisa;relocatablecodesection;sincenoabsoluteaddressis;givenalongwithdirectivestart;'CODE'.goto$service_intretfieend

DAExample

Directiveshighlightedinthisexampleare:

da

ProgramFunctionalDescription

Thisexampleshowstheusefulnesofdirectivedainstoringacharacterstringintheprogrammemoryof14-bitarchitecturedevices.Thisdirectivegeneratesapacked14-bitnumberrepresentingtwo7-bitASCIIcharacters.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.ORG0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.start;Writeyourmainprogramhereto;displaythestringgivenin;'Ch_stng'.goto$ORG1000;Storethestringstartingfrom;1000H.Ch_stngda"PICmicro"Sngl_chda"A";7-bitASCIIequivalentsof'A';andaNULLcharaterwillbepacked;ina14-bitnumber.da0xff55;Places3f55inprogrammemory.;Nopacking.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

end

AdditionalComments

Determining14-BitNumbers

Forthefollowingstatement:

Ch_stngda"PICmicro"

directivedaproducesfour14-bitnumbers:2849,21ED,34E3and396FrepresentingtheASCIIequivalentofPI,Cm,icandro.

Toseehowthe14-bitnumbersaredetermined,let'slookattheASCIIvaluesofPandI,whichare50h(01010000)and49h(01001001)respectively.Eachispresentedin7-bitas(0)1010000and(0)1001001respectively.Thepacked14-bitnumberis10100001001001,whichisstoredas(00)10100001001001or2849.

DATAPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

data

ProgramFunctionalDescription

Thisexampleshowstheusefulnesofdirectivedatainstoringoneormorewordsinprogrammemory.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.ORG0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.start;Writeyourmainprogramhereto;displaythestringgivenin;'Ch_stng'.goto$ORG1000;Storethestringstartingfrom;1000H.Ch_stngdata'M','C','U';3programmemorylocations;willbefilledwithASCII;equivalentof'M','C'and;'U'.tb1_dtadata0xffff,0xaa55;Places3fffhand2a55hin;twoconsecutiveprogram;memorylocations.Asprogram;memoryis14-bitwide,

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;thelastnibblecanstore;amaximumvalue3.end

DATAPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

data

ProgramFunctionalDescription

Thisexampleshowstheusefulnesofdirectivedatainstoringoneormorewordsinprogrammemory.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.ORG0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.start;Writeyourmainprogramhereto;displaythestringgivenin;'Ch_stng'.goto$ORG1000;Storethestringstartingfrom;1000H.InPIC18Cxxxdevices,the;firstcharacterisinleast;significantbyte.Ch_stngdata'M','C','U';3programmemorylocations;willbefilledwithASCII;equivalentof'M','C'and;'U'.Ch_stg1data"MCU";2programmemorylocations;willbefilledwithtwo

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;words(16-bitnumbers),;eachrepresentingASCI;equivalentoftwo;characters.Thelast;characterwillbetakenas;NULLincaseoddnumberof;charactersarespecified.tb1_dtadata0xffff,0xaa55;Placesffffandaa55in;twoconsecutive;programmemorylocation.end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DBPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

db

ProgramFunctionalDescription

Thisexampleshowstheusefulnessofdirectivedbinstoringoneormorebyteorcharacterinprogrammemory.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.ORG0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.start;Writeyourmainprogramhere.goto$ORG1000;Storethestringstartingfrom;1000H.Ch_stngdb0,'M',0,'C',0,'U'tb1_dtadb0,0xff;Places00ffinprogrammemory;location.end

DBPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

db

ProgramFunctionalDescription

Thisexampleshowstheusefulnesofdirectivedbinstoringoneormorebyteorcharacterinprogrammemory.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.ORG0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.start;Writeyourmainprogramhereto;displaythestringgivenin;'Ch_stng'.goto$ORG1000;Storethestringstartingfrom;1000H.InPIC18Cxxxdevices,the;firstcharacterisinleast;significantbyte.Ch_stngdb'M','C','U'tb1_dtadb0,0xff;Placesff00inprogrammemory;location.end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DEPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

de

ProgramFunctionalDescription

Thisexampleshowstheusageofthededirective.ThisdirectiveisdesignedmainlyforinitializingdataintheEEdatamemoryregionofPICmicrodeviceswithEEdataFLASH.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.org2100;Theabsolueaddress2100his;mappedtothe0000locationof;EEdatamemory.ch_tbl2de"PICmicro";6EEdatamemorylocations;(startingfrom0)willbefilled;with6ASCIIcharacters.end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

DEPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

de

ProgramFunctionalDescription

Thisexampleshowstheusageofthededirective.ThisdirectiveisdesignedmainlyforinitializingdataintheEEdatamemoryregionofPICmicrodeviceswithEEdataFLASH.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.orgF0;TheabsolueaddressF0his;mappedtothe0000locationof;EEdatamemory.ch_tbl2de"PICmicro";6EEdatamemorylocations;(startingfrom0)willbefilled;with6ASCIIcharacters.end

FILLPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

fill

ProgramFunctionalDescription

Thefilldirectiveisusedtoprogramsuccessiveprogrammemorylocationswithaconstantoranassemblyinstruction.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.org0000;Thefollowingcodewillbe;programmedinresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.FILL0,INTRPT-$;Fillwith0uptoaddress3.INTRPTorg0004gotoISRFILL(gotostart),start-$;Filluptoaddress0Fhwith;instruction<gotostart>.ORG0010start;Writeyourmainprogramhere.FILL(nop),5;Fill5locationswithNOPs.goto$ISR;RETFIEEND

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

FILLPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

fill

ProgramFunctionalDescription

Thefilldirectiveisusedtoprogramsuccessiveprogrammemorylocationswithaconstantoranassemblyinstruction.ForPIC18CXXXdevices,onlyanevennumberisallowedtobespecifiedasacountoflocationstobefilled.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.org0000;Followingcodewillbeprogrammed;inresetaddress0.gotostart;Jumptoanaddresslabelled;'start'.FILL0,HI_INT-$;Fills0in2programmemory;locations:0004and0006.HI_INTorg0008gotoINTR_HFILL(gotostart),6;Fills6locations(eachlocation;is2byteswide)with3numbers;of2wordwideinstructions;<gotostart>LO_INTorg0018gotoINTR_LFILL10a9,start-$;Fillsaddress1Chand1Ehwith;10a9h

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ORG0020start;Writeyourmainprogramhere;FILL(nop),4;Fills2locations(4bytes)with;NOPgoto$INTR_H;RETFIEINTR_L;RETFIEEND

IDLOCPIC16CXXXExample

DirectiveshighlightedinthisexampleforPIC16CXXXdevicesare:

__idloc

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthe__idlocsdirective.ThisdirectiveisusedtoprogramdeviceIDbitsintheIDLOCregisterduringdeviceprogramming.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.__idlocsH'1234';SetsdeviceIDto1234.RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.;Theinstruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalong

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

start;withdirective'CODE'.goto$service_intretfieend

IDLOCPIC18CXXXExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

__idloc

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthe__idlocsdirective.ThisdirectiveisusedtoprogramdeviceIDbitsintheIDLOCregisterduringdeviceprogramming.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.__IDLOCS_IDLOC0,H'1';IDLOCregister0willbe;programmedto1.__IDLOCS_IDLOC1,H'2';IDLOCregister1willbe;programmedto2.__IDLOCS_IDLOC2,H'3';IDLOCregister2willbe;programmedto3.__IDLOCS_IDLOC3,H'4';IDLOCregister3willbe;programmedto4.__IDLOCS_IDLOC4,H'5';IDLOCregister4willbe;programmedto5.__IDLOCS_IDLOC5,H'6';IDLOCregister5willbe;programmedto6.__IDLOCS_IDLOC6,H'7';IDLOCregister6willbe;programmedto7.__IDLOCS_IDLOC7,H'8';IDLOCregister7willbe;programmedto8.RSTCODEH'0';ThecodesectionnamedRST

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;isplacedatH'0'.Theinstruction;'gotostart'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'8';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalongstart;withdirective'CODE'.goto$service_intretfieend

RESExample

Directiveshighlightedinthisexampleare:

res

ProgramFunctionalDescription

Thisexampleshowstheadvantageofresdirectiveindevelopingrelocatablecode.Theprogramcalculatestheperimeterofarectangle.Lengthandwidthoftherectanglewillbestoredinbuffersaddressedbylengthandwidth.Thecalculatedperimeterwillbestoredinthedouble-precisionbufferaddressedbyperimeter.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.UDATA;Thisdirectiveallowsthe;followingdatatobeplacedonly;inthedataarea.perimeterres2;Twolocationsofmemoryare;reservedforthelabel;'perimeter'.Addressesofthe;memorylocationswillbe;allocatedbyMPLINK.lengthres1;Onelocationofmemoryis;reservedforthelabel'length'.;Addressofthememorylocation;willbeallocatedbyMPLINK.widthres1;Onelocationofmemoryis;reservedforthelabel'width'.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;Addressofthememorylocation;willbeallocatedbyMPLINK.StartCODE0000;Followingcodewillbeplacedin;address0.gotoPER_CAL;JumptolabelPER_CALCODE;CODEdirectiveheredictatesthat;thefollowinglinesofcodewill;beplacedinprogrammemory,but;thestartingaddresswillbe;decidedbyMPLINK.PER_CALclrfperimeter;Clearthebuffersaddressedbyclrfperimeter+1;'perimeter'.movflength,w;Movethedatapresentinthe;registeraddressedby'length';to'w'.addwfwidth,w;Adddatain'w'withdatainthe;registeraddressedby'width'movwfperimeter;Move'w'totheregister;addressedby'perimeter'.incfszperimeter+1;Increment'perimeter+1'ifcarry;isgenerated.bcfSTATUS,C;ClearcarrybitinSTATUS;register.rlfperimeter+1rlfperimeterincfszperimeter+1goto$end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListofListingDirectives

Directive Description SyntaxERROR IssueanErrorMessage error"<text_string>"ERRORLEVEL SetMessgeLevel errorlevel0|1|2|<+-><msg>LIST ListingOptions list[<option>[,...,<option>]]MESSG CreateUserDefinedMessage messg"<message_text>"NOLIST TurnoffListingOutput nolistPAGE InsertListingPageEject pageSPACE InsertBlankListingLines space[<expr>]SUBTITLE SpecifyProgramSubtitle subtitl"<sub_text>"TITLE SpecifyProgramTitle title"<title_text>"

ERRORExample

Directiveshighlightedinthisexampleare:

error

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheerrorassemblerdirective,whichsetsanerrormessagetobeprintedinthelistingfileanderrorfile.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.variablebaudrate;variableusedtodefine;requiredbaudratebaudratesetD'5600';Entertherequiredvalueof;baudratehere.if(baudrate!=D'1200')&&(baudrate!=D'2400')&&(baudrate!=D'4800')&&(baudrate!=D'9600')&&(baudrate!=D'19200')error"Selectedbaudrateisnotsupported"endifRSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthe;codesectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.startgoto$service_intretfieend

ERRORLEVELExample

Directiveshighlightedinthisexampleare:

errorlevel

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheerrorlevelassemblerdirective,whichsetsthetypeofmessagesthatareprintedinthelistingfileanderrorfile.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.errorlevel0;Display/printmessages,;warningsanderrors.messg"CAUTION:Thisprogramhaserrors"errorlevel1;Display/printwarnings;anderrors.messg"CAUTION:Thisprogramhaserrors"group1udata0x20group1_var1res1;Labelofthisdirectiveisnot;atcolumn1.Thiswillgenerate;awarningno.207.errorlevel-207;Thisdisableswarningwhose;msgnumis207.group1_var2res1;labelofthisdirectiveisalso;notatcolumn1,butnowarning;isdisplayed/printed.errorlevel+207;Thisenableswarningwhose;msgnumis207

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

group2udataerrorlevel2;Display/printerrorsgroup2_var1res1;labelofthisdirectiveisnot;atcolumn1.Thiswillgenerate;awarningno.207.errorlevel1;Display/printwarnings;anderrors.group2_var2res1;labelofthisdirectiveisnot;atcolumn1.Thiswillgenerate;awarningno.207.RSTCODEH'0';ThecodesectionnamedRSTis;placedatH'0'.Theinstruction;'gotostart'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRTgotoservice_int;Label'service_int'isnot;defined.Hencethisgenerates;error[113].PGMCODE;Thisisthebeginingofthecode;sectionnamed'PGM'.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalong;withdirective'CODE'startmovwfgroup1_var1goto$end

MESSGExample

Directiveshighlightedinthisexampleare:

messg

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthemessgassemblerdirective,whichsetsamessagetobeprintedinthelistingfileanderrorfile.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.variablebaudrate;variableusedtodefine;requiredbaudratebaudratesetD'5600';Entertherequiredvalueof;baudratehere.if(baudrate!=D'1200')&&(baudrate!=D'2400')&&(baudrate!=D'4800')&&(baudrate!=D'9600')&&(baudrate!=D'19200')error"Selectedbaudrateisnotsupported"messg"onlybaudrates1200,2400,4800,9600&19200Hz"&&"aresupported"endifRSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthe;codesectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.startgoto$service_intretfieend

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListofMacroDirectives

Directive Description SyntaxENDM EndaMacroDefinition endmEXITM ExitfromaMacro exitmEXPAND ExpandMacroListing expandLOCAL DeclareLocalMacroVariable local<label>[,<label>]MACRO DeclareMacroDefinition <label>macro[<arg>,...,<arg>]NOEXPAND TurnoffMacroExpansion noexpand

EXITMExample

Directiveshighlightedinthisexampleare:

exitm

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheexitmassemblerdirective,whichcausesanimmediateexitfromamacro.Itisusedintheexampletoexitfromthemacrowhencertainconditionsaremet.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.resultequ20;Assignvalue20Htolabel;result.ORG0000;Thefollowingcodewillbeplaced;inresetaddress0.gotostart;Jumptoanaddresswhoselabelis;'start'.addMACROnum1,num2;'add'isamacro.Thevaluesof;'num1'and'num2'mustbepassed;tothismacro.ifnum1>0xff;Ifnum1>255decimal,extim;forceimmediatereturnfrom;macroduringassembly.elseifnum2>0xff;Ifnum2>255decimal,extim;forceimmediatereturnfrom;macroduringassembly.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

elsemovlwnum1;LoadWregisterwithaliteral;valueassignedtothelabel;'num1'.movwfresult;LoadWregistertoanaddress;locationassignedtothelabel;'result'.movlwnum2;LoadWregisterwithaliteral;valueassignedtothelabel;'num2'.addwfresult;AddWregisterwiththememory;locationaddressedby'result';andloadtheresultbackto;'result'.endifendifendm;Endof'add'MACROorg0010;Mymainprogramstartsat10H.start;Thelabel'start'isassignedan;address10H.add.100,.256;Call'add'MACROwithdecimal;numbers100and256assignedto;'num1'and'num2'labels,;respactively.EXTIMdirectivein;macrowillforcereturn.end

LOCALExample

Directiveshighlightedinthisexampleare:

local

ProgramFunctionalDescription

Thiscodedemonstratestheutilityoflocaldirective,whichdeclaresthatthespecifieddataelementsaretobeconsideredinlocalcontexttothemacro.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.increqu2;Assemblervariableincrisset;equalto2.add_incrmacro;Declarationofmacro'add_incr'.localincr;Localassemblervariable'incr'.incrset3;Local'incr'issetto3,in;contrastto'incr'value;of2inmaincode.clrw;wregisterissettozeroaddlwincr;wregisterisaddedtoincrand;resultplacedbackendm;inwregister.RSTCODEH'0';ThecodesectionnamedRSTis;placedatH'0'.Theinstruction;'gotostart'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamed'PGM'.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalong;withdirective'CODE'startclrw;Wregistersettozero.addlwincr;Wregisterisaddedwiththe;valueofincrwhichisnowequal;to2.add_incr;Wregisterisaddedwiththe;valueofincrwhichisnowequal;to3(valuesetlocallyinthe;macroadd_incr).clrw;Wregisterissettozeroagain.addlwincr;incrisaddedtoWregisterand;resultplacedinWregister.;incrvalueisagain2,not;affectedbythevaluesetinthe;macro.goto$service_intretfieend

MACRO/ENDMExample

Directiveshighlightedinthisexampleare:

macro

endm

ProgramFunctionalDescription

Thiscodedemonstratestheutilityofmacrodirective,whichisusedtodefineamacro.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.resultequ20;Assignvalue20Htolabel;result.ORG0000;Thefollowingcodewillbeplaced;inresetaddress0.gotostart;Jumptoanaddresswhoselabelis;'start'.addMACROnum1,num2;'add'isamacro.Thevaluesof;'num1'and'num2'mustbepassed;tothismacro.movlwnum1;LoadWregisterwithaliteral;valueassignedtothelabel;'num1'.movwfresult;LoadWregistertoanaddress;locationassignedtothelabel;'result'.movlwnum2;LoadWregisterwithaliteral

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;valueassignedtothelabel;'num2'.addwfresult;AddWregisterwiththememory;locationaddressedby'result';andloadtheresultbackto;'result'.endm;endof'add'MACROorg0010;Mainprogramstartsat10H.start;Thelabel'start'isassignedan;address10H.add.100,.90;Call'add'MACROwithdecimal;numbers100and90assignedto;'num1'and'num2'labels,;respactively.100and90willbe;addedandtheresultwillbein;'result'.end

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

ListofObjectFileDirectives

Directive Description Syntax

BANKISEL GenerateRAMbankselectingcodeforindirectaddressing bankisel<label>

BANKSEL GenerateRAMbankselectingcode banksel<label>CODE Beginsexecutablecodesection [<name>]code[<address>]

EXTERN Declaresanexternallabel extern<label>[,<label>]

GLOBAL Exportsadefinedlabel extern<label>[.<label>]

IDATA Beginsinitializeddatasection [<name>]idata[<address>]

PAGESEL GenerateROMpageselectingcode pagesel<label>

UDATA Beginsuninitializeddatasection [<name>]udata[<address>]

UDATA_ACS Beginsaccessuninitializeddatasection [<name>]udata_acs[<address>]

UDATA_OVR Beginsoverlayeduninitializeddatasection [<name>]udata_ovr[<address>]

UDATA_SHR Beginsshareduninitializeddatasection [<name>]udata_shr[<address>]

BANKISELExample

Directiveshighlightedinthisexampleare:

bankisel

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthebankiseldirective.Thisdirectivegeneratestheappropriatecodetoset/cleartheIRPbitoftheSTATUSregisterforanindirectaccess.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.group1udataH'20';group1datastoredatlocations;startingatH'20'(IRPbit0).group1_var1res1;group1_var1locatedatH'20'.group1_var2res1;group1_var2locatedatH'21'.group2udataH'120';group2datastoredatlocations;startingatH'120'(IRPbit1).group2_var1res1;group2_var1locatedatH'120'.group2_var2res1;group2_var2locatedatH'121'.RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginningofthe;codesectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.startmovlwH'20';ThispartofthecodeaddressesmovwfFSR;variablesgroup1_var1&bankiselgroup1_var1;group1_var2indirectly.clrfINDFincfFSR,FclrfINDFmovwfFSRbankiselgroup2_var1clrfINDFincfFSR,FclrfINDFgoto$service_intretfieend

BANKSELExample

Directiveshighlightedinthisexampleare:

banksel

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthebankseldirective.Thisdirectivegeneratestheappropriatecodetoset/cleartheRP0andRP1bitsoftheSTATUSregister.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.group1udataH'20';group1datastoredatlocations;startingatH'20'(bank0).group1_var1res1;group1_var1locatedatH'20'.group1_var2res1;group1_var2locatedatH'21'.group2udataH'A0';group2datastoredatlocations;startingatH'A0'(bank1)group2_var1res1group2_var2res1RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginningofthe;codesectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.startbankselgroup1_var1;Thisdirectivegeneratescode;toset/clearbankselectbits;RP0&RP1ofSTATUSregister;dependingupontheaddressof;group1_var1.clrfgroup1_var1clrfgroup1_var2bankselgroup2_var1;Thisdirectivegeneratescode;toset/clearbankselectbits;RP0&RP1ofSTATUSregister;dependingupontheaddressof;group2_var1.clrfgroup2_var1clrfgroup2_var2goto$service_intretfieend

CODEExample

Directiveshighlightedinthisexampleare:

code

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthecodedirective,whichdeclaresthebeginningofasectionofprogramcode.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthe;codesectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.start

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

clrwgoto$CODE;Thisisarelocatablecodenop;sectionsincenoaddressis;;specifiedwiththeCODE;;directive.;;service_intretfieend

GLOBAL/EXTERNExample

Directiveshighlightedinthisexampleare:

global

extern

ProgramFunctionalDescription

Theprogrammain.asm,alongwithsub.asm,demonstratetheutilityoftheGLOBALandEXTERNdirectives,whichmakeitpossibletousesymbolsinmodulesotherthanwheretheyaredefined.

CommentedCodeListing

;*******************************************************;main.asm;*******************************************************listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.UDATAdelay_valueres1GLOBALdelay_value;Thevariable'delay_value',;declaredGLOBALinthis;module,isincludedinan;EXTERNdirectiveinthemodule;sub.asm.EXTERNdelay;Thevariable'delay',declared;EXTERNinthismodule,is;declaredGLOBALinthemodule;sub.asm.

RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRSTgotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthe;codesectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgiven;alongwithdirective'CODE'.startmovlwD'10'movwfdelay_valuexorlwH'80'calldelaygotostartservice_intretfieend;*******************************************************;sub.asm;*******************************************************listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.GLOBALdelay;Thevariable'delay'declared;GLOBALinthismoduleis;includedinanEXTERNdirective;inthemodulemain.asm.EXTERNdelay_value;Thevariable'delay_value';declaredEXTERNinthismodule

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;isdeclaredGLOBALinthe;modulemain.asm.PGMCODEdelaydecfszdelay_value,1gotodelayreturnend

IDATAExample

Directiveshighlightedinthisexampleare:

idata

ProgramFunctionalDescription

Thedirectiveidataisusedwhengeneratinganobjectfile.ItreservesRAMlocationsforvariablesanddirectsthelinkertogeneratealookuptablethatmaybeusedtoinitializethevariablesspecifiedinthissection.TheStartingAddressofthelookuptablecanbeobtainedfromtheMap(.map)file.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.group1IDATA0x20;Initializeddataatlocation;20h.group1_var1res1;group1_var1locatedat0x20,;initializedwith0.group1_var2res1;group1_var2locatedat0x21,;initializedwith0.group2IDATA;Declarationofgroup2data.The;addressesforvariablesunder;thisdatasectionareallocated;automaticallybythelinker.group2_var1db1,2,3,4;4bytesinRAMarereserved.group2_var2dwH'1234';1wordinRAMisreserved.RSTCODE0x0;ThecodesectionnamedRSTis;placedatH'0'.;Followinginstruction'goto

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;start'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'.PGMCODE;CodesectionnamedPGMis;declared.Itisarelocatable;codesectionsincenoabsolute;addressisspecified.start;;end

PAGESELExample

Directiveshighlightedinthisexampleare:

pagesel

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityofthepageseldirective,whichgeneratestheappropriatecodetoset/clearPCLATHbits

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.RSTCODEH'0';ThecodesectionnamedRST;isplacedatH'0'.The;instruction'gotostart'is;placedincodesectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGM0CODEH'500';ThecodesectionnamedPGM0is;placedatH'500'.startPAGESELpage1_pgm;addressbits12&11of;page1_pgmarecopiedtoPCLATH;4&3respectively.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

gotopage1_pgmPGM1CODEH'900';ThecodesectionnamedPGM1is;placedatH'900'.Label;page1_pgmislocatedinthispage1_pgm;codesection.goto$service_intretfieend

UDATAExample

Directiveshighlightedinthisexampleare:

udata

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheudatadirective,whichdeclaresthebeginningofasectionofuninitializeddata.Thisdirectiveisusedwhengeneratinganobjectfile.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.group1udata0x20;group1datastoredatlocations;startingat0x20.group1_var1res1;group1_var1locatedat0x20.group1_var2res1;group1_var2locatedat0x21.group2udata;Declarationofgroup2data.The;addressesforvariablesundergroup2_var1res1;thisdatasectionareallocatedgroup2_var2res1;automaticallybythelinker.RSTCODEH'0';ThecodesectionnamedRSTis;placedatH'0'.Theinstruction;'gotostart'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginningofthecode;sectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalongstart;withdirective'CODE'.bankselgroup1_var1clrfgroup1_var1clrfgroup1_var2bankselgroup2_var1clrfgroup2_var1clrfgroup2_var2goto$service_intretfieend

UDATA_ACSExample

DirectiveshighlightedinthisexampleforPIC18CXXXdevicesare:

udata_acs

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheudata_acsdirective,whichisusedwhengeneratinganobjectfile.Thisdirectivedeclaresthebeginningofasectionofuninitializeddata.

CommentedCodeListing

listp=18c452;Selectdevice.#include<p18c452.inc>;Includestandardheaderfile;fortheselecteddevice.group1udata_acs0x20;group1datastoredataccess;RAMlocationsstartingat0x20.group1_var1res1;group1_var1locatedat0x20.group1_var2res1;group1_var2locatedat0x21.group2udata_acs;Declarationofgroup2data.The;addressesfordataunderthis;sectonareallocated;automaticallybythelinker.group2_var1res1;Alladdressesbewillallocatedgroup2_var2res1;inaccessRAMspaceonly.RSTCODEH'0';ThecodesectionnamedRSTis;placedatH'0'.Theinstruction;'gotostart'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'INTRTCODEH'8';ThecodesectionnamedINTRTis

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalong;withdirective'CODE'.startclrfgroup1_var1,A;group1_var1initializedtozeroclrfgroup1_var2,A;group1_var2initializedtozeroclrfgroup2_var1,A;group2_var1initializedtozeroclrfgroup2_var2,A;group2_var2initializedtozerogoto$service_intretfieend

UDATA_OVRExample

Directiveshighlightedinthisexampleare:

udata_ovr

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheudata_ovrdirective,whichisusedwhengeneratinganobjectfile.Thisdirectivedeclaresthebeginningofasectionofoverlayeduninitializeddata.

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.same_varudata_ovrH'20';Declaresanoverlayed;uninitializeddatasection;named'same_var'startingatvar1res1;locationH'20'.same_varudata_ovrH'20';Declaresanoverlayed;uninitializeddatasectionvar2res1;withthesamenameastheone;declaredabove.Thusvariables;var1andvar2areallocated;atthesameaddress.RSTCODEH'0';ThecodesectionnamedRSTis;placedatH'0'.Theinstruction;'gotostart'isplacedincode;sectionRST.gotostart;Jumpstothelocationlabelled;'start'.

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplacedin;codesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginingofthecode;sectionnamedPGM.Itisa;relocatablecodesection;sincenoabsoluteaddressisgiven;alongwithdirective'CODE'startbankselvar1;Anyoperationonvar1affectsmovlwH'FF';var2alsosincebothvariablesmovwfvar1;areoverlaid.comfvar2goto$service_intretfieend

UDATA_SHRExample

DirectiveshighlightedinthisexampleforPIC16FXXXdevicesare:

udata_shr

ProgramFunctionalDescription

Thisprogramdemonstratestheutilityoftheudata_shrdirective,whichisusedwhengeneratinganobjectfile.Thisdirectivedeclaresthebeginningofasectionofshareduninitializeddata.ThisdirectiveisusedtodeclarevariablesthatareallocatedinRAMthatissharedacrossallRAMbanks(i.e.unbankedRAM.)

CommentedCodeListing

listp=16f877;Selectthedevice.#include<p16f877.inc>;Includestandardheaderfile;fortheselecteddevice.shared_dataudata_shr;Declaresthebeginningofadata;sectionnamed'shareddata',varres1;whichissharedbyallbanks.;'var'isthelocationwhichcan;beaccessedirrespectiveof;bankselbits.bank0_varudata0X20;Declaresbeginningofadatavar0res1;sectionnamed'bank0_var',;whichisinbank0.var0is;allocatedtheaddress0x20.bank1_varudata0xa0;Declaresbeginningofadatavar1res1;sectionnamed'bank1_var',;whichisinbank1.var1is;allocatedtheaddess0xa0bank2_varudata0x120;Declaresbeginningofadata

var2res1;sectionnamed'bank2_var',;whichisinbank2.var2is;allocatedtheaddess0x120bank3_varudata0x1a0;Declaresbeginningofadatavar3res1;sectionnamed'bank3_var',;whichisinbank3.var3is;allocatedtheaddess0x1a0RSTCODEH'0';ThecodesectionnamedRSTis;placedatH'0'.Theinstruction;'gotostart'isplacedin;codesectionRST.gotostart;Jumpstothelocationlabelled;'start'.INTRTCODEH'4';ThecodesectionnamedINTRTis;placedatH'4'.Theinstruction;'gotoservice_int'isplaced;incodesectionINTRT.gotoservice_int;Jumpstothelocationlabelled;'service_int'.PGMCODE;Thisisthebeginningofthecode;sectionnamedPGM.Itisa;relocatablecodesectionsince;noabsoluteaddressisgivenalongstart;withdirective'CODE'.bankselvar0;Selectbank0.movlwH'00'movwfvar;varisaccessiblefrombank0.bankselvar1;Selectbank1.movlwH'01'movwfvar;varisaccessiblefrombank1;also.bankselvar2;Selectbank2.movlwH'02'movwfvar;varisaccessiblefrombank2;also.bankselvar3;Selectbank3.movlwH'03'

MicrochipTechnologyInc.Microchip'sWebSiteVoice:(480)792-7200Fax:(480)899-9210

Microchip'sE-mailAddress

movwfvar;varisaccessiblefrombank3;also.goto$service_intretfieend

top related