Anda di halaman 1dari 19

INSTRUCCIONES DE PIC BASIC

ELABORADO POR: ING. EDDIE E. GALARZA Z.


ESPE LATACUNGA

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:

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

Tamao

Mximo nmero de elementos

BIT

256

BYTE

96
48

WORD

Los arreglos deben caber dentro de un solo banco de la RAM en la mayora


de los micros PIC.
3. OPERADORES
OPERADORES MATEMTICOS
El compilador PicBasic realiza todas las operaciones matemticas en
completo orden jerrquico. Esto significa que existe una precedencia para
los operadores. Las multiplicaciones y divisiones se realizan primero que las
sumas y restas. Para asegurar que las operaciones se realicen en el orden
deseado, es preferible utilizar parntesis:
A = (B + C) * (D - E)
Todas las operaciones matemticas son sin signo y se realizan con una
precisin de 16 bits. Los operadores disponibles son:
Operador Matemticos

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

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

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

<=

Menor o Igual que

>=

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

Mayor o igual 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

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

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%.

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

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

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

limitada a dividir enteros de 31 bits sin signo (mximo 2.147483.647) por un


entero sin signo de mximo 15 bits.
Ejemplo
a VAR WORD
b VAR WORD
c VAR WORD
result VAR WORD
b = 500
c = 1000
DISABLE
' esta instruccin es necesaria si estn habilitadas las
interrupciones
result = b * c ' Puede utilizarse ** o */
a = DIV32 100
ENABLE
' Es necesario si se utiliza una interrupcin
10. END
Detiene la ejecucin de un programa e ingresa al modo de bajo consumo.
Todos los pines de entrada / salida permanecen en el estado en que se
encontraban. END trabaja ejecutando una instruccin SLEEP
continuamente en un lazo.
Una instruccin END, STOP o GOTO debe colocarse al final de cada
programa para controlar que no se pare y que se salga fuera de los lmites
de la memoria.
11. FOR Conteo = Inicio TO final {STEP {-} Inc}
{Cuerpo}
NEXT {Conteo}
El lazo FORNEXT permite la ejecucin de varias instrucciones un nmero
de veces especificado, utilizando como contador a una variable.
Ejemplo
FOR i = 1 TO 10 ' Cuente de 1 a 10
SEROUT 0,N2400,[#i, ] ' enve cada nmero al Pin0 en forma serial
NEXT i ' Regrese y haga el siguiente conteo
SEROUT 0,N2400,[10] ' Enve un caracter nueva lnea
12. FREQOUT Pin,Onms,Frecuencia1{,Frequencia2}
Produce la Frecuencia(s) requerida sobre el pin especificado por Onms
milisegundos. El pin automticamente se define como salida. Una o dos
frecuencias pueden ser producidas al mismo tiempo en valores de 0 a
32767 Hertz.

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

FREQOUT funciona de mejor manera con osciladores de 20MHz. Puede


trabajar tambin con osciladores de 10MHz y con 4MHz.
Ejemplo
'Enve un tono de 1KHz en el Pin1 durante 2 segundos
FREQOUT PORTB.1,2000,1000
13. GOSUB Etiqueta
Salta a la subrutina que se encuentra en etiqueta almacenado su direccin
de retorno en la pila. El nmero de subrutinas que puede utilizarse es
ilimitado y puede considerarse subrutinas anidadas. El nmero mximo de
niveles en la subrutinas anidadas es de 4.
Ejemplo
GOSUB beep ' Ejecute la subrutina llamada beep
...
beep: HIGH 0 'Encienda el LED conectado en el Pin0
SOUND 1,[80,10] 'Haga sonar el parlante conectado en el Pin1
LOW 0 ' Apague el LED conectado al Pin0
RETURN ' Regrese a la rutina principal que llam al programa en ejecucin

14. GOTO Etiqueta


La ejecucin del programa contina con las instrucciones que se
encuentran despus de etiqueta.
Ejemplo
GOTO enviar ' Salta a la instruccin que se especifica en la etiqueta enviar.
...
enviar: SEROUT 0,N2400,["Hola"] ' Enve Hola por el Pin0 en forma serial
15. HIGH Pin
Coloca el pin especificado en nivel lgico alto. En forma automtica el pin se
convierte en salida. El valor de pin puede ser una constante, o una variable
que contiene un nmero de 0 a15 (ejem. B0) o el nombre de un pin (ejem:
PORTA.0).
Ejemplo
HIGH 0 ' Haga al pin 0 una salida y colquelo en alto (~5 voltios)
HIGH PORTA.0 ' Haga al pin 0 del PORTA una salida y colquelo en alto
led VAR PORTB.0 ' Defina el pin LED en el PORTB.0

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

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

IF Comp {AND/OR Comp...} THEN


Instrucciones...
ELSE
Instrucciones...
ENDIF
Realiza una o ms comparaciones. Cada una de las comparaciones puede
relacionar una variable con otra variable o una constante. Necesariamente
debe incluir uno de los operadores de comparacin. If..Then evala los
trminos que se comparan para determinar si la expresin es falsa o
verdadera. Si se evala como verdadera, la operacin que se encuentra
luego de Then se ejecuta. Si se evala como falso, la operacin que se
encuentra luego de Then no se ejecuta. Las comparaciones que se
evalan como 0 se consideran falso, cualquier otro valor se considera
verdadero. Todas las comparaciones se realizan sin signo.
Debe asegurarse de utilizar los parntesis para especificar en forma clara el
orden de las operaciones que se verifican. Si no se considera, los
resultados pueden ser errneos.
IF..THEN puede operar de 2 maneras. En una forma, el THEN en un
IF..THEN es una sentencia GOTO. Si la condicin es verdadera el
programa ir a ejecutar la instruccin que se encuentra especificada en la
etiqueta de salto. Si el falsa, el programa continuar con la siguiente lnea
luego de IF..THEN. Ninguna instruccin puede colocarse luego del THEN,
esto debe ser siempre una etiqueta.
Ejemplo
IF Pin0 = 0 THEN nuevo ' Si el pulsante conectado al Pin0 se presiona (0),
el programa debe saltar a la etiqueta nuevo
IF B0 >= 40 THEN viejo 'Si el valor en la variable B0 es mayor o igual que
40, salte a viejo.
IF PORTB.0 THEN otro ' Si el pin = del PORTB, est en alto (1), salte a otro
IF (B0 = 10) AND (B1 = 20) THEN lazo

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

En la segunda forma, IF..THEN pueden ejecutarse condicionalmente con un


grupo de instrucciones siguiendo a THEN. Las instrucciones deben ser
seguidas por un ELSE o ENDIF para completar la estructura.
IF B0 <> 10 THEN
B0 = B0 + 1
B1 = B1 - 1
ENDIF
IF B0 = 20 THEN
led = 1
ELSE
led = 0
ENDIF
17. INPUT Pin
Define al Pin indicado como entrada. El pin puede ser una constante de 0
a15, una variable que contiene un nmero de 0 a 15 (ejem: B0) o el nombre
del pin (ejem: PORTA.0).
Ejemplo
INPUT 0 ' Defina al Pin0 como entrada
INPUT PORTA.0 ' Defina al PORTA, pin 0 como entrada
En forma alterna, el pin puede definirse como una entrada en una forma
ms rpida y sencilla con:
TRISB.0 = 1 ' Defina el pin 0 del PORTB, como entrada
Todos los pines de un Puerto pueden ser definidos como entradas
especificando el contenido total del registro TRIS de una sola vez:
TRISB = %11111111 'Defina a todo el PORTB como entrada
18. LCDOUT Elemento{,Elemento...}
Presenta datos en la pantalla del display de cristal lquido (LCD). PicBasic
incluye mdulos de LCD para el controlador Hitachi 44780 o su equivalente.
Si un signo de libras (#) le precede a un elemento, la representacin en
ASCII para cada dgito es enviada a la salida del LCD. LCDOUT puede
utilizar modificadores que utiliza SEROUT2. Los Modificadores que dispone
son:
Modificador

Operacin

{I}{S}BIN{1..16}

Enva dgitos binarios

{I}{S}DEC{1..5}

Enva dgitos decimales

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

10

{I}{S}HEX{1..4}

Enva dgitos en hexadecimal

REP c\n

Enva el caracter c repetido n veces

STR ArrayVar{\n}

Enva una cadena de n caracteres

Un programa debe esperar por lo menos medio segundo antes de enviar el


primer comando al LCD. Un LCD demora en inicializarse. Los comandos se
dirigen al LCD mediante el cdigo $FE seguido del comando. Algunos
comandos que son tiles se indican en la tabla a continuacin:
Comando

Operacin

$FE, 1

Borre la pantalla

$FE, 2

Vaya al inicio (inicio de la primera lnea)

$FE, $0C Apague el cursor


$FE, $0E Subraye al cursor
$FE, $0F Haga parpadear al cursor
$FE, $10 Mueva el cursor una posicin a la izquierda
$FE, $14 Mueva el cursor una posicin a la derecha
$FE, $C0 Mueva el cursor al inicio de la segunda lnea
$FE, $94 Mueva el cursor al inicio de la tercera lnea
$FE, $D4 Mueva el cursor al inicio de la cuarta lnea
Note que existe un comando para mover el cursor al inicio de la segunda
lnea. Para la mayora de LCDs, los caracteres presentados y las lneas no
son consecutivos en la memoria de la pantalla por lo que puede haber
una interrupcin entre las localidades. Para la mayora de los displays de
16x2, la primera lnea empieza en $0 y la segunda lnea inicia en $40. El
comando LCDOUT $FE, $C0, configura al display para que inicie
escribiendo caracteres al inicio de la segunda lnea.
Ejemplo
LCDOUT $FE, 1, "Hola" 'Borra la pantalla del display y muestra Hola
LCDOUT B0, #B1
El LCD ouede ser conectado a un microcontrolador PIC utilizando 4 u 8
lneas. Si se utilizan 8 lneas, estas deben estar en un nico Puerto. Si se
utilizan nicamente 4 bits estos deben conectados a los 4 bits ms
significativos o a los 4 menos significativos de un puerto.
Las lneas Enable y Register Select pueden ser conectadas a cualquier pin
de un puerto. R/W debe conectarse a tierra debido a que el comando
LCDOUT es solamente de escritura. El programa PICBasic asume que el

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

11

LCD est conectado a los pines especificados al menos que se establezca


de otra manera. Asume que el LCD ser utilizado con el bus de 4 bits DB4 DB7 conectado al PIC en los pines PORTA.0 - PORTA.3, La conexin
Register Select a PORTA.4 y el pin Enable al PORTB.3.
Se define que el LCD presentar los datos inicialmente en la lnea 2. Para
cambiar esta configuracin, debe colocar las siguientes instrucciones, todas
ellas en maysculas en la parte inicial del programa.
Para cambiar la configuracin anteriormente indicada, indique lo siguiente:
'Defina el Puerto para el LCD
DEFINE LCD_DREG PORTB
'Indique el bit en el que se inicia la connexion (0 o 4) si es un bus de 4-bits
DEFINE LCD_DBIT 4
'Defina el Puerto para el Register Select del LCD
DEFINE LCD_RSREG PORTB
'Defina el bit para el Register Select del LCD
DEFINE LCD_RSBIT 1
'Defina el puerto para la seal Enable del LCD.
DEFINE LCD_EREG PORTB
'Defina el bit Enable del LCD
DEFINE LCD_EBIT 0
'Defina el tamao del bus (4 u 8 bits)
DEFINE LCD_BITS 4
'Defina el nmero de lneas en el LCD
DEFINE LCD_LINES 2
'Defiina el comando de retardo en us
DEFINE LCD_COMMANDUS 2000
'Defina el tiempo de retardo en us
DEFINE LCD_DATAUS 50
Esta configuracin le indica a PicBasic que se conectar un display de 2
lneas, que trabaja en el modo de 4 bits con el bus de datos en la parte
superior del PORTB, el Register Select est en PORTB.1, y Enable en el
PORTB.0.
19. LOW Pin
Hace que el pin especificado se coloque en bajo. El pin se define en forma
automtica como salida. Este puede ser una constante de 0 a 15, o una

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

12

variable que contiene un nmero de 0 a 15 (ejem: B0) o el nombre de un pin


(ejem: PORTA.0).
Ejemplo
LOW 0 ' Haga al Pin0 una salida y colquelo en bajo (0 volts)
LOW PORTA.0 ' Haga el pin 0 del PORTA, una salida y colquelo en bajo)
LED
VAR
PORTB.0
'
Defina
el
pin
denominado
LOW LED ' haga el pin LED como salida y colquelo en bajo (0 volts)

LED

En forma alterna, si el pin ya es una salida, una manera corta y sencilla


sera de la forma:
PORTB.0 = 0 ' Coloque el pin 0 del PORTB, en bajo
20. ON INTERRUPT GO TO Etiqueta
ON INTERRUPT permite el manejo de interrupciones del microcontrolador
mediante una subrutina de PICBasic. Existen dos formas para manejar
interrupciones, la primera es escribir en lenguaje asembler la rutina de la
interrupcin, la cual es la forma de manejar a las interrupciones con la
menor latencia y con el mnimo uso de instrucciones. El segundo mtodo es
mediante el uso de la subrutina que se define con la instruccin ON
INTERRUPT GO TO a continuacin de la Etiqueta, la cual debe finalizar
con la instruccin RESUME.
21. OUTPUT Pin
Hace que funcione como una salida el pin indicado. El pin puede ser una
constante de 0 a 15, una variable que contiene un nmero de 0 a 15 (ejem:
B0) o el nombre de un pin (ejem: PORTA.0).
Ejemplo
OUTPUT 0 'Haga al Pin0 una salida
OUTPUT PORTA.0 ' Haga al pin 0 del PORTA, una salida
En forma alterna, el pin puede ser definido como salida en una manera fcil
y sencilla de la siguiente manera:
TRISB.0 = 0 ' Defina el bit 0 del PORTB como salida
Todos los bits del Puerto pueden ser definidos como salida colocando el
registro TRIS de una sola accin:
TRISB = %00000000 ' Defina todos los bits del PORTB como salida

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

13

22. POT Pin,Escala,Var


Lee el valor de un potencimetro (o algn otro elemento resistivo) en un Pin.
El Pin puede ser una constante de 0 a 15, una variable que contiene un
nmero de 0 a 15 (ejem: B0) o el nombre de un pin (ejem: PORTA.0).
La resistencia es medida mediante la temporizacin de un capacitor por el
que se descarga en conjunto con la resistencia (tpicamente 5K a 50K).
El valor Escala es utilizado para ajustar las constantes RC. Para grandes
constantes RC, Escala debera definirse en bajo (una valor mnimo de
uno). Para constantes RC pequeas, Escala debera ser definido a su
mximo valor de 255. Si se coloca Escala correctamente, Var debera
para cero, ser un valor mnimo y para 255 un valor cercano a la mxima
resistencia.
Desafortunadamente, Escala debe ser determinado experimentalmente.
Para esto, se coloca un elemento en medicin a la mxima resistencia y se
lee con la escala en 255. Bajo estas condiciones, Var producir un valor
apropiado para Escala.
Ejemplo
POT 3,255,B0 ' Lee el potencimetro que se encuentra en el pin 3 para
determinar su escala
SEROUT 0,N2400,[#B0] 'Enve el valor del potencimetro en forma serial
por el pin 0.
23. PULSIN Pin,Estado,Var
Mide el ancho del pulso que se ingresa en un pin. Si el estado es bajo, el
ancho del pulso en bajo se mide. Si el estado es alto, se mide el ancho del
pulso en alto. El valor medido se coloca en Var. Si no se produce un
cambio o el ancho del pulso es muy grande, Var se coloca en 0. Si se
utiliza una variable de 8 bits, nicamente se registra los 8 bits menos
significativos de la medida que de otra manera debera ser de 16 bits.
El valor del pin puede ser una constante entre 0 y 15, una variable que
contiene valor entre 0 y 15 (por ejemplo B0) o el nombre del pin (por
ejemplo PORTA.0).
La resolucin de la medida de PULSIN depende de la frecuencia del
oscilador. Si se utiliza un oscilador de 4MHz, el ancho del pulso se presenta
en incrementos de 10us. Si el oscilador utilizado es de 20MHz, el ancho del
pulso tendr una resolucin de 2us.
Ejemplo
'Mida el ancho del pulso en alto en el Pin4 y guarde el resultado en W3
PULSIN PORTB.4,1,W3

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

14

24. PULSOUT Pin,Periodo


Genera un pulso de un periodo especfico sobre un pin. El pulso se genera
cambiando el estado del pin dos veces, de tal manera que la polaridad
inicial del pulso determina la forma de la salida, El pin se define como salida
en forma automtica. El valor del pin puede ser una constante entre 0 y 15,
una variable que contiene valor entre 0 y 15 (por ejemplo B0) o el nombre
del pin (por ejemplo PORTA.0).
La resolucin de PULSOUT depende de la frecuencia del oscilador. Si se
utiliza un oscilador de 4MHz, el periodo del pulso generado se presentar
en incrementos de 10us. Si el oscilador es de 20MHz, el periodo tendr una
resolucin de 2us.
Ejemplo
'Enve un pulso de 1mSec de duracin (a 4MHz) al Pin5
PULSOUT PORTB.5,100
25. PWM Pin,Duty,N
Coloca a la salida un tren de pulsos modulados en ancho sobre un pin.
Cada ciclo de PWM consiste de 256 pasos. La relacin de trabajo (Duty)
para cada ciclo PWM vara de 0 (0%) a 255 (100%). Este ciclo PWM se
repite N veces. El valor del pin puede ser una constante de 0 a 15, una
variable que contiene valor de 0 a 15 (por ejemplo B0) o el nombre del pin
(por ejemplo PORTA.0).
El tiempo del ciclo de PWM depende de la frecuencia del oscilador. Si se
utiliza un oscilador de 4MHz, cada N ser de alrededor de 5ms de duracin.
Si el oscilador es de 20MHz, cada N ser de alrededor de 1ms en duracin.
El pin se hace salida antes de iniciar la generacin del PWM y se convierte
en entrada despus de que termina la generacin.
La salida PWM en un pin parece ser informacin sin sentido, sin una forma
exacta de onda cuadrada. Es necesario utilizar algn filtro para convertir a
la seal en algo til. Un circuito RC puede ser utilizado como un conversor
D/A.
26. RESUME {Etiqueta}
Permite a un programa regresar al lugar en el que lo dejo en el momento de
aceptar una interrupcin. RESUME es similar a RETURN pero se utiliza al
final de una interrupcin de PicBasic. Si se utiliza la Etiqueta, que es
opcional, la ejecucin del programa continuar en la Etiqueta en vez de
continuar en donde abandon para ejecutar la interrupcin.

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

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

Un tiempo opcional Timeout en conjunto con una etiqueta pueden


incluirse para permitir que contine con la ejecucin del programa si no se

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

16

recibe un caracter dentro de cierto intervalo de tiempo. Timeout se


especifica en unidades de 1 milisegundo.
Los bits de los datos a ser recibidos puede ser precedidos de uno o ms
controles que debe incluirse dentro de las llaves de la instruccin. SERIN
debe recibir estos bytes en el orden exacto antes de recibir los bits de los
datos. Si un byte recibido no se ajusta a los de control en la secuencia, el
proceso de recepcin se inicia nuevamente, es decir que el siguiente byte
que se recibe se compara nuevamente con los bytes de control. La
informacin de control puede ser una constante, una variable o una cadena
de caracteres. Cada carcter de la cadena se lo considera como un control
independiente.
Luego de que se cumple con los controles, SERIN comienza a almacenar
los datos en las variables asociadas con cada carcter. Si se utiliza
nicamente el nombre de la variable, el valor del caracter ASCII recibido se
almacena en la variable. Si la variable est precedida de por un smbolo (#),
SERIN convierte el valor recibido en decimal a su correspondiente
representacin ASCII y almacena el resultado en esa variable. Aquellos
caracteres que no son decimales antes de encontrar al primer dgito se
ignoran y se eliminan. Los caracteres que no son dgitos decimales que se
encuentran al final de la cadena recibida tambin son eliminados.
SERIN considera un oscilador de 4MHz cuando genera la temporizacin
para la duracin de los bits. Para mantener la adecuada velocidad en
baudios con otros valores de osciladores, debe asegurarse de definir el
oscilador con el comando DEFINE indicando el nuevo valor del oscilador.
La mayora de las aplicaciones permiten la utilizacin de los PICs sin la
necesidad de utilizar convertidores de niveles.
Ejemplo
'Espere hasta que el caracter A sea recibido en forma serial en el Pin1 y
coloque este nuevo caracter en la variable B0
SERIN 1,N2400,["A"],B0
29. SEROUT Pin,Mode,[Item {,Item...}]
Enva uno o ms datos al pin en formato estndar asincrnico utilizando 8
bits, sin paridad y un bit de parada (8N1). SEROUT es similar al comando
BS1. El pin se convierte en salida en forma automtica. El valor del pin
puede ser una constante entre 0 y 15, una variable que contiene un valor de
0 a 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 el comando:
INCLUDE "modedefs.bas"

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

17

Al inicio del programa en PicBasic. BS1DEFS.BAS y BS2DEFS.BAS ya


estn incluidos en MODEDEFS.BAS. No los incluya nuevamente si uno de
estos archivos ya est incluido. El nmero de modo puede ser utilizado sin
la necesidad de incluir este archivo.
Modo

Modo No. Velocidad en Baudios Estado

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

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

18

oscilador a ser utilizado. En ciertos casos, las velocidades de transmisin de


la instruccin SEROUT no pueden ser definidas adecuadamente.
La instruccin de alargamiento de caracteres (character pacing) permite
retardo de 1 to 65,535 microsegundos (.001 to 65.535 milisegundos) entre
cada uno de los caracteres que se transmite. Por ejemplo, para incluir una
pausa de 1 milisegundo entre la transmisin de cada carcter use:
DEFINE CHAR_PACING 1000
La mayora de las aplicaciones que se utilizan con los PICs no requiere de
conversores de niveles a RS-232, para esto, las salidas invertidas TTL
(N300..N9600) pueden ser utilizadas. Una resistencia limitadora de corriente
se sugiere utilizar (la interfase RS-232 se supone que soporta cortocircuitos
en su entrada).
Ejemplo
'Enve en forma serial el valor ASCII de B0 seguido de un carcter enter
por el pin 0
SEROUT 0,N2400,[#B0,13]

REFERENCIAS
-

PIC BASIC HELP

MICROENGINEERING LABS, INC

Ing. Eddie Galarza Z. MSc. - ESPE Latacunga

19

Anda mungkin juga menyukai