Está en la página 1de 4

9/4/2017 TutorialdeArduinodesde0Tutorial12Operacionesconbits(1)|GeekChickens

Buscador
Geek Chickens Buscar

Inicio Tutoriales Arduino LCD MiCPU Reciclaje RFID Otros

-- Tutorial de Arduino desde 0 -- Tutorial 12;


Operaciones con bits (1)

Nuevo
MOKKA X

steserelprimerodeunoscuantostutorialesdondeexplicaremossobrelamanipulacinyoperacionesconbits.

Operacionesconbits:

operador&

PermitehacerunamscaratipoANDcondosvalores.Ququieredecireso?veamosunejemplo:

intnumero_1=6//enbinarioes100
intnumero_2=3//enbinarioes10 > CONFIGRALO

intresultado=numero_1&numero_2

0110//numero_1
0011//numero_2
*Validez de la oferta hasta el 30/06/17
LEGAL
0010

Hemoshechounamultiplicacinconlosdosnmerosyelresultadohasidoelnumero10(numero2en
decimal).Estetipodeoperadornospuedeirbiencuandoqueramoseliminarlapartealtaobajadeunaposicin Entradas populares
delamemoria.

Controldeaccesoconlectorde
Lamemoriatienedospartes,laaltaylabaja.Normalmente,cadaunaestcompuestapor4bits:
tarjetasRFIDusandoArduino
Enestetutorialexplicarcmomontar
unlectordetarjetasytags(llaves)de
tipoRFID(porsialguienseanimayse
quiereinstalaru...

LeercdigotagconmduloRFID
"RFIDRC522"
Viendoquemuchagentelopeda,he
creadouncdigoparaleerlostags,el
cdigoacontinuacin://GeekChickens
//http://geekchickens.b...

http://geekchickens.blogspot.com.es/2014/01/tutorialdearduinodesde0tutorial12.html 1/4
9/4/2017 TutorialdeArduinodesde0Tutorial12Operacionesconbits(1)|GeekChickens
operador|
TutorialdeArduinodesde0
Tutorial17Crearnuestraspropias
Esteoperador,loquehaceessumarperodeformabinaria.Esoquieredecirque: funciones+estructurasdecontrol"
return"y"goto"
0+0=0 Enestaentradaaprenderemosalgo
0+1=1 muytilyesacrearnuestraspropias
1+0=1 funcionesparaconseguiruncdigo
1+1=1 muchomsordenadoyclar...

veamosunejemplo: TutorialdeArduinodesde0
Tutorial20Grabarenlamemoria
interna(EEPROM)denuestro
intnumero_1=6//enbinarioes100 Arduino+cdigopuertadeacceso
intnumero_2=3//enbinarioes10 Enestaentrada,aprenderemosa
guardardatospermanentesdentrode
intresultado=numero_1&numero_2 nuestroArduino.Nospuedesertilsi
queremosquepermanezcan...
0110//numero_1
0011//numero_2 TutorialdeArduinodesde0
Tutorial15TiemposenArduino(
0111 delay(),delayMicroseconds(),millis()
ymicros())
Enestaentrada,hablaremossobrelos
Enestecaso,elresultadohasigo111(elnumeo7endecimal).Esteoperadorpuedeirmuybiencuando retardosydelaysenArduino.Haydos
queremosunirlapartealtadeunaposicindelamemoriaconlapartebajadeotra,sinafectaralaotraposicin, manerasdeconseguiruntiempoen
porejemplo: Arduino.Unoseracu...

posicindememoria1=00001010 Crearcaracterespersonalizados
posicindememoria2=11010000 (yanimados)paratusproyectoscon
LCDde16x2ocualquierotro
posicindememoria1|posicindememoria2==>11011010 Enstetutorialosensearacrear
vuestrospropioscaracteres
personalizadosparavuestrasLCDde
16x2(odems)conunmatrizde5x8
operador^ ...

EsunaXOR,loquehacees,cuandolosdosbitsdeentradaseaniguales,devuelve0,ycuandolosdosbitsde LectordecdigoIR(protocolo
entradaseandistintos,devuelte1. NEC)conArduino
HoyusaremoslalibreraNECIRrcv(
0^0=0 incluidajuntoaladescargadel
0^1=1 cdigo),quenospermitirsacarle
1^0=1 partidoalosinfrarrojos.Enesta...
1^1=0
TutorialdeArduinodesde0
Tutorial09Estructurasdecontrol
operador~
Switchcase+break+continue
Switchcase:Enestaentrada,
EsteoperadoresunaNOTyloquepermiteesnegarlosbitsdeunavariable.Porejemplo: explicarlaestructuradecontrol
switchcase.Esmuytilcuando
intnumero=13//elnumero1101enbinario tenemosunagrancantidadde...
intnegacion=~numero
TutorialdeArduinodesde0
siimprimimosnegacionnosaparecerelnumero2,porqu?porquelanegacinde1101,es0010(el Tutorial21IRQexternascon
numero2endecimal. Arduino(interrupcionesexternas)
Hoyaprenderemosausarlas
interrupcionesexternasdeArduino,
peroantesexplicaremosunpocolo
operador<<
queesunainterrupcin.Unain...

Permitedesplazarbitshacialaizquierda.Losbitsquesedesbordandelamemoriasepierdenyporlapartebaja Aplicacindelasinterrupciones
delamemoria,serellenacon0.Sufuncionamientoesfcil: externasconArduino.Contadorpara
bobinador(mquinabobinadora)
numero<<numerodedesplazamientos Enestaentrada,explicaruncdigo
parabuscarleunautilidadprcticaa
Ejemplo: lasinterrupciones.Dichocdigosirve
paracontrolarunamquina...
intnumero=3

intnumeroDesplazado=3<<2 Etiquetas
LavariablenumeroDesplazado,dar12,porqu?porqueelnmero3(11)lodesplazamos2veceshacia
AVR(1)
laizquierda,yenlaposicindondeseencontrabaantes,serellenade0(1100,elnumero12endecimal)
BananaPro(1)
operador>> IR(4)
IRQ(interrupciones)(1)
Eslomismoqueeloperador<<peroenelsentidoinverso.Sidesplazamosunnmeromuchasposicioneshacia
LCD(3)
unsentido,lamemorianosquedarvaca.Porejemplo:
miCPU(4)
intnumero=3 Otros(1)
reciclajeelectrnico(2)
intnumeroDesplazado=3>>4
RFID(2)
LavariablenumeroDesplazadovaldr0,porqueelnumero3(11),lohemosmovido4posicionesaladerecha, TutorialArduino(23)
porlotantoseraasi:

http://geekchickens.blogspot.com.es/2014/01/tutorialdearduinodesde0tutorial12.html 2/4
9/4/2017 TutorialdeArduinodesde0Tutorial12Operacionesconbits(1)|GeekChickens

Configuracindepinesdeformabinaria(entradassalidas):

Eneltutorialnumero11,yavimosunpocoporencimacmohacenuestroArduinoparaconfigurarsuspinesde
formaseparada(pinMode(pin,INPUT/OUTPUT)),ahoraveremosunaformaparapoderdeclarartodoslospines
deunpuertoalmismotiempo.

Haydosmaneras:

1)Configurarpinescomoentradasosalidas,eliminandoelestadoanteriordelasalidaoentrada:

DDRX=B11111111dondeXeselpuertoqueusaremos.//hemosconfiguradotodoslosponesdenuestro
puertocomosalidas.

2)Yconestaforma,evitamostocarlospinesquenoqueremosconfigurar:

DDRX=DDRX|B00001111//hemosdeclaradolos4primerospinescomoentradasyelrestonolostocamos,
porquehacemosunaOR.

Imaginadqueelregistrotenacargadoesto:

DDRX=11000000

Ynosotroscargamosesto:

DDRX=00000000

Todoquedarcomoentradas,perosiusamoseloperadorOR(|),conseguiremosnoperderlapartequenos
interesa:

Registroinicial:DDRX=11000000

DDRX=DDRX|00001110

Registrofinal:DDRX=11001110

Ahorayasabemoscmoconfigurarentradasysalidas,vayamosahoraacargarlesunvaloraltoobajo:

Configuracindepinesdeformabinaria(encender/apagarpinensalidasyactivarodesactivarresistenciapull
upenentradas):

Cuandosonsalidas:sitenemospuestoDDRX=B11111111(todassalidas)

PORTX=B11111111conesto,pondramostodaslassalidasaHIGH

Veamosunejemplo:

CdigoparaArduinomega2560:

1 voidsetup() ?
2 {
3 DDRA=B11111111;//enestecasonosdaigualmachacarloanterior,peropodramoshaberpuesto:
4 //DDRA=DDRA|B11111111otambinDDRA|=B11111111,aunqueesoseusa
5 //normalmentecuandohayentradasysalidasjuntas
6 }
7
8
9 voidloop()
10 {
11 PORTA=0xFF;
12 delay(500);
13 PORTA=0x00;
http://geekchickens.blogspot.com.es/2014/01/tutorialdearduinodesde0tutorial12.html 3/4
9/4/2017 TutorialdeArduinodesde0Tutorial12Operacionesconbits(1)|GeekChickens
13 PORTA=0x00;
14 delay(500);
15 }

Comopodemosverenelejemploanterior,lassalidaslashedeclaradoenhexadecimal(lohehechoporquees
mscmodo,peropodramoshaberpuestoB11111111.ElDDRA,enArduinomeg2560equivalenalospines22
al29.

ParaotrosArduinos,tendramosquemirarsuspuertosyescogerelpuertoquenosinteresems.

Dejaraquestaentradayenlaprxima,explicarcmomanipularlasentradasysepondrnalgunosejemplos.

Fuentes:

http://arduino.cc/es/Reference/PortManipulation

0 comentarios:

Publicar un comentario en la entrada

Introducetucomentario...

Comentarcomo: Unknown(Google) Salir

Vistaprevia
Publicar Avisarme

Prev Product Pgina principal Next Product

Copyright 2014 Geek Chickens


POWERED BY BLOGGER. DESIGN BY JAVA TEMPLATES - BLOGGER TEMPLATES 2012

http://geekchickens.blogspot.com.es/2014/01/tutorialdearduinodesde0tutorial12.html 4/4