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
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.10Expresiones
3.9 Operadores 3.9.a Precedenciayasociatividad 3.9.b Operadoresaritmticos 3.9.c Operadoresrelacionales 3.9.d Operadoresinteligentes
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
RUTINAS
Inc Dec Chr Ord SetBit ClearBit TestBit Lo Hi Higher Highest SizeOf Swap Clock_Khz
subfunctionInc(dimbyrefparaslongint)aslongint
Elvalorincrementadodelparmetro
Descripcin: Incrementaelparmetroparpor1.Notequelafuncindebeserllamadacomo unadeclaracinautocontenida. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela llamadanoestcontraellmitedellamadasanidadas Requiere: Ejemplo Nada a=4 b=Inc(a)'aybahorasoniguala5
subfunctionDec(dimbyrefparaslongint)aslongint
Elvalordecrementadodelparmetro
subfunctionChr(dimcodeasbyte)aschar
Regresauncarcterasociadoconelcarcter especificodecode
subfunctionOrd(dimcharacteraschar)asbyte
ElcdigoASCIIdecharacter
subprocedureSetBit(dimbyrefregisterasbyte,dimrbitas byte)
Nada Lafuncin"setea"(ponerenunooverdadero)elbitrbitdelregistro.El parmetrorbitdebeserunavariableounaliteralcuyovalorseade0...7.Vea redefiniendoglobalesyconstantesparamayorinformacindelos identificadoresderegistros. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraque lallamadanoestcontraellmitedellamadasanidadas. Nada SetBit(PORTB,2)'seteaRB2
Requiere: Ejemplo:
10
ClearBit Prototipo:
subprocedureClearBit(dimbyrefregisterasbyte,dimrbitas byte)
Nada Lafuncionalimpiaelrbitdelregistro.Elparmetrorbitnecesitaseruna variableounaliteralcuyovalorseade0...7.Veapredefiniendoglobalesy constantesparamayorinformacindelosidentificadoresderegistros. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para quelallamadanoestcontraellmitedellamadasanidadas. Nada ClearBit(PORTC,7)'LimpiaRC7(Limpiaroponera0ofalso)
Regresa: Descripcin:
Requiere: Ejemplo:
subfunctionTestBit(dimregister,rbitasbyte)asbyte
Sielbitestaseteado(verdadero),regresa1,enotrocasoregresa0 Lafuncinrevisasielrbitdelregistroestaseteado.Siestaseteado,lafuncin retorna1,cualquierotrocasoretorna0.Elparmetrorbitnecesitaseruna variableoliteralcuyovalorseade0...7.Veapredefiniendoglobalesy constantesparamayorinformacindelosidentificadoresderegistros. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para quelallamadanoestcontraellmitedellamadasanidadas. Nada flag=TestBit(PORTE,2)'1siRE2estaseteado,0sinoloesta.
Requiere: Ejemplo:
subfunctionLo(dimnumberasbyte..longint)asbyte
Regresalos8bitsmenoresdenumber,bits0...7 Lafuncinregresalos8bitsmenoresdenumber.Lafuncinnointerpretalos patronesbitdenumbersolamenteregresalos8bitsencontradosenelregistro. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraque lallamadanoestcontraellmitedellamadasanidadas. Nada a=Lo(0x1AC30F4)'aseriguala0xF4
Requiere: Ejemplo:
11
subfunctionHi(dimnumberasword..longint)asbyte
Regresaellossiguientes8bits(byte)delos8bitsmenoresdenumber,bits8...15 Regresa: Descripcin: LafuncinregresaelsiguienteBytedelmenorbytedenumber.Lafuncinno interpretalospatronesbitdenumbersolamenteregresalossiguiente8bits encontradosenelregistro. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela llamadanoestcontraellmitedellamadasanidadas. Nada a=Hi(0x1AC30F4)'aesiguala0x30
subfunctionHigher(dimnumberaslongint)asbyte
Regresaelsiguientebytedelbytemasaltodenumber,bits16...23 Lafuncinregresaelsiguientebytedelbytemsaltodenumber.Lafuncin nointerpretalospatronesbitdenumbersolamenteregresalossiguiente8 bitsencontradosenelregistro. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para quelallamadanoestcontraellmitedellamadasanidadas. Nada a=Higher(0x1AC30F4)'aesiguala0xAC
Requiere: Ejemplo:
subfunctionHighest(dimnumberaslongint)asbyte
RegresaelBytemasaltodenumber,bits24...31 LafuncinregresaelBytemasaltodenumber,Lafuncinnointerpretalos patronesbitdenumbersolamenteregresalossiguiente8bitsencontrados enelregistro. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,para quelallamadanoestcontraellmitedellamadasanidadas. Nada a=Highest(0x1AC30F4)'aesiguala0x01
Requiere: Ejemplo:
12
subfunctionSizeOf(dimvariable_nameasstring[100])asword
Regresaeltamaoenbytesdelavariable EstafuncindaeltamaoenBytesdecuntoespaciodememoriaesusado poreloperando. Nada structureTStruct dimFieldAasbyte'1byte dimFieldBasword'2bytes endstructure'total3bytes 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
subfunctionClock_Khzasword
EldispositivorelojinKHZ,esredondeadoalenteromascercano EldispositivorelojinKHZ,esredondeadoalenteromascercano. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela llamadanoestcontraellmitedellamadasanidadas. Nada clk=Clock_Khz
Requiere Ejemplo:
13
subfunctionClock_Mhzasbyte
LafuncindispositivorelojenMHz,esredondeadoaelenteromascercano. Estaesunarutinainline;elcdigosegeneraenellugardelallamada,paraquela llamadanoestcontraellmitedellamadasanidadas. Nada clk=Clock_Mhz
Requiere: Ejemplo:
Reset Prototipo:
subprocedureReset
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
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:
Signosdepuntuacinoseparadores lossignosdepuntuacindeMikroBasicson:
Corchetes Loscorchetes[]indicanunsimpleomltiplesarreglos:
dimalphabetasbyte[30] '... alphabet[2]="c" ParamasinformacinveaArreglos. Parntesis
24
DosPuntos Losdospuntos(:)sonusadosparadeclaraunaEtiqueta:
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
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
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.
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
36
Tipo byte char* word short integer longint float 8bit 8bit 16bit 8bit 16bit 32bit 32bit
Tamao
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.
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
45
Precedencia 4 3 2 1
Operandos 1 2 2 2
Asociatividad
Operador + * /
div mod
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 = <> > < >= <= Igual Diferente Mayorque Menorque Mayorigual Menorigual
Operation
Todoslosoperadoresserelacionandeizquierdaaderecha.
47
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
0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1
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
50
DECLARACIONES Lasdeclaracionesdefinienlamaneraenqueactuanlosalgoritmosdentrodeunprograma.Cada declaracionnecesitaestardeterminadaporunanuevalineadecarcter(enter). Ladeclaracionmassimpleincluyeasignacines,llamadasderutinasysaltosaotrasdeclaraciones. Estopuedeserusadoparacrearciclos,saltos,yotrasdeclaracionesestructuradas.Enlaausencia desaltosyseleccindedeclaracines,lasdeclaracionesseranejecutadasdemanerasecuencialtal comoestanescritasenelcodigofuente. Vea: Declaracionesdeasignacin Declaracionescondicionales Declaracionesdeiteracin(ciclos) Declaracionesdesaltos DeclaracionesdelenguajeEnsamblador(ASM).
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:
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
57
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