Está en la página 1de 10

PICSimuladorIDE

ReferenceManualBASICCompiler

TabladeContenidos:
Informacingeneral

editorBasicCompilerestcompuestoporpaneldeeditor(paralaedicindelprograma
deusuario)yexploradordeorigen(paraunafcilnavegacinatravsdetodoslos
elementosdelprogramadeusuario-variables,smbolos,constantes,subrutinas,
procedimientosyfunciones).FormatosEditorycoloreaentradolneasdeprogramade
usuario,quesimplificaelprocesodedepuracin.Elresultadoprincipaldelcompilador
esunarchivodecdigofuenteenensamblador.Sinembargo,conuncomando
correspondienteenelmensepuedemontareinclusocargadoenelsimuladorconun
soloclic.Loscomandosdemenylasopcionessonricos,ascomoloscomandosde
losmensemergentesdeclicderechoparaeleditoryexploradordeorigen.Salidade
ensambladordelcompiladorBasiccontienemuchaslneasdecomentariostiles,que
lohacemuytilparafineseducativos,tambin.

Mostraradvertencias
SilaopcinMostraravisosestactivada,enlaventanadeadvertenciasdel
compiladorbsicomostrarinformacinacercadelasdeclaracionesnoutilizados,
subrutinas,procedimientosyfuncionesenelprogramabsicodeusuario.

Noloscompilecdigonoutilizado
Siseactivaestaopcin,elcompiladorBasicnocompilarlasdeclaracionesno
utilizados,subrutinas,procedimientosyfunciones,conelfindeahorrarrecursosde
memoria.

InicializarVariablesOnDeclaracin
Siestaopcinestactivada,compiladorbsicosepondracerotodaslasubicaciones
dememoriaasignadosparalasvariables,enlaposicindesudeclaracinenel
programabsico.Estaopcinestilparalosprincipiantes,yaquelamemoriaRAM
estllenadevaloresaleatorioseneldispositivodepuestaenmarcha,yesfcil
cometerunerrorsuponerquetodaslasvariablesseponenaceroenelencendido.Los
usuariosexperimentadospuedenahorraralgodememoriadeprograma,mediantela
desactivacindeestaopcinytomarelcontroldelosvaloresinicialesdevariablespor
programadeusuariocuandoseanecesario.

OptimizarVariablesDeclaracin
Estaopcinseactivarlarutinainternacompiladorqueoptimiceelordendela
declaracindevariablesenbasealafrecuenciadeusodelasvariables.Deesta
manera,lasvariablesutilizadasmsfrecuentementesealmacenanenposicionesde
memoriaRAMmsbajos,loqueresultaentamao,posiblementemspequeadel
cdigogenerado.

Optimizarlamemoriadelprogramadepaginacin
Siestaopcinestactivada,larutinainternacompiladoroptimizarlagestindelos
bitsdelregistroPCLATH3y4,quecontrolanlaejecucindesentenciasGOTOy
convocatoriaparalosprogramasqueutilizanmsdeunapginadelamemoriadel
programa.Serecomiendaactivarestarutinadeoptimizacinslosieltamaodel
cdigogeneradoseacercalautilizacindelamemoriadelprogramacasitodoslos
disponibles,yaquepuedeaumentarnotablementeeltiempototaldelacompilacindel
programa.Sinembargo,suejecucintendrunimpactosignificativoeneltamaodel
cdigogenerado,haciendoespacioadicionalparalaslneasmsbsicasdel
programa.
Acercadelasvariables

seadmitencincotiposdedatos:
Bit- 1 bits, 0 o 1
Byte- nmeros enteros de 1 byte en el rango de 0 a 255
Word-enterosde2bytesenelrangode0a65.535
Long-enterosde4bytesenelrangode0a4.294.967.295
Single-4deunsolobyteprecisinnmerosdepuntos,7dgitosdeprecisin,
modificadasestndarIEEE754flotante
Variablespuedenserglobales(declaradaenelprogramaprincipal,antesdela
instruccinEnd)olocal(declaradaensubrutinas,procedimientosy
funciones).Nombredelavariableutilizadaparaunavariableconalcanceglobalpuede
serutilizadodenuevoparalosnombresdevariableslocales.Elcompiladorreservar
posicionesdememoriaseparadosparaellos.Elnmerototaldevariableseslimitado
porlamemoriaRAMdelmicrocontroladordisponible.Lasvariablessedeclaran
mediantesentenciaDIM:
Dim i As Bit
Dim j As Byte
Dim k As Word
Dim x As Long
Dim y As Single
Siesnecesario,ladireccindelavariablesepuedeespecificardurantela
declaracin:
Dim x As Byte @ 0x050
EsposibleutilizarunoarraysunidimensionalesparaByte,Word,Longylasvariables
individuales.Porejemplo:
Dim x (10) As Byte

Declaraunarrayde10variablesByteconndicedematrizenelrango[0-9]tipode
datosLong(apoyoaritmticaenterade32bits)esuncomplementoopcionalparael
mdulointegradocompiladorbsico.tipodedatosSingle(apoyodematemticasde
puntoflotante)esunadd-onopcionalmduloparaelcompiladorbsicointegrado.
DeclaracinRESERVApermiteelusoavanzadomediantelareservadealgunosdelos
lugaresdememoriaRAMparaserusadoporlasrutinasdeensambladorencdigoo
MPLABdepuradorencircuito.Porejemplo:
Reserva 0x70
AltaybajadebytesdeunavariablePalabrasepuedeabordar.HByextensiones.LB.
Losbitsindividualespuedenserabordadaspor0,0,0,1,...,0.14y0.15
extensiones.EsposiblehacerconversionesentreByteylostiposdedatosdeWord
utilizandoLByextensionesdeHBodirectamente:..
Dim x As Byte
Dim y As Word
x = y.HB
x = y.LB 'This statement is equivalent to x = y
y.HB = x
y.LB = x
y = x 'This statement will also clear the high byte of y
variable
Palabraalta(compuestaporbytes3y2)ybajopalabra(compuestaporlosbytes1y0)
deunlargo(Single)variablepuedeserabordadopor.HWy.ExtensionesLW.Byte0
puedeserdirigidapor.LByelbyte1.PorextensionesdeHB.Elterceroyelcuarto
bytedelargoylasvariablesindividualessepuedenabordarpor0,3By0,4B
extensiones.Losbitsindividualespuedenserabordadaspor0,0,0,1,...,0.31
extensiones.Porejemplo:
Dim i As Byte
Dim j As Word
Dim x As Long
i = x.LB
j = x.HW
Todoslosregistrosdefuncionesespeciales(SFR)estndisponiblescomovariables
byteenlosprogramasbsicos.LosbitsindividualesdeunavariableBytepuedenser
abordadaspor0.0,0.1,0.2,0.3,0.4,0.5,0.6y0.7lasextensionesoelusodelos
nombresoficialesdelosbits:
Dim x As Bit
Dim y As Byte
x = y.7
y.6 = 1
TRISA.1 = 0
TRISB = 0
PORTA.1 = 1
PORTB = 255
STATUS.RP0 = 1
INTCON.INTF = 0
Formascortasestndarparaaccesoalosregistrosdepuertosypinesdechips
individualestambinestndisponibles(RA,RB,RC,RD,REsepuedeutilizarcomo
variablesByte;RA0,RA1,RA2,...,RE6,RE7estndisponiblescomovariablesde
bit):
RA = 0xff
RB0 = 1
Esposibleutilizarnombressimblicos(smbolos)enlosprogramas,paraatender
fcilmentelasvariablesdelsistema.Lossmbolospuedenserglobalesolocales.
Directivasmboloseutilizaparadeclararlosnombressimblicos:
Symbol led1 = PORTB.0
led1 = 1
Symbol ad_action = ADCON0.GO_DONE
Lasconstantessepuedenutilizarenelsistemanumricodecimalsinmarcas
especiales,ensistemadenumeracinhexadecimalcon0xoldernotacin$(oconH
alfinal)yenelsistemabinarioconlasprincipalesmarca%(oconBalfinal).Valor
ASCIIdeuncarcterpuedeserexpresadaenformatodecadena(porejemplo,
"A").PalabrasclaveVerdaderoyFalsotambinestndisponiblesparalasconstantes
detipobit.Porejemplo:
Dim x As Bit
Dim y As Byte
x = True
y = 0x55
y = %01010101
y = "Y"
LasconstantessepuedenasignaralosnombressimblicosdirectivausingCONST.
Lasconstantespuedenserglobalesolocales.Unejemplo:
Dim x As Single
Dim y As Word
Const pi = 3.14159
Const high = 1023
x = pi
y = high
CualquiervariableenterasepuedeutilizarcomounpunteroalamemoriaRAMde
usuariocuandoseusacomounargumentodelafuncindepuntero.Elvalorcontenido
enlavariablequeseutilizacomounpunterodebeestarenelrangode0-511.Heaqu
unejemplo:
Dim x As Word
Dim y As Byte
x = 0x3f
y = Pointer(x)
y = y + 0x55
x = x - 1
Pointer(x) = y
y = 0xaa
x = x - 1
Pointer(x) = y
Esposibleutilizarloscomentariosenlosprogramasdecdigobsicas.Los
comentariosdebencomenzarconelsmbolodecomillasimple(')ysepuedeponeren
cualquierpartedelprograma.
Lneasdecdigofuenteensambladorsepuedencolocarencualquierlugarenel
programafuentebsicaydebencomenzarconASM:prefijo.Siseutilizanetiquetas,
nohayespaciodebedejarseentreelASM:prefijoylaetiqueta.Porejemplo:
ASM: NOP
ASM:LABEL1: MOVLW 0xFF
Nombressimblicosdetodaslasvariables,smbolosyconstantes(globalylocal)
puedenutilizarsecomoargumentosdedeclaracionesdeensamblador.Estotambin
esvlidoparalasvariablesdebitseinstruccionesdeensambladororientadosabits.El
compiladorreemplazaresenombresimblicoconlacorrespondientedireccin
variableovalorconstante:
Dim varname As Byte
varname = 0
ASM: MOVLW 0xFF
ASM: MOVWF VARNAME
Cuandosetrabajaconcdigoensambladorenlnea,puedesertilelusoderegistro
detrabajocomoorigenodestinoenlosestadosasignar.Atalefectolapalabraclave
WREGdebeutilizarseyelcompiladorseencargadelcontroldelbanco:
Dim varname As Byte
ASM: MOVLW 0xFF
varname = WREG
Sisedebeutilizargrancantidaddecdigoensamblador,quesepuedecargardesde
unarchivoensambladorexternoeincluyalprogramaactualmedianteDirectiva
IncludeASM.Sunicoargumentoesunacadenaquecontienelarutadeaccesoal
archivoexterno.ASM.Estopuedeserlarutacompletaosloelnombredelarchivo,si
elarchivoexternoseencuentraenlamismacarpetaqueelarchivoactualprograma
bsico.Duranteelprocesodecompilacindelcdigoensambladorexternose
adjuntaralprogramaactualensuextremo,ynoenlaposicindeladirectiva.Varios
archivospuedenserincluidosconlasdirectivasIncludeASMseparadas.Archivosde
ensambladorexternosnodebencontenerASM:prefijoqueseutilizaparaelcdigo
ensambladorenlnea.TambinsesugiereencarecidamentenousardirectivasORG
enelcdigoensambladorexterno.

Matemticosyoperacioneslgicas

cincooperacionesaritmticas(+,-,*,/,MOD)estndisponiblesparalostiposdedatos
enteros.OperacinMODnoesaplicableparalasvariablesindividualesdetiposde
datos.Elcompiladorescapazdecompilartodaslasposiblesexpresionesaritmticas
complejas,incluidoslosquecontienenfuncionesmatemticasyfuncionesdefinidas
porelusuario.Porejemplo:
Dim i As Word
Dim j As Word
Dim x As Word
i = 123
j = i * 234
x = 2
x = (j * x - 12345) / (i + x)

Razcuadradadeunnmeroentero(0-65535rango)sepuedecalcularutilizandola
funcinSQR:
Dim x As Word
x = 3600
x = Sqr(x)
Haycincofuncionesindividualesdeprecisinmatemtica(SQRT,LOG,EXP,SIN,
COS)quesepuedenutilizarconvariablesdetipodedatosnico.LOGcalcularel
logaritmonaturaldeunnmeroreal.Todaslasfuncionesmatemticastambinse
puedenutilizarenexpresionesmatemticascomplejas.Porejemplo:
Dim x As Single
x = 2
x = Sqrt(x)
ParalasvariablesdetipodedatosBitsieteoperacioneslgicasdisponibles.Sepuede
hacerslounaoperacinlgicaenunasolasentencia.Lasoperacioneslgicas
tambinestndisponiblesparaotrostiposdevariables.Porejemplo:
Example1:
Dim i As Bit
Dim j As Bit
Dim x As Bit
x = Not i
x = i And j
x = i Or j
x = i Xor j
x = i Nand j
x = i Nor j
x = i Nxor j

Example2:
Dim x As Word
Dim y As Word
x = x Or y
PORTB = PORTC And %11110000
Haytresafirmacionesqueseutilizanparalamanipulacindebits-alto,bajoy
basculantes.Sielargumentodeestosestadosesunpocoenunodelosregistros
PORT,elmismobitenelregistroTRIScorrespondienteseborraautomticamente,
estableciendoelpinafectadoscomounpindesalida.Algunosejemplos:
High PORTB.0
Low ADCON0.ADON
Toggle OPTION_REG.INTEDG
SaltosincondicionalessonrealizadosporinstruccinGOTO.Utilizalalneanombrede
laetiquetacomoargumento.Etiquetasdelneapuedeserglobalolocal.Etiquetasde
lneadebenserseguidosporelsignodedospuntos':'.Heaquunejemplo:
Dim x As Word
x = 0
loop: x = x + 1
Goto loop
Cuatroestructurasbsicasestndarsoncompatibles:FOR-A-PASOSIGUIENTE,
CUANDO-FSlaIF-THEN-ELSE-ENDIFySELECTCASE-CASE-ENDSELECT.Aqu
hayvariosejemplos:
Example1:
Dim x As Byte
TRISB = 0
x = 255
While x > 0
PORTB = x
x = x - 1
WaitMs 100
Wend
PORTB = x

Example2:
TRISB = 0
loop:
If PORTA.0 Then
PORTB.0 = 1
Else
PORTB.0 = 0
Endif
Goto loop

Example3:
Dim x As Word
TRISB = 0
For x = 0 To 10000 Step 10
PORTB = x.LB
Next x

Example4:
Dim i As Byte
Dim j As Byte
Dim x As Byte
j = 255
x = 2
TRISB = 0
For i = j To 0 Step -x
PORTB = i
Next i

Example5:
Dim x As Byte
loop:
Select Case x
Case 255
x = 1
Case <= 127
x = x + 1
Case Else
x = 255
EndSelect
Goto loop
Foraceptartodoslostiposdevariablesdisponiblesparalavariablecorriente.ExitFor
proporcionaunamaneradesalirdeunbucleFor-Next.Setransfiereelcontrolala
instruccinquesigueaNext.Despussentenciaif-thenenlamismalneasepuede
colocarcasicualquierotradeclaracinposibleyluegoENDIFnoseutiliza.Nohay
lmitesparaelnmerodeinstruccionesanidadasdeningntipo.Enlasexpresionesde
lapruebadeIF-THENydeclaraciones,sibienesposibleutilizarmltiplesORedy
mltiplescondicionesrelacinAND.Seisoperadoresdecomparacinestndarestn
disponibles:=,<>,>,>=,<,<=.Variascondicionesseparadosporcomassepueden
utilizarconlasinstruccionesCASE,tambin.
Sihayunanecesidaddeinsertarunbucleinfinitoenelprogramabsico,quesepuede
hacerconladeclaracinHALT.
Subprogramas

programasestructuradossepuedenescribirconllamadasasubrutinasconGOSUB
queutilizalneadenombredelaetiquetacomoargumento.Retornodesdeuna
subrutinaserealizamediantelainstruccinRETURN.Usuarionecesitatenercuidado
dequelaestructuradelprogramaesconsistente.Alutilizarsubrutinas,principal
necesidadderutinaqueseterminconladeclaracinEND.InstruccinENDse
compilacomounbucleinfinito.Heaquunejemplo:
Symbol ad_action = ADCON0.GO_DONE
Symbol display = PORTB
TRISB = %00000000
TRISA = %111111
ADCON0 = 0xc0
ADCON1 = 0
High ADCON0.ADON
main:
Gosub getadresult
display = ADRESH
Goto main
End

getadresult:
High ad_action
While ad_action
Wend
Return

Elementosdellenguajemicrocontroladorrelacionados

puertosypinesdelmicrocontroladorsepuedenconfigurarcomoentradasosalidas
mediantelaasignacindevalorespropiosregistrosTRISXosusbits.Estatarease
puederealizartambinporunadeclaracinCONFIGPIN.Susintaxisesevidentea
partirdelossiguientesejemplos:
ConfigPin PORTB = Output
ConfigPin RA0 = Output
ConfigPin PORTC.3 = Input
ConfigPin RD = Input

TodoslosmicrocontroladoresPICquecuentanconcapacidadesanalgicas
(convertidoresA/Dy/ocomparadoresanalgicos)seconfiguranenelencendido
parausarlospinscomplicadoparaestosefectosanalgicos.Parautilizarlospines
comoentradas/salidasdigitales,debenserconfiguradosparausodigitalcambiando
losvaloresenalgunasdelasfuncionesespecialesdelosregistroscomoseespecifica
enlasfichastcnicas.Paraconfigurartodoslospinesparafinesdigitales,declaracin
ALLDIGITALsepuedeutilizareneliniciodelprogramabsico.

HaydosparmetrosdeconfiguracinCONFIG(CONFIG1,CONF_WORD)y
CONFIG2(CONF_WORD_2)(nodisponibleparatodoslosdispositivos)quesepuede
ajustarusandodirectivaDEFINEparaanularlosvalorespredeterminados.La
frecuenciaderelojdeldispositivodedestinosepuedeespecificarestableciendoel
parmetroCLOCK_FREQUENCY(elvalorestexpresadoenMHz).Estosparmetros
debenserdeconfiguracineneliniciodelprogramabsico.Porejemplo:
Define CONFIG = 0x3f72
Define CLOCK_FREQUENCY = 20
LalistacompletadetodoslosparmetrosdisponiblesparaladirectivaDefinir,junto
consusvalorespordefectoypermiteintervalosdevalores,sepuedenencontrarenel
ltimotemadeestedocumento.
ContenidodelamemoriaEEPROMsepuededefinirenlosprogramasbsicosde
instruccinusingEEPROM.Suprimerargumentoesladireccindelprimerbyteenla
listadedatos.DeclaracionesEEPROMmltiplespuedenserutilizadasparallenaren
diferentesreasdelamemoriaEEPROM,siesnecesario.Porejemplo:
EEPROM 0, 0x55
EEPROM 253, 0x01, 0x02, 0x03
Elementosespecialesbsicosdeidioma

declaracionesWaitmsyWAITUSpuedenserusadosparaforzarelprogramaque
esperaraqueelnmeroespecificadodemilisegundosomicrosegundos.Tambines
posibleutilizarargumentosvariabledeByteotipodedatosdeWord.Estasrutinas
utilizanRelojparmetrodefrecuenciaquesepuedecambiarenelmende
Opciones.RutinaWAITUStieneunretrasomnimoyelpasoquetambindependedel
parmetroFrecuenciadereloj.
Dim x As Word
x = 100
WaitMs x
WaitUs 50

También podría gustarte