Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PROTON COMPILER
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
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.
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:
Sin embargo, estos también son mapeados como PORTB, por tanto, cualquier
referencia a PORTB en estos dispositivos permitirá acceder al pin correspondiente.
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:
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:
CLS
VAR1 = 5
VAR2 = 9
IF VAR1 = 5 AND VAR2 = 10 THEN Resultado
STOP
Resultado:
PRINT "RESULTADO VERDADERO"
STOP
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:
PERO:
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:
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:
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.
Retorno de interrupción
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: DELAYMS 1
GOTO Fin
DEVICE 16F877A
OPTION_REG = %00000111
INTCON = %00100000
SYMBOL LED = PORTD.0
ON INTERRUPT GOTO Habilitar ' Habilitar interrupciones de software
Fin:
DELAYMS 1
GOTO Fin
Habilitar:
TOGGLE LED ' Habilitar LED con la Interrupción
RESUME ' Volver al programa principal programa
ENABLE ' Habilitar las interrupciones