Instrucciones Microcode
Instrucciones Microcode
Instrucciones Microcode
1. VARIABLES
Las variables son elementos temporales en los que los datos de un
programa de PicBasic se almacenan. Estas variables se crean utilizando la
palabra VAR. Las variables pueden ser bits, bytes o words. Los espacios de
memoria requeridos para cada variable son asignados automticamente en
la memoria RAM de los microcontroladores PIC, por el programa. El formato
para crear una variable es el siguiente:
Etiqueta VAR Tamao {.Modificadores}
La Etiqueta es cualquier identificador excluyendo palabras utilizadas por
PicBasic. Tamao puede ser la palabra BIT, BYTE o WORD. Se puede
incluir modificadores adicionales para crear cierto control sobre las variables
Algunos ejemplos:
prueba VAR byte
led VAR bit
B0 VAR word
2. ARRAYS
Las variables arrays pueden crearse de manera similar a las variables
genricas.
Etiqueta VAR Tamao [Nmero de elementos]
Etiqueta es cualquier identificador, excluyendo palabras claves de
PicBasic. Tamao puede ser BIT, BYTE o WORD. Nmero de elementos
define cuantos elementos se integren al arreglo. Algunos ejemplos son:
datos VAR byte[10]
prueba VAR bit[8]
El primer elemento del array es el elemento0. En el arreglo datos del
ejemplo, los elementos se numeran desde datos[0] hasta datos[7]
estableciendo de esta manera 8 elementos en total. Debido a la forma en la
que los elementos del arreglo son colocados en la memoria, existen lmites
para el nmero mximo de cada uno de ellos:
Tamao
BIT
256
BYTE
96
48
WORD
Descripcin
Suma
Resta
Multiplicacin
**
16 Bits superiores de la
Multiplicacin
*/
16 Bits medios de la
Multiplicacin
Divisin
//
Resto (Mdulo)
DIV32
Divisin de 32 bits
<<
Desplazamiento a la
izquierda
>>
Desplazamiento a la
derecha
ABS
Valor absoluto
COS
Coseno
DCD
2n Decodificacin
DIG
Dgito
MAX
Mximo
MIN
Mnimo
NCD
Codifique
REV
Invierta Bits
SIN
Seno
SQR
Raz Cuadrada
&
AND
OR
OR Exclusivo
NOT
&/
AND NOT
|/
NOT OR
^/
NOT OR Exclusivo
OPERADORES DE COMPARACIN
Los operadores de comparacin son utilizados en las instrucciones que
utilizan IF..THEN para comparar dos expresiones. Los operadores utilizados
son:
Operador de Comparacin
Descripcin
= o ==
Igual
<> o !=
No Igual
<
Menor que
>
Mayor que
<=
>=
OPERADORES LGICOS
Los operadores lgicos actan sobre resultados de expresiones. Estos
establecen un resultado verdadero o falso a partir de su operacin. Los
valores que son 0 se consideran falsos y cualquier otro valor se considera
como verdadero. Se utilizan en la mayora de los casos en conjunto con los
operadores de comparacin en una instruccin que utiliza IF .. THEN. Los
operadores disponibles son:
Operador Lgico Operador
Descripcin
AND o &&
AND Lgico
OR o ||
OR Lgico
XOR o ^^
Exclusive OR Lgico
NOT AND
NAND Lgico
NOT OR
NOR Lgico
NOT XOR
NXOR Lgico
Ejemplo
IF (A == grande) AND (B > media) THEN ejecute
Debe asegurarse de utilizar los parntesis para indicarle a PicBasic el orden
exacto en el que se desea que se realice la operacin.
4. ADCIN Canal,Var
Lee el canal del conversor anlogo digital del circuito y guarda el resultado
en la variable Var. Los registros del ADC pueden ser ledos directamente
pero con ADCIN puede facilitarse el proceso.
Antes de que ADCIN pueda ser utilizada, el registro TRIS correspondiente
debe ser configurado para hacer que acten como entradas los pines
correspondientes. Tambin el registro ADCON1 necesita ser configurado
con los pines deseados como entradas anlogas y en otros casos inclusive
es necesario configurar el formato en el que se presenta el resultado as
como el reloj fuente que se utiliza.
Ejemplo:
DEFINE ADC_BITS 8
' Define el nmero de bits para el resultado
DEFINE ADC_CLOCK 3 ' Define la fuente de reloj (rc = 3)
DEFINE ADC_SAMPLEUS 50 ' Define el tiempo de muestreo en
microsegundos
TRISA = 255 ' Coloca el PORTA todos los pines como entradas
ADCON1 = 2 ' PORTA es analgico
ADCIN 0, B0 ' Lea canal 0 en la variable B0
5. ASM
{assembler code}
ENDASM
Las instrucciones ASM y ENDASM le dice al programa que el cdigo entre
estas dos directivas est en lenguaje ensamblador y no debe ser
considerado como una sentencia de PicBasic. Estas instrucciones se
utilizan para mezclar en forma libre instrucciones del lenguaje ensamblador
con las instrucciones de PicBasic.
El tamao mximo para el cdigo es de 8K, en los cuales se incluyen
inclusive a los comentarios mas no solamente del cdigo generado.
Ejemplo
ASM
bsf PORTA, 0 ; Coloque en alto al bit 0 del PORTA
bcf PORTB, 0 ; borre el bit 0 del PORTB
ENDASM
6. CLEAR
Coloca todos los registros de la RAM en cero. CLEAR coloca en cero
todos los registros de la RAM en cada banco. Esta instruccin coloca todas
las variables, incluyendo a las variables internas en cero.
Ejemplo
CLEAR ' Borra todas las variables
7. COUNT Pin,Periodo,Var
Cuenta el nmero de pulsos que ocurren en un pin durante el tiempo
definido en Periodo y almacena el resultado en Var. El pin se coloca
automticamente como entrada. Pin puede ser una constante entre 0 y 15,
o una variable que contiene un nmero entre 0 y 15. El Periodo se expresa
en milisegundos. Considera la frecuencia del oscilador basado en la que se
haya definido.
COUNT verifica el estado del Pin contando las transiciones de bajo a alto.
Con un oscilador de 4MHz el Pin se verifica cada 20us. Con un oscilador de
20MHz el pin se verifica cada 4us. A partir de esto, se puede determinar la
mxima frecuencia que puede medirse que es de 25KHz para un oscilador
de 4MHz y de 125KHz para un oscilador de 20MHz, siempre que el
oscilador tenga una relacin de trabajo del 50%.
Ejemplo
'Cuenta el # de pulsos en el Pin1 durante 100 milisegundos
COUNT PORTB.1, 100, W1
' Determine la frecuencia en un pin
COUNT PORTA.2, 1000, W1 ' Cuenta por 1 segundo
8. DATA {@Localidad,}Constante{,Constante...}
Almacena valores constantes en la EEPROM del PIC cuando se programa
al circuito por primera vez. Si el valor de la Localidad se omite, la primera
sentencia DATA inicia en la direccin 0 y los valores siguientes se
almacenan en las localidades siguientes. Si la localidad se especifica, se
iniciar en la que se indica.
Las constantes pueden ser numricas o cadenas de caracteres. Solamente
se almacenan los bytes menos significativos de la constante siempre y
cuando no se haya especificado el tipo de dato WORD. Las cadenas de
caracteres se almacenan en bytes consecutivos como valores ASCII. No se
incluye un dato terminal que indique la finalizacin o la longitud de los datos.
DATA solamente trabaja con microcontroladores con EEPROM en el PIC
tales como el PIC16F84 y el PIC16C84.
Ejemplo
'Almacene 10, 20 y 30 iniciando en la localidad 5
DATA @5,10,20,30
' Asigne una etiqueta a una palabra en la siguiente localidad.
dlabel DATA word $1234 ' Almacene $34, $12
' Salte cuatro localidades y almacene 10 0s
DATA (4), 0(10)
9. DIV32 Nmero
Las instrucciones de multiplicacin (*) de PicBasic operan en configuracin
de 16 bits x 16 bits obteniendo un resultado de 32 bits. Sin embargo, debido
a que el compilador nicamente soporta variables de 16 bits como mximo,
el acceso al resultado debe realizarse en dos pasos: c = b * a devuelve los
16 bits menos significativos de la multiplicacin, mientras que d = b ** a
devuelve los 16 bits ms significativos. No hay forma de obtener los 32 bits
del resultado de una sola.
La instruccin DIV32 permite dividir el total de 32 bits del resultado de una
multiplicacin por un nmero de 16 bits para obtener resultados. DIV32 est
HIGH led ' Haga que al pin LED una salida y colquelo en alto.
En forma alterna, si el pin est ya definido como una salida, una forma ms
rpida para colocar en nivel alto a un pin sera:
PORTB.0 = 1 'Coloque el pin 0 del PORTB en alto.
16. IF Comp {AND/OR Comp...} THEN etiqueta
' Solamente para la versin profesional
Operacin
{I}{S}BIN{1..16}
{I}{S}DEC{1..5}
10
{I}{S}HEX{1..4}
REP c\n
STR ArrayVar{\n}
Operacin
$FE, 1
Borre la pantalla
$FE, 2
11
12
LED
13
14
15
27. RETURN
Regresa de una subrutina. RETURN regresa a la ejecucin de la instruccin
de la que fue llamado luego de la instruccin GOSUB.
Ejemplo
GOSUB sub1 ' Vaya a la subrutina denominada sub1
...
sub1:
SEROUT 0,N2400,["Hola"] ' Enve Hola en forma serial por el Pin0
RETURN ' Regrese al programa principal luego de Gosub
28. SERIN Pin,Modo,{Timeout,Etiqueta,}{[Control...],}{Seal..}
Recibe una o ms seales en el pin en formato asincrnico estndar
utilizando datos de 8 bits, sin paridad y un bit de parada (8N1). Con SERIN
el pin se convierte en forma automtica en entrada.
El valor del pin puede ser una constante entre 0 y 15, una variable que
contiene un valor entre 0 y 15 (por ejemplo B0) o el nombre del pin (por
ejemplo PORTA.0).
El nombre del modo (por ejemplo T2400) se define en el archivo
MODEDEFS.BAS. Para utilizarlo, debe incluir la lnea de comando:
INCLUDE "modedefs.bas"
Al inicio del programa que se realiza en PicBasic. BS1DEFS.BAS y
BS2DEFS.BAS se incluyen en MODEDEFS.BAS. No debe incluirlo
nuevamente si ya si incluy uno de estos archivos. Los nmeros de Modo
pueden ser utilizados sin incluir este archivo.
Modo Modo No. Velocidad en Baudios
T2400
2400
T1200
1200
T9600
9600
T300
300
N2400
2400
N1200
1200
N9600
9600
N300
300
Estado
Verdadero
Invertido
16
17
T2400
2400
T1200
1200
T9600
9600
T300
300
N2400
2400
N1200
1200
N9600
9600
N300
300
OT2400
2400
OT1200
1200
OT9600
10
9600
OT300
11
300
ON2400
12
2400
ON1200
13
1200
ON9600
14
9600
ON300
15
300
Salida
sin
inversin
Salida
invertida
Salida
abierta
sin
inversin
Salida
abierta
invertida
SEROUT permite manejar tres tipos diferentes de datos los cuales pueden
combinarse y chequearse su correspondencia dentro de la instruccin
SEROUT:
1. Una cadena de caracteres se coloca a la salida como una cadena de
caracteres ASCII
2. Un valor numrico (sea constante o variable) se enva utilizando su
correspondiente valor ASCII. Para este caso el valor 13 se considera
como un enter y 10 como siguiente lnea.
3. Un valor numrico precedido por el smbolo # enviar la representacin
en ASCII de su valor decimal. Por ejemplo, si W0=123, la instruccin con
#W0 enviar los valores ASCII del 1, 2 y 3.
SEROUT considera un oscilador de 4MHz cuando genera el tiempo de
duracin de los bits. Para tener la apropiada temporizacin de los bits de
acuerdo a una velocidad en baudios, debe utilizar DEFINE para indicar el
18
REFERENCIAS
-
19