Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Mikrobasic Español
Mikrobasic Español
1. Especificacionesdemikrobasic
1.1 Predefiniendoglobalesyconstantes
1.2 Accesandoalosbitsindividuales
1.3 Interrupciones
1.3aLlamandorutinasdesdeinterrupciones
1.4Rutinasconstruidasopredefinidas(builtinroutines)
1.4aRutinas
Inc
Dec
Chr
Ord
SetBit
ClearBit
TestBit
Lo
Hi
Higher
Highest
SizeOf
Swap
Clock_Khz
Clock_Mhz
Reset
ClrWdt
1.4 Optimizacindecdigo
2. EspecificacionesdelPIC
2.1. TiposdeEficiencia
2.2.LimitacionesdeLlamadasAnidadas
2.3.EspecificacionesfamiliaPIC16
3.ReferenciadelLenguajemikroBasic.
3.1.Elementoslxicos
3.1aespaciosenblanco
3.1bcomentarios
3.1ctokens
3.1c.1literales
3.1c.2palabrasclave
3.1c.3identificadores.
3.1c.4signosdepuntuacinoseparadores
3.2 OrganizacindePrograma
3.2.a OrganizacindelPrograma
3.2.b AlcanceyVisibilidad
3.2.c Mdulos
3.3
3.4
3.5
3.6
3.7
Variables
Constantes
Etiquetas
Smbolos
FuncionesyProcedimientos
3.7.a Funciones
3.7.b Procedimientos
3.8 Tipos
3.8.a Tipossimples
3.8.b Arreglos
3.8.c Cadenas
3.8.d Punteros
3.8.e Estructuras
3.8.f Tiposdeconversin
3.8.f.1 Conversinimplcita
3.8.f.2 Conversinexplicita
3.8.f.3 Conversinaritmtica
3.9 Operadores
3.9.a Precedenciayasociatividad
3.9.b Operadoresaritmticos
3.9.c Operadoresrelacionales
3.9.d Operadoresinteligentes
3.10Expresiones
3.11Declaraciones
3.11.aDeclaracionesdeasignacin
3.11.bdeclaracionescondicionales
3.11.b.1DeclaracionesIF
3.11.b.2DeclaracionesSELECTCASE
3.11.cDeclaracionesdeIteracin(ciclos)
3.11.c.1DeclaracionFOR
3.11.c.2DeclaracionWHILE
3.11.c.3DecalaracionDO
3.11.dDeclaracionesdeSaltos
3.11.d.1DeclaracionesBREAKyCONTINUE
3.11.d.2DeclaracionEXIT
3.11.d.3DeclaracionGOTO
3.11.d.4DeclaracionGOSUB
3.11.eDeclaracionesASM
3.12Directivas
3.12.aDirectivasdelcompilador
3.12.bDirectivasdelLinker
ACERCADE
Dedicado:alaluzdemividaIzzyyamifuturoBebe
Motoresdemiexistencia
Estedocumentoeslatraduccin avecesinterpretativa,avecesayudadapor
programastraductoresdelaayudademikroBasic.Estedocumentonopersigue
ningnotrofinquenoseaayudaralosAficionadosalmundodelosPICSdehabla
hispanaydellenguajetanprometedorcomoloesmikroBasic.
Estedocumentoesgratuitoynotienecopyrightsololosquemikroelektronika
dispongaensusdocumentos.
Algunoserroresinterpretativospodrnencontrar,comounejemplodeelloesver
delantedelatraduccinlossiguientessignos(?),estoesquenopudeencontrar
la manera correcta de interpretar o traducir el enunciado. Tambin podrn
encontrardiferenciasenlatraduccin,comopuedeserlapalabra declaracin en
lugardeusarlapalabrasentencia.Dealgunaformatratedehacerunatraduccin
lomascristalinaposible,sinusarmuchasinterpretacionesaunqueavecesfue
necesarioomodismosdemipas(Mxico).
Creoyoqueeldocumentoesentendibleynospuedebrindarunpocodeayuda
parahacermasfcillainterpretacindelasreglas,instruccionesylibrerasdel
mikroBasic.Reiteroquenomanejoellenguajeinglesal100%ymenosellenguaje
tcnicoeninglesperoporlapocaexperienciaquetengousandoelmikroBasic
tratederealizarestedocumento.
Latraduccindelaayudacomomarcaenlosencabezadosdecadapginalahice
comountributoalmejorforodeMicrocontroladoresdehablahispana:TODOPIC.
Porlotantoestedocumentopertenecealforoyatodossususuarios.Pormiparte
este documento tiene licencia GPL al menos la traduccin y puede ser
modificadasiempreycuandoserespetealautororiginaldelatraduccin(eneste
casonavaismo)ysehagareferenciaalforoTODOPIC.
Pues sin nada mas que decir, solo me resta desearles suerte en este viaje
interminablehaciaalmundodelosPICSyalaintroduccindeunlenguajeenvas
dedesarrollocomoloeselBASICparaPICmicros.
Gracias a TOD@S y en especial a mikroelektronika por su Software demo:
mikroBasic
RUTINASCONSTRUIDASOPREDEFINIDAS(BUILTINROUTINES)
ElcompiladormikroBasicestaprovistodeunaserietilderutinaspredefinidas.Lasrutinas
predefinidasnorequierendenadaespecial;puedehacerusodeellasencualquierpartedel
proyecto.
Algunasrutinaspredefinidasestnimplementadascomoinline;porejemplo:elcdigosegeneraen
ellugardelallamada,paraquelallamadanoestcontraellmitedellamadasanidadas.
RUTINAS
Inc
Dec
Chr
Ord
SetBit
ClearBit
TestBit
Lo
Hi
Higher
Highest
SizeOf
Swap
Clock_Khz
Clock_Mhz
Reset
ClrWdt
Inc
Prototipo:
subfunctionInc(dimbyrefparaslongint)aslongint
Regresa:
Elvalorincrementadodelparmetro
Descripcin: Incrementaelparmetroparpor1.Notequelafuncindebeserllamadacomo
unadeclaracinautocontenida.
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas
Requiere:
Nada
Ejemplo
a=4
b=Inc(a)'aybahorasoniguala5
DEC
Prototipo:
subfunctionDec(dimbyrefparaslongint)aslongint
Regresa:
Elvalordecrementadodelparmetro
Descripcin: Decrementaelparmetroparpor1.Notequelafuncindebeserllamadacomo
unadeclaracinautocontenida
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas.
Requiere:
Ejemplo:
nada
b=Dec(a)'aybahorasoniguala3
subfunctionChr(dimcodeasbyte)aschar
Regresa:
Regresauncarcterasociadoconelcarcter
especificodecode
Descripcin: Regresauncarcterasociadoconelcarcterespecificodecode.Nmerosde0a
31sonloscdigosASCCInoimprimibles
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas.
Requiere:
Nada
Ejemplo:
c=Chr(13)'regresaunretornodecarro(enter)
Ord
Prototipo:
subfunctionOrd(dimcharacteraschar)asbyte
Regresa:
ElcdigoASCIIdecharacter
Descripcin: LafuncinregresaelcdigoASCIIdelcarcter.
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas.
Requiere:
Nada
Ejemplo:
c=Ord("A")'Cahoraes65
SetBit
Prototipo:
subprocedureSetBit(dimbyrefregisterasbyte,dimrbitas
byte)
Regresa:
Descripcin:
Nada
Lafuncin"setea"(ponerenunooverdadero)elbitrbitdelregistro.El
parmetrorbitdebeserunavariableounaliteralcuyovalorseade0...7.Vea
redefiniendoglobalesyconstantesparamayorinformacindelos
identificadoresderegistros.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraque
lallamadanoestcontraellmitedellamadasanidadas.
Nada
SetBit(PORTB,2)'seteaRB2
10
ClearBit
Prototipo:
subprocedureClearBit(dimbyrefregisterasbyte,dimrbitas
byte)
Regresa:
Descripcin:
Nada
Lafuncionalimpiaelrbitdelregistro.Elparmetrorbitnecesitaseruna
variableounaliteralcuyovalorseade0...7.Veapredefiniendoglobalesy
constantesparamayorinformacindelosidentificadoresderegistros.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para
quelallamadanoestcontraellmitedellamadasanidadas.
Nada
ClearBit(PORTC,7)'LimpiaRC7(Limpiaroponera0ofalso)
TestBit
Prototipo:
subfunctionTestBit(dimregister,rbitasbyte)asbyte
Regesa:
Descripcin:
Sielbitestaseteado(verdadero),regresa1,enotrocasoregresa0
Lafuncinrevisasielrbitdelregistroestaseteado.Siestaseteado,lafuncin
retorna1,cualquierotrocasoretorna0.Elparmetrorbitnecesitaseruna
variableoliteralcuyovalorseade0...7.Veapredefiniendoglobalesy
constantesparamayorinformacindelosidentificadoresderegistros.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para
quelallamadanoestcontraellmitedellamadasanidadas.
Nada
flag=TestBit(PORTE,2)'1siRE2estaseteado,0sinoloesta.
Lo
Prototipo:
subfunctionLo(dimnumberasbyte..longint)asbyte
Regresa:
Descripcin:
Regresalos8bitsmenoresdenumber,bits0...7
Lafuncinregresalos8bitsmenoresdenumber.Lafuncinnointerpretalos
patronesbitdenumbersolamenteregresalos8bitsencontradosenelregistro.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraque
lallamadanoestcontraellmitedellamadasanidadas.
Nada
a=Lo(0x1AC30F4)'aseriguala0xF4
11
subfunctionHi(dimnumberasword..longint)asbyte
Regresaellossiguientes8bits(byte)delos8bitsmenoresdenumber,bits8...15
Regresa:
Descripcin: LafuncinregresaelsiguienteBytedelmenorbytedenumber.Lafuncinno
interpretalospatronesbitdenumbersolamenteregresalossiguiente8bits
encontradosenelregistro.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas.
Nada
a=Hi(0x1AC30F4)'aesiguala0x30
Higher
Prototipo:
subfunctionHigher(dimnumberaslongint)asbyte
Regresa:
Regresaelsiguientebytedelbytemasaltodenumber,bits16...23
Descripcin:
Requiere:
Ejemplo:
Lafuncinregresaelsiguientebytedelbytemsaltodenumber.Lafuncin
nointerpretalospatronesbitdenumbersolamenteregresalossiguiente8
bitsencontradosenelregistro.
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para
quelallamadanoestcontraellmitedellamadasanidadas.
Nada
a=Higher(0x1AC30F4)'aesiguala0xAC
Highest
Prototipo:
subfunctionHighest(dimnumberaslongint)asbyte
Regresa:
RegresaelBytemasaltodenumber,bits24...31
Descripcin:
LafuncinregresaelBytemasaltodenumber,Lafuncinnointerpretalos
patronesbitdenumbersolamenteregresalossiguiente8bitsencontrados
enelregistro.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para
quelallamadanoestcontraellmitedellamadasanidadas.
Nada
a=Highest(0x1AC30F4)'aesiguala0x01
12
subfunctionSizeOf(dimvariable_nameasstring[100])asword
Regresa:
Descripcin:
Regresaeltamaoenbytesdelavariable
EstafuncindaeltamaoenBytesdecuntoespaciodememoriaesusado
poreloperando.
Nada
structureTStruct
dimFieldAasbyte'1byte
dimFieldBasword'2bytes
endstructure'total3bytes
Requiere:
Ejemplo:
dimSomeVarasTStruct
dimSomeOtherVarasword
main:
someOtherVar=SizeOf(SomeVar)'SomeOtherVar=3
end.
Swap
Prototipo:
subfunctionSwap(dimbyrefargasbyte)asbyte
RegresaelByteconsistentedelosnibblesintercambiados
Regresa:
Descripcin: Intercambialosnibblesaltos(bits<7..4>)ylosnibblesbajos(bits<3..0>)deel
tamaodelBytedelparmetroarg.
Nada
Requiere:
Ejemplo:
PORTB=0xF0
PORTA=Swap(PORTB)'PORTA=PORTB=0x0F
Clock_Khz
Prototipo:
subfunctionClock_Khzasword
Regresa:
Descripcin:
EldispositivorelojinKHZ,esredondeadoalenteromascercano
EldispositivorelojinKHZ,esredondeadoalenteromascercano.
Requiere
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas.
Nada
clk=Clock_Khz
13
subfunctionClock_Mhzasbyte
Regresa:
LafuncindispositivorelojenMHz,esredondeadoaelenteromascercano.
Requiere:
Ejemplo:
Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela
llamadanoestcontraellmitedellamadasanidadas.
Nada
clk=Clock_Mhz
Reset
Prototipo:
subprocedureReset
Nada
Regresa:
Descripcin: Esteprocedimientoesigualalainstruccinenensambladorreset.Este
procedimientofuncionasolamenteparalaFamiliaPIC18.
Requiere: Nada
Reset'ReseteaelPIC
Ejemplo:
ClrWdt
Prototipo:
Regresa:
Descripcin:
Requiere:
Ejemplo:
subprocedureClrWdt
Nada
Esteprocedimientoesigualalainstruccinenensambladorclrwdt
Nada
ClrWdt'LimpiaelWatchDogTimerdelPIC
Optimizacindecdigo
Laoptimizacinhasidoaadidaparaextenderlausabilidaddelcompilador,bajolacantidadde
cdigogeneradoylavelocidaddesuejecucin.Lasprincipalescaractersticasson:
PlegadoConstante
Todaslasexpresionespuedenserevaluadasaltiempodelacompilacin(porejemplouna
constante)sonreemplazadosporelresultado.(3+5>8);
LapropagacindeConstantes
Cuandounvalorconstanteestasignndoseaciertavariable,elcompiladorreconoceestoy
reemplazaelusodelavariableenelcdigoquesigueporlaconstante,contaldequeelvalorde
variablepermanezcainalterado.
14
EnumeracindeValor
Elcompilador"reconoce"sidosexpresionesrindenelmismoresultado,yporconsiguientepuede
eliminarelcmputoenteroparaunodeellos.
EliminacindecdigoMuerto
Elcdigoqueyanoesusadoenningunapartedelprograma,yquenoafectaelresultadofinalde
laaplicacin.Esautomticamenteremovido.
AsignacindelaPila
Losregistrostemporales("Pilas")seusanmsracionalmente,permitiendoexpresionesMUY
complejasparaserevaluadasconelconsumomnimodelapila.
OptimizacindeVariableslocales
Ningunavariablelocalseusasisuresultadonoafectaalgunasdelasvariablesglobalesovoltiles.
MejorGeneracindecdigoyOptimizacinlocal
LaGeneracindecdigoesmsConsistente,yMuchamsatencinsehaimplementadopara
solucionarespecficamentelaconstruccindelcdigo,parareducireltamaodecdigogenerado.
EspecificacionesdelPIC
ParaconseguirelmejorrendimientodelcompiladorMikroBasic,usteddebeestarfamiliarizadocon
ciertosaspectosdelPICmicro.Estosconocimientosnosonesenciales,peropuedenayudara
entendermejorlasposibilidadesylimitacionesdelPIC,ysuimpactoenellaescrituradelcdigo.
TiposdeEficiencia
Primeroquenada,debesaberquelaALUdelPIC,quienrealizalasoperacionesaritmticas,esta
optimizadaparatrabajarconBytes.AunqueMikroBasicescapazdetrabajarcontiposdedatos
muycomplejos,elPICpuedechocarconestos,especialmentesiestatrabajandoconmodelosmuy
viejos.Estopuedeaumentardramticamenteeltiemponecesariopararealizarhastaunasimple
operacin.Unconsejouniversalesusareltipomspequeoposibleencadasituacin.Estoaplica
engeneralparatodalaprogramacin,ydoblementeparalosMicrocontroladores.
Conozcasuherramienta,Cuandohagaclculos,notodoslosPICtienenelmismorendimiento.Por
ejemplo,laFamiliaPIC16notieneHardwareparamultiplicar2bytes,perosecompensaconun
algoritmoporsoftware.Porotrolado,lafamiliaPIC18tieneunhardwaremultiplicador,yporendela
multiplicacintrabajaconsiderablementemsrpido.
15
16
some_string="mikrofoo"
analiza4tokens,incluyendolacadenasimpledeltoken:
some_string
=
"mikrofoo"
newlinecharacter
17
TOKENS
UnTokeneselelementomaspequeoenBASICqueessignificativoparaelcompilador,El
analizadorseparalosTokensdelaentradacreandounTokenmaslargousandoloscaracteresde
izquierdaaderecha.
MikroBasicreconocelossiguientestiposdeTokens:
PalabrasClave
Identificadores
Constantes
Operadores
Signosdepuntuacin(tambinconocidoscomoSeparadores)
Ejemplodetokens
AquhayunejemplodeextraccindeTokens.Veamoselsiguientecdigo:
end_flag=0
Elcompiladoranalizaralossiguientes4tokens:
end_flag'identificadordelavariable
='operadordeasignacion
0'literal
newline'terminodeladeclaracin
Notequeend_flagseranalizadocomounidentificador,nocomolapalabraclaveendseguidade
_flag.
18
19
20
absolute
abs
and
array
asm
begin
boolean
case
char
chr
clear
const
dim
div
do
double
else
end
exit
float
for
function
goto
gosub
21
if
include
in
int
integer
interrupt
is
loop
label
mod
module
new
next
not
or
org
print
procedure
program
read
select
sub
step
string
switch
22
then
to
until
wend
while
with
xor
Mikrobasictambinincluyeunnumeropredefinidodeidentificadoresusadosenlas
libreras.Puederemplazarestosporsuspropiasdefinicionesustedplaneahacer
suspropiaslibreras.ParamasinformacinvealibrerasdeMikrobasic.
Identificadores.
Losidentificadoressonnombresarbitrariosdecualquierlongituddadosa
Funciones,variables,Constantessimblicas,tiposdedatospordefinidosporel
usuarioyetiquetas.Todosestoselementosdeprogramasonrelacionadoscon
objetosatravsdelaayuda.(noseconfundaconelterminoobjetodela
programacinorientadaaobjetos).
maysculasoMinsculas
Basicnoessensiblealasmaysculasoalasminsculas,porlotantoSum,sumy
suMsonidentificadoresequivalentes.
SingularidadyAlcance
Aunquelosnombresdelidentificadorsonarbitrarios(dentrodelasreglas
declaradas),loserroresresultansielmismonombreseusaparamsdeun
identificadordentrodelmismoalcance.Simplemente,losnombresdoblesson
ilegalesdentrodelmismoalcance.Paramsinformacin,refirasealAlcancey
Visibilidad.
23
EjemplosdeIdentificadores:
temperature_V1
Pressure
no_hit
dat2string
SUM3
_vtext
Yaquiunosidentificadoresinvlidos:
7temp'NONopuedeniniciarconunnumero
%higher'NONopuedeniniciarconcaracteresespeciales
xor'NONopuedenserunapalabrareservada
j23.07.04'NONopuedencontenerpuntos
Signosdepuntuacinoseparadores
lossignosdepuntuacindeMikroBasicson:
Corchetes
Parntesis
Comas
Dospuntos
Punto
Corchetes
Loscorchetes[]indicanunsimpleomltiplesarreglos:
dimalphabetasbyte[30]
'...
alphabet[2]="c"
ParamasinformacinveaArreglos.
Parntesis
24
DosPuntos
Losdospuntos(:)sonusadosparadeclaraunaEtiqueta:
start:nop
...
gotostart
ParamasinformacinveaEtiquetas.
25
OrganizacindelPrograma
MikroBasictieneunaestrictaorganizacindeprogramaimpuesta,debajo
encontraramodelosparaunaescrituralegibledecdigo.Paramasinformacinde
lainclusindearchivosyalcanceveaMdulosytambinAlcanceyvisibilidad.
OrganizacindelModuloPrincipal
Bsicamente,elcdigofuentetienedossecciones:declaracionesyelcuerpodel
programa.Lasdeclaracionesdebenirenlaparteapropiadadelcdigo,
organizadasdemaneraordenada,deotroformaelcompiladornosercapazde
comprenderelprogramacorrectamente.
Cuandoescribaelcdigo,sigaelmodeloquesepresentadebajo.Elmodulo
principaldeberlucirdelasiguientemanera:
program<nombredelprograma>
include<incluirotrosmdulos>
'********************************************************
'*DeclaracionesGlobales:
'********************************************************
'Declaracionessimblicas
symbol...
'declaracindeconstantes
const...
'declaracindeVariables
dim...
'declaracindeprocedimientos
subprocedurenombredelprocedimiento(...)
<Declaracioneslocales>
...
endsub
26
27
Elidentificadoresdeclaradodentrodeuna
funcinodeunProcedimiento
Elidentificadoresdeclaradoenlaseccinde
interfasedeunModulo
ElIdentificadorfuedeclaradoenlaseccin
deimplementacindeunmodulo,perono
dentrodeunafuncinoprocedimiento.
Alcance
Elalcanceseextiendedesdeelpuntodonde
fuedeclaradohastaelfinaldelarchivo,
incluyendotodaslasrutinasdentrodel
alcancedelarchivo.Esteidentificadortiene
unarchivodealcanceyesreferidocomo
GLOBAL
Elalcanceseextiendedesdeelpuntodonde
fuedeclaradohastaelfindelarutinaenuso.
EsteidentificadoresreferidocomoLOCAL
Elalcanceseextiendedelpuntodondefue
declaradohastaelfindelmoduloyhasta
cualquierotroprogramaqueuseese
modulo.Lanicaexcepcinsonlos
smbolosquetienenalcancelimitadoenel
archivoenelcualfuerondeclarados.
Elalcanceseextiendedelpuntodondefue
declaradohastaelfindelmodulo.El
identificadorestadisponibleparacualquier
funcinoprocedimientoqueestedentrodel
modulo.
28
VISIBILIDAD
Lavisibilidaddeunidentificadoreslaregindelprogramadelcdigofuentedondepuedehacerse
elaccesolegalalobjetoasociadoalidentificador.
Elalcanceylavisibilidadgeneralmentecoinciden,aunquehaycircunstanciasenlaqueunobjeto
sevuelveocultotemporalmenteporelaparenteduplicadodelidentificador.Elobjetoaunexiste
peroelidentificadornopuedeserusadoparaseraccesadohastaqueelalcancedelidentificador
duplicadotermine.
Tcnicamente,lavisibilidadnopuedeexcederalalcance,peroelalcancepuedeexcederla
visibilidad.
MODULOS
EnmikroBasiccadaproyectoconsisteenunnicoarchivodeproyecto,yunoomasarchivosde
mdulos.Elarchivoproyectoconextensin.pbpcontieneinformacinacercadelproyecto,
mientrasquelosmdulosconextensin.pbascontienenelcdigofuente.VeaOrganizacinde
programaparaverdetalladamenteelarreglodeunprograma.
Losmdulospermiten:
Separarprogramasextensosenmdulosencapsuladosquepuedenser
accesadosyeditadosindividualmente.
Crearlibrerasquepuedenserusadasendiferentesproyectos.
Distribuirlibrerasaotrosprogramadoressinincluirelcdigofuente.
Cadamoduloesguardadocomosupropioarchivoycompiladoporseparado,losmdulos
compiladossonencadenadosparacrearunaaplicacin.Paracrearunproyectoelcompilador
necesitacadaarchivofuenteoelmodulocompiladodecadamodulo.
ClusulaINCLUDE
MikroBasicincluyelosmdulosquetenganlaclusulainclude,lacualconsisteenlapalabra
reservadaincludeseguidadeelnombredelmoduloentrecomillado.Laextensindelarchivono
debeserincluida.
Puedeincluirunsoloarchivoporcadaclusulainclude.Puedehabercualquiernumerode
clusulasincludeencadacdigofuente,Peroellosdebendeclararseinmediatamentedespusdel
nombredelprograma.
Porejemplo:
29
Dndoleunnombrealmodulo,elcompiladorverificaralapresenciadelosarchivos.mcly.pbas.
Enordenespecificadoporlasrutasdebsqueda.
Siambos.mcly.pbassonencontrados,elcompiladorverificara
lasfechaseincluirelmasrecienteenelproyecto.Sielarchivo
.pbasesmasnuevoqueelarchivo.mcl,lanuevalibrera
sobrescribirlavieja
Sisoloelarchivo.pbasesencontrado,elcompiladorgenerarael
archivo.mclyloincluirenelproyecto.
Sisoloseencuentraelarchivo.mclynohaycdigofuente,el
archivo.mclseincluirenelproyectotalcomoseencuentra.
Siningunoesencontrado,elcompiladoremitirfilenotfound
(Archivonoencontrado)comounaadvertencia.
MODULOPRINCIPAL(MAIN)
Cadaproyectoenmikrobasicrequieredeunnicomoduloprincipal(main)elmoduloprincipales
identificadoporlapalabrareservadaprogramalinicio;estosirveparaqueelcompiladorsepapor
dondeempezar.
Despusdequehayacreadounnuevoproyectoconelasistentedeproyecto,eleditordecdigo
desplegaraunnuevomoduloprincipal,elcualcontienepartesdeunprograma.
programMyProject
'mainprocedure
main:
'Placeprogramcodehere
end.
Nadaquenoseauncomentariodebeirprecedidoporlapalabrareservadaprogramdespusdel
nombredelprogramaustedpuedeincluiropcionalmentelasclusulasinclude
Pongatodaslasdeclaracionesglobales(constantes,variables,etiquetas,rutinas)antesdela
etiquetamain
30
SECCIONDEIMPLEMENTACION
Laseccindeimplementacinescondetodaslasentraasirrelevantesdeotrosmdulos,
permitiendoaselencapsuladodelcdigo.
Cualquierdeclaracindebajodelapalabrareservadaimplementesesprivada.Esdecirtieneun
alcancelimitadoalarchivo.Cuandodeclareunidentificadorenlaseccindeimplementacindeun
modulo,nopodrusarlofueradeesemodulo,peropuedeusarloencualquierrutinaobloque
definidodentrodelmodulo.
Poniendoelprototipoenlaseccindeinterfase(arribadelaseccindeimplementacin)puede
hacerunarutinapublica.Esdecirvisiblefueradelmodulo.Elprototipodebecoincidirexactamente
conladeclaracin.
VARIABLES
Unavariableesunobjetocuyovalorpuedesercambiadoduranteeltiempodeejecucin.Cada
variabledebeserdeclaradabajounniconombredeidentificadorvalido.Estenombreesusado
paraaccederallugardelamemoriaqueocupalavariable.
Cadavariableesdeclaradaenlaseccindedeclaracindecualquierarchivoorutina,cada
variabledebeserdeclaradaantesdeserusada.LasvariablesGlobales(aquellasquenoestn
31
32
33
FUNCIONESYPROCEDIMIENTOS
Lasfuncionesylosprocedimientos,colectivamenteserefierenalasrutinas,sonsubprogramas
(autocontenidosenbloquesdedeclaraciones)loscualesrealizanunatareaespecificadeacuerdo
alnumerodeentradasyparmetros.Unafuncinregresaunparmetrocuandoestaesfinalizada,
unprocedimientonolohace.
NOTA:VeaespecificacionesPICparamasinformacindelalimitacionesdelasrutinasdelosPIC
micros.
FUNCIONES
Lasfuncionessondeclaradasas:
subfunctionnombredelafuncin(listadeparmetros)astipoqueregre
sa
[declaracioneslocales]
Cuerpodelafuncin
endsub
Elnombredelafunctionrepresentaelnombredeunidentificadorvalido.Eltipoqueregresa,esel
tipodelvalorregresadoporlafuncinypuedeserdetiposimple.Dentrodelosparntesis,lalista
deparmetros,sonlosparmetrosformalessimilaresaladeclaracindevariables.Enmikrobasic,
34
tmp=power(3,12)
35
TIPOS
Basicesunlenguajeestrictamentetipificado(serefierealostiposdedatos),loquesignificaque
cadavariableoconstantenecesitateneruntipoestrictodedatoconocidoparaelmomentodela
compilacin.
36
Arreglos
Cadenas
Punteros
Estructuras
(tiposdefinidosporelusuario)
TIPOSSIMPLES
Lostipossimplesrepresentanlostiposquenopuedenserdivididosenmaselementosbasicos,y
sonelmodelopararepresentarlostiposdedatoelementalesenellenguajemaquina.
AquestaunatabladelostipossimplesenmikroBasic:
Tipo
byte
char*
word
short
integer
longint
float
Tamao
8bit
8bit
16bit
8bit
16bit
32bit
32bit
Rango
0255
0255
065535
128127
3276832767
21474836482147483647
1.17549435082*1038..
6.80564774407*1038
*Eltipodedatocharpuedesertratadocomunavariablebyteencualquieraspecto.
Puedeasignarsignosalostiposdedatosusandolaconversinexplicita.Veatiposdeconversio
nesparamasinformacin.
ARREGLOS
Unarreglorepresentaunaseriedeelectosindexadosdelmismotipo(llamadostipodebase).
Comocadaelementocontienesupropioindice,losarreglospuedencontenersignificativamente
masdeunavezelmismovalor.
37
tipo[longituddelarreglo]
Cadaelementodelarregloesnumeradodesde0hastalalongituddelarreglo.Cadaelementodel
arregloesdeuntipoypuedeseraccesadoespecificandosunombreseguidodelnumerodeindice
dentrodecorchetes.
Aquunosejemplosdedeclaracionesdearreglos:
dimweekdaysasbyte[7]
dimsamplesasword[50]
main:
'Ahorapodemosaccederalosindicesdelarreglo
samples[0]=1
ifsamples[37]=0then
...
Arreglodeconstantes
Lainicializaciondelarreglodeconstantes,esasignadaporunadelimitaciondecomasdelosvalo
resdecadaindice.Porejemplo:
'declaramosunarreglodeconstantselcualcontienelosdiasdecada
mes
constMONTHSasbyte[12]=(31,28,31,30,31,30,31,31,30,31,30,31)
Notequelaindexacionestabasadadesdeelcero,porlotantoEneroeselMONTHS[0]yDiciem
breseriaelMONTHS[11]
Elnumerodelosvaloresasignadosnodeberaexcederellimtedeltipodedato,siestollegaraasu
cederelvalorasigandosera0.
ParainformacindearreglodedatosCharveaCadenas.
ArreglosMultidimensionales
Losarreglosdeunadimensionsondeltipoescalable,muchasvecesunarreglodeunadimension
esconocidotambiencomounvector.
Unarreglomultidimensionalesconstruidoporunarreglodearreglosdeunadimension.Ysonalo
jadosenunespaciodememoriadondepuedanseraccesadosfcilmente.Esdecirlosarreglosson
alojadosenfilas.Aquhayunejemplodeunarreglobidimensional:
dimmasbyte[50][20]arreglobidimensionaldetamao50x20
38
msg1=msg2'estoestabien,peroviceversaseriaunerror
Alternativamentepuedemanejarelementoporelementodelacadena,porejemplo:
39
40
41
Porejemplo,lassiguientesdeclaracionesformanunaestructurallamadaDot:
structureDot
dimxasfloat
dimyasfloat
endstructure
CadaDotcontiene2miembros:coordenadasxyy;elespaciodememoriaesalojadocuandousa
laestructura.Asiporejemplo:
dimm,nasDot
LadeclaraciondelasvariablescreadosinstanciasdelaestructuraDOT,llamadasmyn.
Unmiembropuedeestarpreviamentedefinidoenunaestructura,porejemplo:
'estructuradefiniendouncirculo:
structureCircle
dimradiusasfloat
dimcenterasDot
endstructure
Accesoalosmiembrosdelasestructuras
Puedeaccederalosmiembrosdelasestructurasusandounpunto(.)yelnombredelselectordel
miembro;Sihemosdeclaradocircle1ycircle2deunaestructuracircle:
dimcircle1,circle2asCircle
Podemosaccederasusmiembrosdeformaindividualdelasiguientemanera:
circle1.radius=3.7
circle1.center.x=0
circle1.center.y=0
Tambienpuedehacerasignacionesentrevariablescomplejas,siempreycuandolasvariablessean
delmismotipo.
circle2=circle1'estocopiaratodoslosvaloresdetodoslosmiembros
42
43
44
Convertirunenterolargo(longint)auntipocorto(short)siempresetruncanlosbitsmasaltos,
dejandointactoslosbitsmasbajos.Conviertiendountipocortoauntipolargoconelsigno
extendidoollenandoconceroslosbitsextrasdelnuevovalor.Dependiendosieldatocortoesta
signadoono,respectivamente.
NOTA:laconversindedatosdetipoflotanteaunvalorentero(enasignacionesviatipodedato
explicito)producelosresultadoscorrectossielvalordeltipoflotantenoexcedeelalcancedeltipo
dedatodeldestino.
Adetalle:
Aquestanlospasosquemikrobasicusaparaconvertirlosoperandosenexpresionesaritmeticas:
Primero,cualquierdatopequeoesconvertidodeacuerdoalassiguientesreglas:
1.
2.
3.
4.
byteseconvierteainteger
shortseconvierteainteger,conelmismovalor
shortseconvierteainteger,conelmismovalor,consignoextendido
byteseconvierteainteger,conelmismovalor,rellenadoconceros
Elresultadodelaexpresineselmismotipoqueladelos2operandos.
Aquunosejemplosdelaconversinimplicita:
2+3.1'2.+3.15.1
5/4*3.'(5/4)*3.1*3.1.*3.3.
3.*5/4'(3.*5)/4(3.*5.)/415./415./4.3.75
45
Operadores,PrecedenciayAsociatividad.
Hay4categoriasdeprecedenciaenmikroBasic.Losoperadoresqueestanenlamismacategora
tienenlamismaprecedenciaunoconotro.
Cadacategoratienereglasdeasociatividad:izquierdaaderecha(),odederechaaizquierda
().Enlaausenciadeparntesis,estasreglasresuelvenlaagrupacinconexpresindela
mismacategora.
Precedencia
4
3
2
1
Operandos
1
2
2
2
Operadores
@not+
*/divmodand<<>>
+orxor
=<><><=>=
Asociatividad
OPERADORESARITMETICOS
Losoperadoresaritmeticossonusadospararealizarcomputosmatematicos,estostienen
operadoresnumericosyregresanunvalornumerico.Comolosoperadorescharbsicamenteson
operadoresbytepuedenserusadoscomooperadoresaritmeticossinsigno.Losoperadores
necesitanserambosconsignooambossinsigno.
Todoslosoperadoresaritmticosseasociandeizquierdaaderecha.
Operador
Operacion
suma
resta
multiplicacion
division,puntoflo
Operandos
byte,short,integer,
word,longint,float
byte,short,integer,
word,longint,float
byte,short,integer,
word,float
byte,short,integer,
Resultado
byte,short,integer,
word,longint,float
byte,short,integer,
word,longint,float
integer,word,lon
gint,float
byte,short,integer,
46
tante
division,redondeoal
enteromascercano
modulo,regresael
restodeladivision
deunentero(nopue
deserusadaconva
loresflotantes.)
div
mod
word,float
byte,short,integer,
word,longint,float
byte,short,integer,
word,longint
word,float
byte,short,integer,
word,longint
byte,short,integer,
word,longint
Divisionporcero
Si0(cero)esusadocomoelsegundooperando(porejemplo,xdiv0)elcompiladorgeneraraun
errorynogeneraraelcodigo.Peroenelcasodeunadivisionimplicitaporejemploxdivydondey
esiguala0elresultadoseraelmaximovalorparaeltipodedatoapropiado.(porejemplosixyy
sontipoWordelresultadosera$FFFF).
Operadoresaritmeticosunarios.
Eloperador(menos)puedeseruadocomoelprefijounariodeunoperando,paracambiarel
signodeunvalor.Eloperadorunariomas(+)tambienpuedeserusadoperonoafectaaldato.
Porejemplo:
b:=a;
OPERADORESRELACIONALES
Uselosoperadoresrelacionalesparaprobarigualdadesodesigualdadesdelasexpresiones.Todos
losoperadoresregresanTRUE(verdadero)oFALSE(falso).
Operator
=
<>
>
<
>=
<=
Operation
Igual
Diferente
Mayorque
Menorque
Mayorigual
Menorigual
Todoslosoperadoresserelacionandeizquierdaaderecha.
47
Operador
and
or
xor
not
<<
>>
Operacin
ANDinteligente;comparaparesdebitsygenera1
siambossonunodeotromodogeneraun0
OR(inclusiva)inteligente;comparaparesdebitsy
generaun1sielresultadoes1,deotraformagenera
0
ORexclusiva(XOR);comparaparesdebitsygene
raun1sielresulatdodeambosescomplementario,
deotraformaregresa0
Complemento(unario);inviertecadabit
Corrimientoalaizquierda;muevelosbitsalaiz
quierda,descartaelbitizquierdamaslejanoyasig
na0albitdeladerecha.
Corrimientoaladerecha;muevelosbitshacialade
recha,descartaelbitdeladerechamaslejanoysi
notienesignoloasignacon0albitdelaizquierda,
deotromodoelsignoseextiende
48
and
0
1
or
0
1
xor
0
1
not
0
0
0
1
0
1
0
0
1
1
1
1
0
0
1
1
1
0
0
1
1
0
Losoperadoresinteligentesand,oryxorrealizanoperacioneslogicasconlosrespectivospares
debitsdelosoperandos.Eloperadornotcomplementecadabitdeloperando.Porejemplo:
$1234and$5678'iguala$1230
'porque..
'$1234:0001001000110100
'$5678:0101011001111000
'
'and:0001001000110000
'..estoes,$1230
'similarmente:
$1234or$5678'iguala$567C
$1234xor$5678'iguala$444C
not$1234'iguala$EDCB
Conversionessinsigno
Siunnumeroesconvertidodeuntipomenoscomplejoaunomascomplejo,losbitsmasaltos
seranrellenadosconceros.Siunnumeroesconvertidodeuntipomasacomplejoaunomenos
complejolosbitsmasaltosseperderan.
Porejemplo:
dimaasbyte
dimbasword
...
a=$AA
b=$F0F0
49
Conversionesconsigno
Siunnumeroesconvertidodeuntipomenoscomplejoaunomascomplejo.Losbitsmasaltosson
llenadosconunossielbitdesignoes1(siesnegativo);losbitsmasaltossonllenadosconceros
sielbitdesignoes0(siespositivo).Siunnumeroesconvertidodeuntipomasacomplejoauno
menoscomplejo,losbitsmasaltosseperderan.
Porejemplo:
dimaasbyte
dimbasword
...
a=12
b=$70FF
b=banda
'aseextiendeconsigno,losbytesmasaltosseran$FF;
'bsevuelve$70F4
Operadoresdecorrimiento
Losoperadoresbinarios<<y>>muevenlosbitsdeloperandoizquierdo,especificadosporun
numeroeneloperandoderecho,yaseaalaizquierdaoaladerecha.Eloperandoderechodebe
serpositivoymenorque255.
Conelcorrimientoalaizquierda(<<)losbitsmasizquierdossondescartados,ylosnuevosbits
sonllenadosconceros.Hacerelcorrimientoalaizquierdadeunoperandosinsignonposiciones
esequivalenteamultiplicarlopor2nsitodoslosbitsdescartadossoncero.Estotambienes
verdaderoparalosoperandosconsigno,sitodoslosbitsdescartadossonigualeselbitdesigno.
Conelcorrimientoaladerecha(>>)losbitsmasderechossondescartados,ylosbitsdela
izquierdasonrellenadosconceros(encasodequeseaunoperandosinsigno)oelvalordelbitde
signo(encasodequeesteseaunvalorconsigno).Hacerelcorrimientoaladerechanposiciones
esequivalenteadividirlopor2n.
EXPRESIONES
Unaexpresinsonunaseriededeclaraciones,operandos,operadoresypuntuacionesque
retornanunvalor.
Lasexpresionesprimariasincluyen:literales,constantes,variablesyllamadasafunciones.Apartir
deesto,usandooperadoressepuedencrearexpresionesmascomplejas.Formalmentelas
expresionessondefinidasrecursivamente:lassubexpresionespuedenaadirseallimitedela
memoria.
50
DECLARACIONES
Lasdeclaracionesdefinienlamaneraenqueactuanlosalgoritmosdentrodeunprograma.Cada
declaracionnecesitaestardeterminadaporunanuevalineadecarcter(enter).
Ladeclaracionmassimpleincluyeasignacines,llamadasderutinasysaltosaotrasdeclaraciones.
Estopuedeserusadoparacrearciclos,saltos,yotrasdeclaracionesestructuradas.Enlaausencia
desaltosyseleccindedeclaracines,lasdeclaracionesseranejecutadasdemanerasecuencialtal
comoestanescritasenelcodigofuente.
Vea:
Declaracionesdeasignacin
Declaracionescondicionales
Declaracionesdeiteracin(ciclos)
Declaracionesdesaltos
DeclaracionesdelenguajeEnsamblador(ASM).
Declaracionesdeasignacin
Lasdeclaracionesdeasignacintienelasiguienteforma:
variable=expresin
ladeclaracionevalualaexpresinyleasignaelvalordelavariable.Todaslasreglasdela
conversinimplicitaseaplican.Variablepuedeserdeclaradacomounavariableocomounarreglo
yexpresinpuedesercualquierexpresin.
Noconfundaelasignamientoconeloperadorrelacionaligual(=),quepruebaunaigualdad.
Mikrobasicinterpretaraelsignoigual(=)dentrodesucontexto.
51
DeclaracionesIF
Usedeclaracionesifparaimplementarunadeclaracioncondicional.Lasintaxisdelas
declaracionesIFeslasiguiente:
ifexpresionthen
declaraciones
[else
Otrasdeclaraciones]
endif
Dondelaexpresin,esevaluadasiesverdaderolasdeclaracionesseejecutan.Silaexpresin
esfalsaseejecutaranotrasdeclaraciones.Laexpresindebeserconvertidaatipobolean,deotra
formalaexpresinestamalformulada.Lapalabraclaveelseylasotrasdeclaracionesson
opcionales.
DeclaracionesdeIFsanidados
AnidarIfsrequieredeatencinespecial,lareglageneralesquelacondicionanidadaseanaliza
desdelacondicionmasprofunda,concadaelselimitandoalifmascercanodelaizquierda.
DeclaracionesSelectCase
Useladeclaracionselectcaseparapasarelcontrolosaltaraunarutinadeprograma,basadoen
unacondicioncertera.Lapalabraclaveselectcaseconsisteenunselectordeunaexpresin(una
condicion)yunalistadeposiblesvalores.Lasintaxisdeselectcaseeslasiguiente:
selectcaseselector
casevalor_1
declaraciones_1
...
casevalor_n
declaraciones_n
[caseelse
Declaraciones_default]
endselect
52
Primeroelselctoresevaluado,despussecomparaconlalistadevaloresdisponiblescasevalor,
siunvaloresencontrado,elprogramaseguiraenlasdeclaracionesdelvalorencontrado.Enle
casodemultiplesvaloresencontradoselprogramaharaunoaunoempezandoporelprimervalor
encontrado.Siningunvaloresencontradoseguiraenlasdeclaracionesdefault.
Aquunejemplosimple:
selectcaseoperator
case"*"
res=n1*n2
case"/"
res=n1/n2
case"+"
res=n1+n2
case""
res=n1n2
caseelse
res=0
cnt=cnt+1
endselect
Tambienpuedeagruparvaloresparauncaso.Simplementeseparelosvaloresporcomas:
selectcasereg
case0
opmode=0
case1,2,3,4
opmode=1
case5,6,7
opmode=2
endselect
Declaracionescaseanidadas
Notequelasdeclaracionescasepuedenseranidadas,losvaloressonasignadosalmasprofundo
selectcase.
53
nextcontador
Elcontadoresunavariablequeseincrementasegnelvalordelpasoconcadaiteracindelciclo.
Elparmetrovalordepasoesunvalorenteroopcionalysiesteesomitidoelvalorpordefectoes1,
antesdelaprimeraiteracin,elvalordelcontadorespuestoalvalorinicialyseincrementa
mientrasnoexcedaonolleguealvalorfinal,concadaiteracinlasdeclaracionessonejecutadas.
Losvaloresinicialesyfinalesdebenservalorescompatiblesconelcontador;lasdeclaraciones
puedensercualquiertipodedeclaracionessiempreycuandonoafectenelvalordelcontador.
Notequeelvalordepasopuedeserunvalornegativo,permitiendolehacercuentasregresivas.
Aquunejemplodecmocalcularelproductoescalarde2vectoresayb,delongitudnusandola
sentenciaFOR:
S=0
fori=0ton
s=s+a[i]*b[i]
nexti
Cicloinfinito
Lasentenciaforpuederesultaruncicloinfinitosielvalorfinalesigualoexcedeelrangodeltipode
datodelcontador
Porejemplo,estoresultarauncicloinfinitoyaqueelcontadornuncaalcanzaraelvalor300:
54
55
56
nexti
Lasentenciacontinueencicloswhilemueveelprogramaala
primerlineadelacondicion(arriba)
continuesaltaaqui
whilecondition
...
continue
...
wend
LasentenciacontinueenciclosDo,mueveelprogramaalalinea
delacondicion(abajo)
do
...
continue
...
'continuesaltaaqui
loopuntilcondition
DeclaracionesEXIT
Lasentenciaexitlepermiteromperunarutina(unafuncionounprocedimiento).Pasaelcontrola
lasiguienteexpresindelallamadadelarutina.
Aquunsimpleejemplo:
subprocedureProc1()
dimerrorasbyte
...'Aquisehacealgo
iferror=TRUEthen
exit
57
NOTA:sirompiounafuncion,elvalorregresadoseraelvalordelavariablelocalresultalmomento
delasalida.
DeclaracinGOTO
Uselasentenciagotoparaunsaltosincondicionesacualquieretiquetalocalparamas
informacinveaEtiquetas.Lasintaxisdeungotoes:
gotonombredeetiqueta
Estotransferiraelcontrolalaposicinallugarespecificodelnombredelaetiqueta.Lapalabra
reservadapuedeestarantesodespusdelaetiqueta,noesposiblesaltardentroofueradeuna
rutina.
Puedeusarlasentenciagotoparasalirdecualquierestructuradecontrolanidada,nuncasaltea
unaestructuradeunciclooaexpresionesestructuradas,porqueestopuedetenerefectos
impredecibles.
Usarungotopuedeserusadoencualquieralgoritmo,resultandoasiuncodigomaslegible.Una
posibleaplicacinposibedeungotopuedeserromperuncicloprofundoanidadodeuna
estructura:
fori=0ton
forj=0tom
...
ifdisaster
gotoError
endif
...
nextj
nexti
.
.
.
Error:'manejodelcodigo.
DeclaracionGOSUB
Uselasentenciagosubparaunsaltosincondicionesacualquieretiquetaparamasinformacin
veaEtiquetas.Lasintaxisdeungosubes:
gosubnombredelaetiqueta
...
58
DeclaracionesASM
mikroBasicpermiteelcodigoembebidoASM,usandolasentenciaasm.Notequenopuedeusar
numerosnidireccionesencodigoensamblador.Puedeusarnombressimbolicosenlugardeeso
(lalistadesplegaralosnombresenlugardelasdirecciones).
Puedeagruparinstruccionesenensambladorusandolasenteciaasm:
asm
bloquededeclaracionesenensamblador
endasm
LoscomentariosdeBasicnosonpermitodasenlassentenciasdebloquesasm,enlugardeeso
tendraqueusarloscomentariosdelensambladorusandopuntoycoma(;)
SiplaneausarunavariabledeBasicensucodigoasm,aseguresedequetengaunvalorinicial,de
otromodoelcompiladorreportaraunerrorynocompilaraelprograma.Estonoaplicaparalas
globlalespredefinidascomoPORTB.
Porejemploelcompiladorreportaraunerror,yaqueellinkernoescapazdereconocerlavariable
myvar:
programtest
dimmyvarasword
main:
asm
MOVLW10
MOVLWtest_main_global_myvar_1
endasm
end.
59
DIRECTIVAS
Lasdirectivassonpalabrasdeespecialimportanciaqueproporcionanfuncinalidadadicionalcon
respectoalacompilacinyelrendimiento.
Tienelassiguientesdirectivasasudisposicin:
Directivasdecompilacin,paraunacompilacincondicional
DirectivasdelLinker,paradistribuirobjetosenlamemoria.
Directivasdecompilacinodelcompilador
Todalineaenelcodigoquecomienzeconelnumeral(#)estomadacomounadirectivadel
compiladorelnumeralinicialpuedeserprecedidooseguidodeespaciosenblanco,perono
nuevaslineas.Lasdirectivasdelcompiladornodiferencianentremayusculasominusculas
Puedeusarlasdirectivasdecompilacinparaejecutarciertaspartesdelcodigoyexcluirotras.
Todaslasdirectivasdebensercompletadasenelarchivodondeseempezaron.
Directivas#DEFINEy#UNDEFINE
Useladirectiva#DEFINEparadefinirunaconstantecondicionaldelcompilador(unabanderao
flag).Puedeusarunidentificadorparaesabandera,sinningunarestriccin.Nohayconflictoscon
elprogramaysusidentificadores,cuandolasdirectivastienenunnombreespaciado.Solouna
banderapuedeserregistradapordirectiva.
Porejemplo:
#DEFINEextended_format
60
61
62
ADCLibrary
CANLibrary
CANSPILibrary
CompactFlashLibrary
EEPROMLibrary
EthernetLibrary
SPIEthernetLibrary
FlashMemoryLibrary
GraphicLCDLibrary
T6963CGraphicLCDLibrary
ICLibrary
KeypadLibrary
LCDLibrary
LCD8Library
ManchesterCodeLibrary
MultiMediaCardLibrary
OneWireLibrary
PS/2Library
PWMLibrary
63
RS485Library
SecureDigitalLibrary
SoftwareICLibrary
SoftwareSPILibrary
SoftwareUARTLibrary
SoundLibrary
SPIGLCDLibrary
SPILibrary
USARTLibrary
USBHIDLibrary
UtilLibrary
SPIGraphicLCDLibrary
PortExpanderLibrary
ConversionsLibrary
DelaysLibrary
MathLibrary
StringLibrary
Veatambienrutinaspredefinidas.
64