SlideShare una empresa de Scribd logo
1 de 7
Descargar para leer sin conexión
 


                          PROTON COMPILER


Configuración de Puerto A de PICS desde Protón

Antes de realizar cualquier proyecto, siempre lea la hoja de datos para el dispositivo
específico que se utiliza. Dado que algunos dispositivos tienen características que
pueden interferir con las operaciones de los pines. El PIC16C62X y los dispositivos
16F62x son ejemplos de ello. Estos PIC tienen comparadores analógicos en PORTA, los
cuales estas configurados en modo analógico. Para cambiar los pines a digital, basta
con añadir la siguiente línea cerca de la parte frontal de su programa BASIC, antes de
acceder a cualquier pin del puerto A:

CMCON = 7

Cualquier PIC con entradas analógicas, como la PIC16C7xx, PIC16F87x y dispositivos
de la serie PIC12C67x, están habilitados en modo analógico. Si tiene la intención de
utilizarlos como tipos digitales debe establecer los pines en modo digital mediante la
siguiente línea de código:

ADCON1 = 7

Para los dispositivos de 18Fxx20, o cualquier PIC que contiene más de 8 canales de
ADC, el registro ADCON1 tendrá que ser fijado a 15:

ADCON1 = 15

Alternativamente, puede utilizar un comando especial que establece todos los pines en
el modo digital:

ALL_DIGITAL = TRUE

Se trata de fijar pines analógicos a formato digital. Sin embargo, no puede funcionar
en algunos dispositivos, y la hoja de datos debe estar referenciada con el fin de
configurar los puertos.

Otro ejemplo de los problemas potenciales es que pin -4 de PORTA (PORTA.4) muestra
un comportamiento inusual cuando se utiliza como una salida. Esto es porque el pin
tiene una salida de drenaje abierto en lugar de la etapa bipolar como de costumbre en
el resto de los pines de salida, lo significa que puede establecerse en 0 lógico , cuando
es configurado en un 1 lógico.

Para poner a funcionar este pin como es de esperar, agregue una resistencia pull-up
entre el pin y 5 voltios. Una resistencia de valor típico puede ser de entre 1K y 33K,
dependiendo del dispositivo que está excitando. Si el pin se utiliza como salida, se
comporta igual que cualquier otro.




 
 


Algunos PIC, de la gama PIC16F87x, permite programación de bajo voltaje. Esta
función se hace habilitando uno de los pines del PORTB (PORTB.3) el cual puede actuar
de forma errática, si no se conecta a tierra. En un uso normal, es mejor asegurarse de
que la programación de bajo voltaje está desactivada en el momento en que el PIC se
está programado. Por defecto, el fusible de programación de bajo voltaje está
desactivado, sin embargo, si se utiliza la directiva CONFIG, entonces sin darse cuenta
puede ser omitido.

Si usted necesita un PIN para habilitarlo como una salida antes de usarlo, o usar un
comando en BASIC que lo hace por usted, siempre lea las hojas de datos del PIC a
utilizar para familiarizarse con esta parte en particular.

El nombre de los pines del puerto en los dispositivos de 8 pines como el PIC12C50X,
PIC12C67x, 12CE67x y 12F675 es GPIO. El nombre para el registro TRIS es TRISIO:

GPIO.0 = 1            ' Seleccione GPIO.0 como entrada

TRISIO = %101010      ' Habilitar entradas y salidas

Sin embargo, estos también son mapeados como PORTB, por tanto, cualquier
referencia a PORTB en estos dispositivos permitirá acceder al pin correspondiente.

Algunos dispositivos tienen resistencias internas en pull up PORTB, o GPIO. Estas
pueden ser activadas o desactivadas mediante la emisión de la orden
PORTB_PULLUPS:

PORTB_PULLUPS = ON ' Habilitar resistores pull up del PORTB
o
PORTB_PULLUPS = OFF ' deshabilitar resistores pull up del PORTB




Operadores Matemáticos En Protón



Protón Compiler realiza todas las operaciones matemáticas en orden jerárquico. Lo
que significa que no hay prioridad en los operadores. Por ejemplo, multiplicación y
división se realizan antes de suma y resta. Para asegurar que las operaciones se
llevan   a    cabo   se   usan    paréntesis  para    agrupar   las  operaciones:


A = ((B - C) * (D + E)) / F


Todas las operaciones matemáticas son con o sin signo en función del tipo de variable
utilizada, y se realiza con 8, 16, o enteros de 32 bits o 32-bit de punto flotante de
precisión, de nuevo, en función de los tipos de variables y valores constantes en la
expresión. Los operadores soportados son:



 
 




Addition '+'              Añade las variables y / o constantes.
Subtraction '-'           Resta las variables y / o constantes.
Multiply '*'              Multiplica las variables y / o constantes.
Multiply HIGH '**'        Devuelve el alto de 16 bits de los 16-bits se multiplican resultado.
Multiply MIDDLE '*/'      Devuelve la media de 16 bits de los 16-bits se multiplican resultado.
Divide '/'                Divide las variables y / o constantes.
Modulus '//'              Devuelve el resto de la izquierda después de dividir un valor por
Bitwise AND '&'           otro.
Bitwise OR '|'            Retorna el AND bit a bit de los dos valores.
Bitwise XOR '^'           Retorna la OR bit a bit de dos valores.
Bitwise SHIFT LEFT '<<'   Retorna el XOR bit a bit de dos valores.
Bitwise SHIFT RIGHT       Cambio de bits de un valor a la izquierda de un número determinado.
'>>'                      Cambios de los bits de un valor correcto de un número determinado
                          de plazas.
Complement '~'            Invierte los bits en una variable.
ABS                       Devuelve el valor absoluto de un número.
ACOS                      Devuelve el arco coseno de un valor en radianes.
ASIN                      Devuelve el arco seno de un valor en radianes.
ATAN                      Devuelve el arco tangente de un valor en radianes.
COS                       Devuelve el coseno de un valor en radianes.
DCD                       2 n-decodificador de potencia de un valor de cuatro bits.
DIG                       Devuelve el dígito decimal especificado de un valor positivo.
EXP                       Deducir de la función exponencial de un valor.
LOG                       Devuelve el logaritmo natural de un valor.
LOG10                     Devuelve el logaritmo de un valor.
MAX                       Devuelve el máximo de dos números.
MIN                       Devuelve el mínimo de dos números.
NCD                       Codificador de prioridad de un valor de 16-bits.
POW                       Calcula una variable a la potencia de la variable o valor.
REV                       Invierte el orden de los más bajos bits en un valor.
SIN                       Devuelve el seno de un valor en radianes.
SQR                       Devuelve la raíz cuadrada de un valor.
TAN                       Devuelve la tangente de un valor en radianes.
DIV32                     15-bits x 31 bits brecha. (Por compatibilidad Melabs solamente)




Operadores de Lógica Booleana


El if...then...else...endif, while...wend, y repeat...until son compatibles con los
operadores lógicos NOT, AND, OR y XOR. El operador NOT invierte el resultado de una
condición, Los siguientes dos condiciones IF-THEN son equivalentes:

IF VAR1 <> 100 THEN No es Igual             ' Ir a No es Igual   si VAR1 no es 100.
IF NOT VAR1 = 100 THEN                    ' Ir a No es Igual si VAR1 no es 100.Goto

Los operadores AND, OR, XOR pueden utilizarse para producir un resultado falso o
verdadero. AND y OR funcionan de la misma forma como lo hacen en el habla



 
 


cotidiana. El siguiente ejemplo muestre la función AND se puede sustituir por las
funciones OR Y XOR:




DIM VAR1 AS BYTE
DIM VAR2 AS BYTE

CLS
VAR1 = 5
VAR2 = 9
IF VAR1 = 5 AND VAR2 = 10 THEN Resultado
STOP
Resultado:
PRINT "RESULTADO VERDADERO"
STOP

La condición de "VAR1 = 5 y VAR2 = 10" no es cierta. Aunque VAR1 es de 5, VAR2 no
es 10. AND funciona cuando ambas condiciones de la declaración sean verdaderas. OR
también trabaja en una manera similar, si una, la otra o ambas condiciones se
cumplen, entonces la afirmación es verdadera. XOR (abreviatura de o-exclusivo): Si
una condición o la otra (pero no ambos) es verdadera, entonces la afirmación es
verdadera.

Cada compilador tiene sus reglas peculiares, y PROTON no es una excepción. Una de
sus peculiaridades significativa es que los paréntesis no se admite en una condición
booleana, o incluso con ninguno de los IF-THEN-ELSE-ENDIF, WHILE-WEND, y
REPEAT-UNTIL. El Paréntesis en una expresión de una condición se permite sin
embargo. Así, por ejemplo, la expresión:

IF (VAR1 + 3) = 10 THEN hacer algo.   Está permitido.

PERO:

IF ((VAR1 + 3) = 10) THEN hacer algo. No está permitido.

Los operadores booleanos tienen una preferencia, en una condición. El operando AND
tiene la mayor prioridad, que la OR y, la XOR. Esto significa que una condición, tal
como:

IF VAR1 = 2 AND VAR2 = 3 OR VAR3 = 4 THEN resultado

Comparará VAR1 y VAR2 para ver si la condición AND es cierta. A continuación,
veremos si la condición OR es verdadera, basada en el resultado de la condición AND.
PROTON se basa principalmente en la parte THEN. Por lo tanto, si la parte THEN de un
estado se queda fuera de la lista de código, un error de sintaxis se producirá.




 
 



Interrupciones de software en BASIC


Aunque el método más eficiente de utilizar una interrupción es en ensamblador, las
interrupciones de hardware y BASIC son viables. La manera más sencilla de escribir en
BASIC un manejador de interrupciones es con la declaración ON INTERRUPT. Esta no
es la misma que la declaración ON_INTERRUPT original del compilador, que inicia una
interrupción de hardware. ON INTERRUPT (dos palabras separadas en la
interrupción...).

Cuando se utiliza ON INTERRUPT, el compilador simplemente habilita la interrupción
que ha ocurrido y de inmediato se remonta a lo que estaba haciendo antes de la
interrupción. A diferencia de una interrupción de hardware, el código no salta
inmediatamente al controlador de interrupciones. Y puesto que los comandos del
compilador no son re-entrante, podría haber un retraso considerable antes de la
interrupción que se maneja.

Por ejemplo, si el programa ha comenzado a ejecutar un comando DelayMS en 2000
se produce una interrupción, el compilador de abanderamiento de la interrupción
continua con la demora. Podría ser de hasta 2 segundos después antes de que el
controlador de interrupción se ejecute. Si la interrupción ocurre regularmente se
arruinará la ejecución del programa. Por ejemplo, el multiplexado de siete segmentos.

Para minimizar el problema anterior, utilice sólo las declaraciones que no tienen tiempo
para ejecutar. Por ejemplo, en lugar de DelayMS 2000, el uso DelayMS 1 en un
for...next, o repeat...until... hasta el bucle, permitirá al compilador completar cada
comando más rápidamente y manejar cualquier interrupción en espera:

FOR VAR1 = 0 TO 199: DELAYMS 1: NEXT ' Retardo para 200ms

Si el procesamiento de interrupciones debe producirse con más regularidad, entonces
no hay más remedio que utilizar una interrupción de hardware, con todas sus
peculiaridades.

Exactamente lo que sucede cuando se utiliza ON INTERRUPT es lo siguiente: Una
breve interrupción de controlador se coloca en la posición 4 del PIC. Este controlador
de interrupciones es simplemente un retorno. Lo que hace es enviar que el programa
se devuelta a lo que estaba haciendo antes de que se produjo la interrupción. No
requiere ningún ahorro contexto del procesador. Lo que no hace es volver a habilitar
las interrupciones como sucede cuando se utiliza una instrucción RETFIEV.

Una llamada a una subrutina corta se coloca antes de cada comando en el programa
BASIC, una vez que se encuentre una declaración en ON INTERRUPT. Esto
comprueba el estado de los bits de interrupción (GIE). Si está desactivado, está en
espera de una interrupción.




 
 


Si todavía está configurado, el programa continúa con el siguiente enunciado BASIC ,
después de lo cual, el bit GIE se vuelve a comprobar, y así sucesivamente.

Retorno de interrupción


Cuando la instrucción RESUME se encuentra al final del controlador de interrupciones,
se establece el bit GIE para volver a habilitar las interrupciones y regresa a donde
antes se produjo la interrupción. DISABLE detiene el compilador de la inserción de la
llamada a la interrupción corrector antes de cada comando. Esto permite que las
secciones de código a ejecutar sin la posibilidad de ser interrumpido. ENABLE permite
la                    inserción                     para                    continuar.

Un DISABLE debe ser colocado antes del controlador de interrupciones para que no se
reinicie cada vez que el bit GIE está Habilitado. Si se desea desactivar ON
INTERRUPT por alguna razón, después de que se encuentre en la interrupción, no se
debe apagar el bit GIE. La desactivación de este bit informa al compilador de una
interrupción que ha pasado y se ejecutará el controlador de interrupciones para
siempre.

Utilizar en su lugar:

INTCON = $80

Esto desactiva todas las interrupciones individuales, sino que deja el conjunto de
interrupción Global deshabilitado.

Una nota final sobre las interrupciones en BASIC es si el programa utiliza la estructura
de mando:

Fin: GOTO Fin

Usted debe recordar que el indicador de interrupción se comprueba antes de cada
instrucción. Inmediatamente salta a la etiqueta Fin sin interrupción de verificación.
Otros comandos deben ser colocados en el circuito de la interrupción de verificación a
suceder:

Fin: DELAYMS 1
GOTO Fin



Activación y desactivación de una interrupción

Permitir el procesamiento de interrupciones que fue desactivado previamente
siguiendo estas instrucciones. Desactivar y activar las banderas que el compilador
utiliza internamente.

DEVICE 16F877A
OPTION_REG = %00000111


 
 


INTCON = %00100000
SYMBOL LED = PORTD.0
ON INTERRUPT GOTO Habilitar    ' Habilitar interrupciones de software

Fin:
DELAYMS 1
GOTO Fin

DISABLE                   ' Deshabilitar las interrupciones

Habilitar:
TOGGLE LED                ' Habilitar LED con la Interrupción
RESUME                    ' Volver al programa principal programa
ENABLE                     ' Habilitar las interrupciones




 

Más contenido relacionado

La actualidad más candente

Actividadcontadores2medio
Actividadcontadores2medioActividadcontadores2medio
Actividadcontadores2medioJack
 
Cubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesadorCubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesadorMarcelo Mendoza
 
Digital E
Digital EDigital E
Digital Etoni
 
Circuitos digitales act4
Circuitos digitales act4Circuitos digitales act4
Circuitos digitales act4Daniel Manzo
 
2.1 puertos como salida
2.1 puertos como salida2.1 puertos como salida
2.1 puertos como salidaSNPP
 
Equivalencias de ls compuertas basicas por transistores mos g4
Equivalencias de ls compuertas basicas por transistores mos   g4Equivalencias de ls compuertas basicas por transistores mos   g4
Equivalencias de ls compuertas basicas por transistores mos g4A CG
 
Ao Y 555
Ao Y 555Ao Y 555
Ao Y 555toni
 
Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Luis Zurita
 
Circuitos generadores-de-pulso-de-reloj
Circuitos generadores-de-pulso-de-relojCircuitos generadores-de-pulso-de-reloj
Circuitos generadores-de-pulso-de-relojIPN
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5Luis Zurita
 
Tema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionalesTema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionalesAntonio Ortega Valera
 
Unidad didáctica i circuitos de_logica_digital
Unidad didáctica i circuitos de_logica_digitalUnidad didáctica i circuitos de_logica_digital
Unidad didáctica i circuitos de_logica_digitalNombre Apellidos
 
Circuito integrado 7486
Circuito integrado 7486Circuito integrado 7486
Circuito integrado 7486maria_amanta
 

La actualidad más candente (20)

Informe 4
Informe 4Informe 4
Informe 4
 
Actividadcontadores2medio
Actividadcontadores2medioActividadcontadores2medio
Actividadcontadores2medio
 
Cubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesadorCubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesador
 
catalogo de control
catalogo de controlcatalogo de control
catalogo de control
 
Digital E
Digital EDigital E
Digital E
 
Circuitos digitales act4
Circuitos digitales act4Circuitos digitales act4
Circuitos digitales act4
 
5. ADC - ARDUINO
5. ADC - ARDUINO5. ADC - ARDUINO
5. ADC - ARDUINO
 
2.1 puertos como salida
2.1 puertos como salida2.1 puertos como salida
2.1 puertos como salida
 
Equivalencias de ls compuertas basicas por transistores mos g4
Equivalencias de ls compuertas basicas por transistores mos   g4Equivalencias de ls compuertas basicas por transistores mos   g4
Equivalencias de ls compuertas basicas por transistores mos g4
 
Ao Y 555
Ao Y 555Ao Y 555
Ao Y 555
 
Arduino Análogo
Arduino AnálogoArduino Análogo
Arduino Análogo
 
Circuitos secuenciales=u.o
Circuitos secuenciales=u.oCircuitos secuenciales=u.o
Circuitos secuenciales=u.o
 
Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4Microcontroladores ii en c. tema 4
Microcontroladores ii en c. tema 4
 
Practica #1
Practica #1Practica #1
Practica #1
 
Circuitos generadores-de-pulso-de-reloj
Circuitos generadores-de-pulso-de-relojCircuitos generadores-de-pulso-de-reloj
Circuitos generadores-de-pulso-de-reloj
 
MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5MICROCONTROLADORES II EN C. TEMA 5
MICROCONTROLADORES II EN C. TEMA 5
 
Amplificadores operacionales
Amplificadores operacionalesAmplificadores operacionales
Amplificadores operacionales
 
Tema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionalesTema 8 Puertas lógicas y circuitos combinacionales
Tema 8 Puertas lógicas y circuitos combinacionales
 
Unidad didáctica i circuitos de_logica_digital
Unidad didáctica i circuitos de_logica_digitalUnidad didáctica i circuitos de_logica_digital
Unidad didáctica i circuitos de_logica_digital
 
Circuito integrado 7486
Circuito integrado 7486Circuito integrado 7486
Circuito integrado 7486
 

Destacado

Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2dar851112
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1dar851112
 
Descubrimiento del protón y neutrón gaby
Descubrimiento del protón y neutrón gabyDescubrimiento del protón y neutrón gaby
Descubrimiento del protón y neutrón gabygabyllerena3
 
Fisica de RNM (exitación y relajación)
Fisica de RNM (exitación y relajación)Fisica de RNM (exitación y relajación)
Fisica de RNM (exitación y relajación)Facundo Gaston Meza
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xConstructora Kaizen
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos GM Lamo
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetoothMarco Silva
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadoresjoselin33
 
Programador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoProgramador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoUniversidad mariana
 
Gea fuente de_voltaje
Gea fuente de_voltajeGea fuente de_voltaje
Gea fuente de_voltajeMarco Silva
 
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...ezequiel
 

Destacado (20)

Control lcd 16X2 proton
Control lcd 16X2 protonControl lcd 16X2 proton
Control lcd 16X2 proton
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
 
Tutorial proton ide plus part 1
Tutorial proton ide plus part 1Tutorial proton ide plus part 1
Tutorial proton ide plus part 1
 
Proton 2008
Proton 2008Proton 2008
Proton 2008
 
Hijos proton
Hijos protonHijos proton
Hijos proton
 
HDT Explora 2.0
HDT Explora 2.0HDT Explora 2.0
HDT Explora 2.0
 
Descubrimiento del protón y neutrón gaby
Descubrimiento del protón y neutrón gabyDescubrimiento del protón y neutrón gaby
Descubrimiento del protón y neutrón gaby
 
Protones
ProtonesProtones
Protones
 
Fisica de RNM (exitación y relajación)
Fisica de RNM (exitación y relajación)Fisica de RNM (exitación y relajación)
Fisica de RNM (exitación y relajación)
 
Exposicion de quimica el atomo
Exposicion de quimica el atomoExposicion de quimica el atomo
Exposicion de quimica el atomo
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87x
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetooth
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadores
 
Presentacion
PresentacionPresentacion
Presentacion
 
Programador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoProgramador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificado
 
PEP Comida - Jasone
PEP Comida - JasonePEP Comida - Jasone
PEP Comida - Jasone
 
Gea fuente de_voltaje
Gea fuente de_voltajeGea fuente de_voltaje
Gea fuente de_voltaje
 
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
 
Proton
ProtonProton
Proton
 

Similar a Configuración de puertos y operadores matemáticos en Protón Compiler

Características sumadore, multiplexores, codificadores, decodificadores y muc...
Características sumadore, multiplexores, codificadores, decodificadores y muc...Características sumadore, multiplexores, codificadores, decodificadores y muc...
Características sumadore, multiplexores, codificadores, decodificadores y muc...Hector Arellano
 
Algebra booleana.laura Alejandra Carrera
Algebra booleana.laura Alejandra CarreraAlgebra booleana.laura Alejandra Carrera
Algebra booleana.laura Alejandra Carreramibb204
 
Tipos de circuitos
Tipos de circuitosTipos de circuitos
Tipos de circuitosacllecalle
 
sumadores, codificadores, decodificadores,multiplexores, demultiplexores
sumadores, codificadores, decodificadores,multiplexores, demultiplexoressumadores, codificadores, decodificadores,multiplexores, demultiplexores
sumadores, codificadores, decodificadores,multiplexores, demultiplexoresreinardoCoa
 
Circuitos analogico digital-digital-analogico
Circuitos analogico digital-digital-analogicoCircuitos analogico digital-digital-analogico
Circuitos analogico digital-digital-analogicoCesar Blanco Castro
 
Dispositivos analogico digital-digital-analogico
Dispositivos analogico digital-digital-analogicoDispositivos analogico digital-digital-analogico
Dispositivos analogico digital-digital-analogicoIsrael Lopez Luna
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Raphael Raphael
 
Uso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorUso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorGabriel Beltran
 
Digital
DigitalDigital
Digitaltoni
 
Conversor análogo
Conversor análogoConversor análogo
Conversor análogotecautind
 
2. entradas salidas digitales
2. entradas salidas digitales2. entradas salidas digitales
2. entradas salidas digitalesDavid Narváez
 
Microcontroladores: conversor análogo/digital
Microcontroladores: conversor análogo/digitalMicrocontroladores: conversor análogo/digital
Microcontroladores: conversor análogo/digitalSANTIAGO PABLO ALBERTO
 
Filtro pasabanda
Filtro pasabandaFiltro pasabanda
Filtro pasabandajohnyto
 

Similar a Configuración de puertos y operadores matemáticos en Protón Compiler (20)

Características sumadore, multiplexores, codificadores, decodificadores y muc...
Características sumadore, multiplexores, codificadores, decodificadores y muc...Características sumadore, multiplexores, codificadores, decodificadores y muc...
Características sumadore, multiplexores, codificadores, decodificadores y muc...
 
Tipos de circuitos
Tipos de circuitosTipos de circuitos
Tipos de circuitos
 
[PicBasic PRO].pdf
[PicBasic PRO].pdf[PicBasic PRO].pdf
[PicBasic PRO].pdf
 
Atmel
AtmelAtmel
Atmel
 
Algebra booleana.laura Alejandra Carrera
Algebra booleana.laura Alejandra CarreraAlgebra booleana.laura Alejandra Carrera
Algebra booleana.laura Alejandra Carrera
 
Tipos de circuitos
Tipos de circuitosTipos de circuitos
Tipos de circuitos
 
sumadores, codificadores, decodificadores,multiplexores, demultiplexores
sumadores, codificadores, decodificadores,multiplexores, demultiplexoressumadores, codificadores, decodificadores,multiplexores, demultiplexores
sumadores, codificadores, decodificadores,multiplexores, demultiplexores
 
Circuitos analogico digital-digital-analogico
Circuitos analogico digital-digital-analogicoCircuitos analogico digital-digital-analogico
Circuitos analogico digital-digital-analogico
 
Dispositivos analogico digital-digital-analogico
Dispositivos analogico digital-digital-analogicoDispositivos analogico digital-digital-analogico
Dispositivos analogico digital-digital-analogico
 
Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877Descripcion detallada del pic 16 f877
Descripcion detallada del pic 16 f877
 
Uso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontroladorUso del convertidor analògico digital de un microcontrolador
Uso del convertidor analògico digital de un microcontrolador
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Digital
DigitalDigital
Digital
 
Conversor análogo
Conversor análogoConversor análogo
Conversor análogo
 
2. entradas salidas digitales
2. entradas salidas digitales2. entradas salidas digitales
2. entradas salidas digitales
 
Microcontroladores: conversor análogo/digital
Microcontroladores: conversor análogo/digitalMicrocontroladores: conversor análogo/digital
Microcontroladores: conversor análogo/digital
 
Compuertas Lógicas
Compuertas LógicasCompuertas Lógicas
Compuertas Lógicas
 
Filtro pasabanda
Filtro pasabandaFiltro pasabanda
Filtro pasabanda
 

Configuración de puertos y operadores matemáticos en Protón Compiler

  • 1.   PROTON COMPILER Configuración de Puerto A de PICS desde Protón Antes de realizar cualquier proyecto, siempre lea la hoja de datos para el dispositivo específico que se utiliza. Dado que algunos dispositivos tienen características que pueden interferir con las operaciones de los pines. El PIC16C62X y los dispositivos 16F62x son ejemplos de ello. Estos PIC tienen comparadores analógicos en PORTA, los cuales estas configurados en modo analógico. Para cambiar los pines a digital, basta con añadir la siguiente línea cerca de la parte frontal de su programa BASIC, antes de acceder a cualquier pin del puerto A: CMCON = 7 Cualquier PIC con entradas analógicas, como la PIC16C7xx, PIC16F87x y dispositivos de la serie PIC12C67x, están habilitados en modo analógico. Si tiene la intención de utilizarlos como tipos digitales debe establecer los pines en modo digital mediante la siguiente línea de código: ADCON1 = 7 Para los dispositivos de 18Fxx20, o cualquier PIC que contiene más de 8 canales de ADC, el registro ADCON1 tendrá que ser fijado a 15: ADCON1 = 15 Alternativamente, puede utilizar un comando especial que establece todos los pines en el modo digital: ALL_DIGITAL = TRUE Se trata de fijar pines analógicos a formato digital. Sin embargo, no puede funcionar en algunos dispositivos, y la hoja de datos debe estar referenciada con el fin de configurar los puertos. Otro ejemplo de los problemas potenciales es que pin -4 de PORTA (PORTA.4) muestra un comportamiento inusual cuando se utiliza como una salida. Esto es porque el pin tiene una salida de drenaje abierto en lugar de la etapa bipolar como de costumbre en el resto de los pines de salida, lo significa que puede establecerse en 0 lógico , cuando es configurado en un 1 lógico. Para poner a funcionar este pin como es de esperar, agregue una resistencia pull-up entre el pin y 5 voltios. Una resistencia de valor típico puede ser de entre 1K y 33K, dependiendo del dispositivo que está excitando. Si el pin se utiliza como salida, se comporta igual que cualquier otro.  
  • 2.   Algunos PIC, de la gama PIC16F87x, permite programación de bajo voltaje. Esta función se hace habilitando uno de los pines del PORTB (PORTB.3) el cual puede actuar de forma errática, si no se conecta a tierra. En un uso normal, es mejor asegurarse de que la programación de bajo voltaje está desactivada en el momento en que el PIC se está programado. Por defecto, el fusible de programación de bajo voltaje está desactivado, sin embargo, si se utiliza la directiva CONFIG, entonces sin darse cuenta puede ser omitido. Si usted necesita un PIN para habilitarlo como una salida antes de usarlo, o usar un comando en BASIC que lo hace por usted, siempre lea las hojas de datos del PIC a utilizar para familiarizarse con esta parte en particular. El nombre de los pines del puerto en los dispositivos de 8 pines como el PIC12C50X, PIC12C67x, 12CE67x y 12F675 es GPIO. El nombre para el registro TRIS es TRISIO: GPIO.0 = 1 ' Seleccione GPIO.0 como entrada TRISIO = %101010 ' Habilitar entradas y salidas Sin embargo, estos también son mapeados como PORTB, por tanto, cualquier referencia a PORTB en estos dispositivos permitirá acceder al pin correspondiente. Algunos dispositivos tienen resistencias internas en pull up PORTB, o GPIO. Estas pueden ser activadas o desactivadas mediante la emisión de la orden PORTB_PULLUPS: PORTB_PULLUPS = ON ' Habilitar resistores pull up del PORTB o PORTB_PULLUPS = OFF ' deshabilitar resistores pull up del PORTB Operadores Matemáticos En Protón Protón Compiler realiza todas las operaciones matemáticas en orden jerárquico. Lo que significa que no hay prioridad en los operadores. Por ejemplo, multiplicación y división se realizan antes de suma y resta. Para asegurar que las operaciones se llevan a cabo se usan paréntesis para agrupar las operaciones: A = ((B - C) * (D + E)) / F Todas las operaciones matemáticas son con o sin signo en función del tipo de variable utilizada, y se realiza con 8, 16, o enteros de 32 bits o 32-bit de punto flotante de precisión, de nuevo, en función de los tipos de variables y valores constantes en la expresión. Los operadores soportados son:  
  • 3.   Addition '+' Añade las variables y / o constantes. Subtraction '-' Resta las variables y / o constantes. Multiply '*' Multiplica las variables y / o constantes. Multiply HIGH '**' Devuelve el alto de 16 bits de los 16-bits se multiplican resultado. Multiply MIDDLE '*/' Devuelve la media de 16 bits de los 16-bits se multiplican resultado. Divide '/' Divide las variables y / o constantes. Modulus '//' Devuelve el resto de la izquierda después de dividir un valor por Bitwise AND '&' otro. Bitwise OR '|' Retorna el AND bit a bit de los dos valores. Bitwise XOR '^' Retorna la OR bit a bit de dos valores. Bitwise SHIFT LEFT '<<' Retorna el XOR bit a bit de dos valores. Bitwise SHIFT RIGHT Cambio de bits de un valor a la izquierda de un número determinado. '>>' Cambios de los bits de un valor correcto de un número determinado de plazas. Complement '~' Invierte los bits en una variable. ABS Devuelve el valor absoluto de un número. ACOS Devuelve el arco coseno de un valor en radianes. ASIN Devuelve el arco seno de un valor en radianes. ATAN Devuelve el arco tangente de un valor en radianes. COS Devuelve el coseno de un valor en radianes. DCD 2 n-decodificador de potencia de un valor de cuatro bits. DIG Devuelve el dígito decimal especificado de un valor positivo. EXP Deducir de la función exponencial de un valor. LOG Devuelve el logaritmo natural de un valor. LOG10 Devuelve el logaritmo de un valor. MAX Devuelve el máximo de dos números. MIN Devuelve el mínimo de dos números. NCD Codificador de prioridad de un valor de 16-bits. POW Calcula una variable a la potencia de la variable o valor. REV Invierte el orden de los más bajos bits en un valor. SIN Devuelve el seno de un valor en radianes. SQR Devuelve la raíz cuadrada de un valor. TAN Devuelve la tangente de un valor en radianes. DIV32 15-bits x 31 bits brecha. (Por compatibilidad Melabs solamente) Operadores de Lógica Booleana El if...then...else...endif, while...wend, y repeat...until son compatibles con los operadores lógicos NOT, AND, OR y XOR. El operador NOT invierte el resultado de una condición, Los siguientes dos condiciones IF-THEN son equivalentes: IF VAR1 <> 100 THEN No es Igual ' Ir a No es Igual si VAR1 no es 100. IF NOT VAR1 = 100 THEN ' Ir a No es Igual si VAR1 no es 100.Goto Los operadores AND, OR, XOR pueden utilizarse para producir un resultado falso o verdadero. AND y OR funcionan de la misma forma como lo hacen en el habla  
  • 4.   cotidiana. El siguiente ejemplo muestre la función AND se puede sustituir por las funciones OR Y XOR: DIM VAR1 AS BYTE DIM VAR2 AS BYTE CLS VAR1 = 5 VAR2 = 9 IF VAR1 = 5 AND VAR2 = 10 THEN Resultado STOP Resultado: PRINT "RESULTADO VERDADERO" STOP La condición de "VAR1 = 5 y VAR2 = 10" no es cierta. Aunque VAR1 es de 5, VAR2 no es 10. AND funciona cuando ambas condiciones de la declaración sean verdaderas. OR también trabaja en una manera similar, si una, la otra o ambas condiciones se cumplen, entonces la afirmación es verdadera. XOR (abreviatura de o-exclusivo): Si una condición o la otra (pero no ambos) es verdadera, entonces la afirmación es verdadera. Cada compilador tiene sus reglas peculiares, y PROTON no es una excepción. Una de sus peculiaridades significativa es que los paréntesis no se admite en una condición booleana, o incluso con ninguno de los IF-THEN-ELSE-ENDIF, WHILE-WEND, y REPEAT-UNTIL. El Paréntesis en una expresión de una condición se permite sin embargo. Así, por ejemplo, la expresión: IF (VAR1 + 3) = 10 THEN hacer algo. Está permitido. PERO: IF ((VAR1 + 3) = 10) THEN hacer algo. No está permitido. Los operadores booleanos tienen una preferencia, en una condición. El operando AND tiene la mayor prioridad, que la OR y, la XOR. Esto significa que una condición, tal como: IF VAR1 = 2 AND VAR2 = 3 OR VAR3 = 4 THEN resultado Comparará VAR1 y VAR2 para ver si la condición AND es cierta. A continuación, veremos si la condición OR es verdadera, basada en el resultado de la condición AND. PROTON se basa principalmente en la parte THEN. Por lo tanto, si la parte THEN de un estado se queda fuera de la lista de código, un error de sintaxis se producirá.  
  • 5.   Interrupciones de software en BASIC Aunque el método más eficiente de utilizar una interrupción es en ensamblador, las interrupciones de hardware y BASIC son viables. La manera más sencilla de escribir en BASIC un manejador de interrupciones es con la declaración ON INTERRUPT. Esta no es la misma que la declaración ON_INTERRUPT original del compilador, que inicia una interrupción de hardware. ON INTERRUPT (dos palabras separadas en la interrupción...). Cuando se utiliza ON INTERRUPT, el compilador simplemente habilita la interrupción que ha ocurrido y de inmediato se remonta a lo que estaba haciendo antes de la interrupción. A diferencia de una interrupción de hardware, el código no salta inmediatamente al controlador de interrupciones. Y puesto que los comandos del compilador no son re-entrante, podría haber un retraso considerable antes de la interrupción que se maneja. Por ejemplo, si el programa ha comenzado a ejecutar un comando DelayMS en 2000 se produce una interrupción, el compilador de abanderamiento de la interrupción continua con la demora. Podría ser de hasta 2 segundos después antes de que el controlador de interrupción se ejecute. Si la interrupción ocurre regularmente se arruinará la ejecución del programa. Por ejemplo, el multiplexado de siete segmentos. Para minimizar el problema anterior, utilice sólo las declaraciones que no tienen tiempo para ejecutar. Por ejemplo, en lugar de DelayMS 2000, el uso DelayMS 1 en un for...next, o repeat...until... hasta el bucle, permitirá al compilador completar cada comando más rápidamente y manejar cualquier interrupción en espera: FOR VAR1 = 0 TO 199: DELAYMS 1: NEXT ' Retardo para 200ms Si el procesamiento de interrupciones debe producirse con más regularidad, entonces no hay más remedio que utilizar una interrupción de hardware, con todas sus peculiaridades. Exactamente lo que sucede cuando se utiliza ON INTERRUPT es lo siguiente: Una breve interrupción de controlador se coloca en la posición 4 del PIC. Este controlador de interrupciones es simplemente un retorno. Lo que hace es enviar que el programa se devuelta a lo que estaba haciendo antes de que se produjo la interrupción. No requiere ningún ahorro contexto del procesador. Lo que no hace es volver a habilitar las interrupciones como sucede cuando se utiliza una instrucción RETFIEV. Una llamada a una subrutina corta se coloca antes de cada comando en el programa BASIC, una vez que se encuentre una declaración en ON INTERRUPT. Esto comprueba el estado de los bits de interrupción (GIE). Si está desactivado, está en espera de una interrupción.  
  • 6.   Si todavía está configurado, el programa continúa con el siguiente enunciado BASIC , después de lo cual, el bit GIE se vuelve a comprobar, y así sucesivamente. Retorno de interrupción Cuando la instrucción RESUME se encuentra al final del controlador de interrupciones, se establece el bit GIE para volver a habilitar las interrupciones y regresa a donde antes se produjo la interrupción. DISABLE detiene el compilador de la inserción de la llamada a la interrupción corrector antes de cada comando. Esto permite que las secciones de código a ejecutar sin la posibilidad de ser interrumpido. ENABLE permite la inserción para continuar. Un DISABLE debe ser colocado antes del controlador de interrupciones para que no se reinicie cada vez que el bit GIE está Habilitado. Si se desea desactivar ON INTERRUPT por alguna razón, después de que se encuentre en la interrupción, no se debe apagar el bit GIE. La desactivación de este bit informa al compilador de una interrupción que ha pasado y se ejecutará el controlador de interrupciones para siempre. Utilizar en su lugar: INTCON = $80 Esto desactiva todas las interrupciones individuales, sino que deja el conjunto de interrupción Global deshabilitado. Una nota final sobre las interrupciones en BASIC es si el programa utiliza la estructura de mando: Fin: GOTO Fin Usted debe recordar que el indicador de interrupción se comprueba antes de cada instrucción. Inmediatamente salta a la etiqueta Fin sin interrupción de verificación. Otros comandos deben ser colocados en el circuito de la interrupción de verificación a suceder: Fin: DELAYMS 1 GOTO Fin Activación y desactivación de una interrupción Permitir el procesamiento de interrupciones que fue desactivado previamente siguiendo estas instrucciones. Desactivar y activar las banderas que el compilador utiliza internamente. DEVICE 16F877A OPTION_REG = %00000111  
  • 7.   INTCON = %00100000 SYMBOL LED = PORTD.0 ON INTERRUPT GOTO Habilitar ' Habilitar interrupciones de software Fin: DELAYMS 1 GOTO Fin DISABLE ' Deshabilitar las interrupciones Habilitar: TOGGLE LED ' Habilitar LED con la Interrupción RESUME ' Volver al programa principal programa ENABLE ' Habilitar las interrupciones