Вы находитесь на странице: 1из 82

PROTON IDE

http://protoncompiler.blogspot.pe/2010/05/proton-ide.html

1 may. 2010

FUNDAMENTOS DE PROTON BASIC


El compilador Proton Basic es un lenguaje de programacin de nueva generacin que hace mas fcil y
rpido el manejo de microcontroladores Pic micro de Microchip. El lenguaje Basic es mucho ms fcil de
leer y escribir que el lenguaje ensamblador Microchip.
El Proton Basic produce un cdigo que puede ser programado para una variedad de micro controladores
PIC que tengan de 8 a 68 pins y varias opciones en el chip incluyendo convertidores A/D, temporizadores y
puertos seriales.
Bases del Protn Basic
Identificadores
Un identificador es simplemente un nombre. Son usados en Pronto Basic como etiquetas de lneas y
nombres de variables. Un identificador es cualquier secuencia de letras, dgitos y smbolos, aunque no
deben comenzar con un dgito. Los identificadores no distinguen las letras maysculas de las minsculas,
por lo que etiqueta, ETIQUETA, Etiqueta son todas tratadas como equivalentes. Aunque las etiquetas
pueden tener cualquier nmero de caracteres de longitud, Protn Basic solamente reconoce los primeros
32.
Etiquetas
Para marcar lneas que el programa puede desear referenciar con comandos GOTO GOSUB, Proton
BAsic usa tiquetas de lnea y no permite nmero de lnea y no requiere que cada lnea sea etiquetada.
Cualquier lnea puede comenzar con una etiqueta de lnea que es simplemente un identificador seguido por
dos puntos (:)
ejemplo
here:
Goto here
Variables
Variables es donde se guardan datos en forma temporaria en el programa. Son creadas usando la
palabra clave DIM. Pueden ser bits , bytes, word, dword, float y string.
El Espacio para cada variable es automticamente destinado en la memoria RAM del
microcontrolador.
El formato para crear una variable es el siguiente:
DIM etiqueta AS tipo

Etiqueta es cualquier identificador excluyendo palabras claves como se describe anteriormente.


Tipo es bit, byte , word , dword or float.
Algunos ejemplos de declaracion de varibles de cada tipo son:
DIM Var1
DIM
DIM
DIM
DIM
DIM

AS BYTE ' Crea una variable de 8-bit sin signo (0 - 255)

Var2
AS BIT
' Crea una variable de un simple bit (0 - 1)
Var3
AS WORD ' Crea una variable de 16-bit sin signo (0 - 65535)
Var4 AS DWORD ' Crea a variable de 32-bit con signo (-2147483647 , +2147483647)
Var5
AS FLOAT ' Crea una variable de 32-bit punto flotante.
ST
AS STRING * 20 ' Crea una cadena con capacidad de 20 caracteres (8-bit)

Alias
DIM tambin puede ser usado para crear un alias para una variable. Esto es muy til para acceder al
interior de una variable.
Dim Var1 as Var2 Var2 es otro nombre de var1
Dim VAr3 as Portb.1 asigna el alias Var3 a la patilla RB0
Arreglos
Los arreglos de variables pueden ser creados en una manera similar a las variables.
Dim Etiqueta [tamao] as tipo
Etiqueta es cualquier identificador, excluyendo palabras claves, como se describi anteriormente.
Tipo es BIT, BYTE WORD. Nmero de elementos es cuantos lugares en el arreglo se desean.
Algunos ejemplos de creacin de arreglo son los siguientes:
DIM sharks[10] as byte
DIM var3[10] as Word
La primera ubicacin dentro del arreglo es el elemento cero. Dada la forma en que los arreglos estn
localizados en memoria hay lmites de tamao para cada tipo.
Constantes
Las llamadas constantes pueden ser creadas de manera similar a las variables. Puede ser mas
conveniente usar un nombre de constante en lugar de un nmero constante. Si el nmero necesita ser
cambiado, nicamente puede ser cambiando en un lugar del programa donde se define la constante. No
pueden guardarse datos variables dentro de una constante. Ejemplos :
Dim Mice as 4.13
En este ejemplo la constante mice es de 4,13 y la misma no puede ser modificada durante el transcurso
del programa.
Constantes Numricas
Proton BAsic permite definir constantes numricas en tres bases: decimal, binario y hexadecimal.
Valores binarios son definidos usando el prefijo % y valores hexadecimales usando el prefijo $. Los

valores decimales se toman por defecto y no requieren prefijo. Ejemplos:


100 valor decimal 100
%100 valor binario para el decimal 4.
$100 valor hexadecimal para el decimal 256.
Pines
A los pines de Microcontrolador, se puede acceder de diferentes modos. El mejor camino para
especificar un pin para una operacin, es simplemente usar sus nombres PORT y un nmero de bit:
PORTB.1=1 Coloca PORTB, bit 1 a 1
Para recordar fcilmente para qu puede ser usado un pin, debe serle asignado un nombre usando el
comando DIM. De esta manera, el nombre puede ser utilizado luego en cualquier operacin.
Comentarios
Un comentario de Protn Basic comienza con la palabra clave REM o el apstrofe (). Todos los dems
caracteres de esa lnea se ignoran. REM es una nica palabra clave y no es una abreviacin de REMark,
por lo tanto, los nombres de variables pueden comenzar con REM (aunque REM por s mismo no es vlido).
Declaraciones mltiples
Para permitir programas mas compactos y agrupamientos lgicos de comandos relacionados, Proton
Basic soporta el uso de (:) para separar comandos ubicados en la misma lnea. Los siguientes dos ejemplos
son equivalentes.
W2 = W0
W0 = W1
W1 = W2
Es lo mismo que:
W2 = w0 : W0 = W1 : W1 = W2
En los dos casos, el tamao del cdigo generado es el mismo.
Operadores Matemticos
Protn Basic efecta todas las operaciones matemticas en orden jerrquico. Esto significa que existe
precedencia para los operadores .Multiplicacin y divisin son efectuados antes que suma y resta , por
ejemplo.
Para asegurarse que las operaciones son efectuadas en el orden que se desea, se usan parntesis
para agrupar las operaciones.
A=(B+C)*(D-E)
Todas las operaciones matemticas se realizan sin signo y con una precisin de 16 bit.
Los operadores soportados son :
Operador matemtico Descripcin
+ Suma
- Resta

* Multiplicacin
** 16 bits superiores de la multiplicacin
*/ 16 nits medios de la multiplicacin
/ Divisin
// Resto (mdulo)
<< Desplazamiento izquierdo
>> Desplazamiento derecho
ABS Valor absoluto
COS Coseno
DIG Digito
SIN Seno
SQR Raiz cuadrada
Operadores lgicos
Los operadores lgicos difieren de las operaciones de bit inteligente. Entregan un resultado CIERTO /
FALSO de su operacin .Valores 0 son tratados como falso. Cualquier otro valor es cierto. Se usan junto a
operadores de comparacin en una declaracin IF .. THEN .Los operadores soportados son :
Operador Descripcin
AND o && AND logico
OR o I I OR logico
XOR o ^ ^ OR exclusivo logico
NOT AND NAND logico
NOT OR NOR logico
NOT XOR NXOR logico

Relational operators are used to compare two values as shown in the list below. The result can be used to
make a decision regarding program flow.

Operadores del tipo Expression de Relacion


Los Operadores de Relacion son usados para comparar dos valores como se muestra en la lista abajo.
El resultado es boleano y pouede ser usado para tomar deiciones en el flujo del programa.
Operador
=
<>

Relacion
Igualdad
desigualdad

Ejemplo
X=Y
X <> Y

<
>
<=
>=

menor que
mayor que
menor o igual que
mayor o igual que

X<Y
X>Y
X <= Y
X >= Y

CALL etiqueta
Ejecuta la subrutina ensamblador llamada etiqueta. Normalmente se usa GOSUB para ejecutar una
subrutina .La principal diferencia entre GOSUB y CALL, es que con sta ltima no se chequea la existencia
de etiquetas hasta el momento de ensamblar. Usando CALL se puede acceder a una etiqueta en una
seccin de lenguaje ensamblador, lo que es inaccesible mediante Protn Basic .
Dentro de los comandos de Protn Basic mas estudiados para la elaboracin del diseo se describen
los Siguientes:
END
Detiene la ejecucin del proceso y entra en modo de baja potencia .Todos los pins de I/O permanecen
en el estado en que se encuentran ,END trabaja ejecutando una instruccin SLEEP continua dentro de un
loop . Un END , STOP GOTO deben ser colocados al final de un programa para evitar pasar del lmite de
la misma u comience nuevamente .
FOR .. NEXT
FOR Count = Start TO End {STEP {-} Inc}
{Body}
NEXT {Count}
El loop FOR .. NEXT permite a los programas ejecutar un nmero de declaraciones ( Body ) un
numerode veces , usando una variable como contador . Debido a su complejidad y versatilidad , es mejor
describirla paso a paso .
El valor de Start se asigna a la variable ndice ,Count , que puede ser una variable de cualquier tipo .
Se ejecuta el Body . Body es opcional y puede ser omitido ( quizs por un loop de demora ). El valor de Inc
es sumado a ( restado si se especifica - ) Count .Si no se define una clusula STEP , se incrementa
Count en uno . Si Count no pas End desbord el tipo de variable , la ejecucin vuelve al paso 2) . Si el
loop necesita contar ms de 255 ( Count > 255 ) , se debe usar una variable de tamao word .
IF ...THEN
IF Comp { AND/OR Comp ... } THEN
{Declaracin}
ELSE
{ Declaracin}
ENDIF
Efecta una ms comparaciones .Cada trmino Comp puede relacionar una variable con una
constante otra variable e incluye uno de los operadores listados anteriormente . En la segunda forma,
IF..THEN puede ejecutar condicionalmente un grupo de declaraciones que sigan al THEN. Las
declaraciones deben estar seguidas por un ELSE o un ENDIF para completar la estructura.
ON INTERRUPT GOTO Label
Permite el manejo de las interrupciones del micro controlador por medio de una subrutina . Existen dos

formas de manejar interrupciones usando Proton Basic . La primera es escribir una subrutina de interrupcin
en lenguaje ensamblador .Esta es la forma de manejar interrupciones con la menor latencia y el menor
overhead . El segundo mtodo es escribir un handler ( manejador ) de interrupciones.Es similar a una
subrutina , pero termina con un RESUME . Cuando ocurre una interrupcin , se marca con una bandera
.Cuando la ejecucin de la declaracin que se estaba ejecutando termina , el programa salta al handler de
interrupciones indicado en Label.
Una vez que termina el trabajo del handler , una declaracin RESUME enva el programa de vuelta a
donde estaba cuando ocurri la interrupcin , tomando todo como lo dej .
DISABLE y ENABLE
Permiten que distintas secciones de un programa se ejecuten sin la posibilidad de ser interrumpidas .El
lugar ms notorio para usar DISABLE es justo antes del actual handler de interrupciones. O el handler
puede ser colocado antes que la declaracin ON INTERRUPT ya que la bandera de interrupciones no se
chequea antes del primer ON INTERRUPT en un programa .
2 may. 2010

FORMATO GENERAL
1.-El compilador no diferencia mayusculas de minusculas, excepto cuando procesamos constantes entre
comillas como "Hola".
2.- Multiples instrucciones pueden ser combinada en la misma linea separando cada una por dos puntos
(":").
Por ejemplo:
TRISB = 000000 : FOR VAR1 = 0 TO 100 : PORTB = VAR1 : NEXT
3 may. 2010

REPRESENTACIONES NUMERICAS
PROTON reconoce cuatro diferentes representaciones numericas:
Binario, por el prefijo %, por ejemplo:
PORTB = %11110000
Hexadecimal, por el prefijo $, por ejemplo:
PORTC = $11110000
Caracter byte, se utiliza colocando los cvaracteres entre comillas y se corresponden en decimal a su
correpondiente en codificacion ASCII. Por ejemplo:
var1 = "a" ; y representa el valor 97.
Decimal, los valores decimales no requieren prefijo.
PORTD = 254

Punto Flotante, es creado por el uso del punto decimal. Por ejemplo:
var2 = 3.1
4 may. 2010

REGISTROS DE HARDWARE Y PUERTOS


Todos los registros del hardward PICmicro, incluyendo los puertos, pueden ser accedidos igual que
cuquier variable. Esto quiere decir que pueden ser leidas o escritas con el uso de ecuaciones directamente:
Por ejemplo:
PORTA = %01010101 ' Escribe el valor binario en el puerto A
VAR1 = WRD * PORTA 'Multiplica la variable WRD y el puerto A

El compilados tambien puede combinar registros de 16 bits como TMR1, en una variable del tipo word.
Lo cual simplifica la lectura y escritura de estos registros.
Ejemplo:
DIM TIMER1 AS TMR1L.WORD
TIMER1 = 12345
Se combinan TMR1H, y TMR1L en una variable TIMER1, luego TMR1 se carga con el valor 12345.
DIM TIMER3 AS TMR3L.WORD ' Combine TMR3L y TMR3H
DIM AD_RESULT AS ADRES.WORD ' Combina ADRESL y ADRESH
DIM MUL_PROD AS PRODL.WORD ' Combina PRODL y PRODH

5 may. 2010

CONSTANTES Y SIMBOLOS
DECLARACION DE CONSTANTES
Las constantes pueden ser creadas de la misma manera que las variables. Estas pueden ser para uso
informativo o como nombre de una constante numerica. Una vez que una constante es declarada el valor de
esta no puede ser modificado.
La manera de declarar una variable es la siguiente:
DIM Label as Constant expression
Ejemplo :
DIM MOUSE as 1 ; el valor de la constante MOUSE sera 1

DIM MICE as MOUSE * 400 ; el valor de la constante MICE sera 1*400


DIM MOUSE_PI as MOUSE + 3.14; ; el valor de la constante MOUSE_PI sera +3,14

DECLARACION DE SIMBOLOS
Symbol proporciona otro mtodo para asignar alias a las
variables y constant. Symbol no puede ser usado para crear una variable. Constantes declaradas
con el empleo de SYMBOL no usan la RAM en el PICmicro.

Ejemplos:

SYMBOL CAT = 123


SYMBOL TIGER = CAT
SYMBOL MOUSE = 1
SYMBOL TIGOUSE = TIGER + MOUSE '
SYMBOL PI = 3.14
SYMBOL FL_NUM = 5.0 '

6 may. 2010

PALABRAS RESERVADAS
Las palabras de la lista son protejidas para el uso interno del compilador. asegurese de no usar
cuanquiera de ellas como nombre de variables o etiquetas, de no ser asi se pueden producir errores.

A
ABS, ACOS, ACTUAL_BANKS, ADC_RESOLUTION, ADIN, ADIN_RES, ADIN_STIME, ADIN_TAD
ALL_DIGITAL, ASM, AVAILABLE_RAM, ASIN, ATAN

B
BANK0_END, BANK0_START, BANK10_END, BANK10_START, BANK11_END, BANK11_START
BANK12_END, BANK12_START, BANK13_END, BANK13_START, BANK14_END, BANK14_START
BANK15_END, BANK15_START, BANK1_END, BANK1_START, BANK2_END, BANK2_START
BANK3_END, BANK3_START, BANK4_END, BANK4_START, BANK5_END, BANK5_START
BANK6_END, BANK6_START, BANK7_END, BANK7_START, BANK8_END, BANK8_START
BANK9_END, BANK9_START, BANK_SELECT_SWITCH, BANKA_END, BANKA_START
BIN, BIN1, BIN2, BIN3, BIN4, BIN5, BIN6, BIN7, BIN8, BIN9, BIN10, BIN11, BIN12

,BIN13, BIN14, BIN15, BIN16, BIN17, BIN18, BIN19, BIN20, BIN21, BIN22, BIN23, BIN24, BIN25
,BIN26, BIN27, BIN28, BIN29, BIN30, BIT, BOOTLOADER, BOX, BRANCH
BRANCHL, BREAK, BRESTART, BSTART, BSTOP, BUS_DELAYMS, BUSACK, BUSIN, BUSOUT
BUTTON, BUTTON_DELAY, BYTE

C
CALL, CASE, CCP1_PIN, CCP2_PIN, CDATA, CERASE, CHR$, CIRCLE, CLEAR, CLEARBIT, CLS
CON, CONFIG, CONTEXT, CORE, COS, COUNT, COUNT_ERRORS, COUNTER, CREAD, CURSOR,
CWRITE

D
DA, DATA, DB, DC, DCD, DE, DEC, DEC1, DEC2, DEC3, DEC4, DEC5, DEC6, DEC7, DEC8, DEC9,
DEC10
DECLARE, DEBUG, DEFINE, DELAYMS, DELAYUS, DEVICE
DJC, DJNC, DJZ, DJNZ, DIG, DIM, DISABLE, DIV2, DT, DTMFOUT, DW, DWORD

E
EDATA, EEPROM_SIZE, ELSE, ELSEIF, ENABLE, END, ENDSELECT, ENDASM
ENDIF, ENDM, EQU, EREAD, ERRORLEVEL, EWRITE, EXITM, EXP, EXP10, EXPAND
EXP

F
FILE_REF, FLASH_CAPABLE, FLOAT, FONT, FONT_ADDR, FOR, FREQOUT, FSRSAVE

G
GETBIT, GLCD_CS_INVERT, GLCD_FAST_STROBE, GOSUB, GOTO

H
HBRESTART, HBSTART, HBSTOP, HBUS_BITRATE, HBUSACK
HBUSIN, HBUSOUT, HEX, HEX1, HEX2, HEX3, HEX4, HEX5, HEX6, HEX7, HEX8

HIGH, HPWM, HRSIN, HRSOUT, HSERIAL_BAUD


HSERIAL_CLEAR, HSERIAL_PARITY, HSERIAL_RCSTA, HSERIAL_SPBRG, HSERIAL_TXSTA

I
I2CREAD, I2CWRITE, IBIN, IBIN1, IBIN2, IBIN3, IBIN4, IBIN5, IBIN6, IBIN7, IBIN8, IBIN9, IBIN10, IBIN11,
IBIN12
IBIN13, IBIN14, IBIN15, IBIN16, IBIN17, IBIN18, IBIN19, IBIN20, IBIN21, IBIN22, IBIN23, IBIN24, IBIN25
IBIN26, IBIN27, IBIN28, IBIN29, IBIN30,ICD, IDATA, IF
IHEX, IHEX1, IHEX2, IHEX3, IHEX4, IHEX5, IHEX6, IHEX7, IHEX8
INC, INCLUDE, INKEY, INPUT, INTERNAL_BUS, INTERNAL_FONT, IJC, IJNC, IJNZ, IJZ
ISBIN, ISBIN1, ISBIN2, ISBIN3, ISBIN4, ISBIN5, ISBIN6, ISBIN7, ISBIN8, ISBIN9, ISBIN10, ISBIN11,
ISBIN12
ISBIN13, ISBIN14, ISBIN15, ISBIN16, ISBIN17, ISBIN18, ISBIN19, ISBIN20, ISBIN21, ISBIN22, ISBIN23,
ISBIN24, ISBIN25
ISBIN26, ISBIN27, ISBIN28, ISBIN29, ISBIN30
ISDEC, ISDEC1, ISDEC2, ISDEC3, ISDEC4, ISDEC5, ISDEC6, ISDEC7, ISDEC8, ISDEC9, ISDEC10
ISHEX, ISHEX1, ISHEX2, ISHEX3, ISHEX4, ISHEX5, ISHEX6, ISHEX7, ISHEX8

K
KEYPAD_PORT

L
LCD_CS1PIN, LCD_CS2PIN, LCD_DTPIN, LCD_DTPORT, LCD_ENPIN, LCD_INTERFACE
LCD_LINES, LCD_RSPIN, LCD_RWPIN, LCD_TYPE, LCDOUT, LCDREAD, LCDWRITE
LEN, LEFT$ LET, LIBRARY, LINE, LOADBIT, LOCAL, LOG, LOG10, LOOKDOWN, LOOKDOWNL,
LOOKUP, LOOKUPL, LOW

M
MACRO_PARAMS, MAX, MID$, MIN, MSSP_TYPE

N
NCD, NEXT

O
ON, ON_INTERRUPT, ON_LOW_INTERRUPT, ONBOARD_ADC, ONBOARD_UART
ONBOARD_USB, OREAD, ORG, OUTPUT, OWRITE

P
PAGE, PAGESEL, PAUSE, PAUSEUS, PEEK, PEEKCODE, PICMICRO_PAGES
PIXEL, PLOT, POKE, POKECODE, POP, PORTB_PULLUPS, POT, POW, PRINT, PSAVE
PULSIN, PULSIN_MAXIMUM, PULSOUT, PUSH, PWM

R
RAM_BANK, RAM_BANKS
RANDOM, RCIN, RCTIME, READ, REM, REMARKS, REMINDERS, REP
REPEAT, RES, RESET_BANK, RESERVE_RAM, RESTORE, RESUME, RETURN, REV
RIGHT$, ROR, ROL, RSIN, RSIN_MODE, RSIN_PIN, RSIN_TIMEOUT, RSOUT
RSOUT_MODE, RSOUT_PACE, RSOUT_PIN

S
S_ASM, SBIN, SBIN1, SBIN2, SBIN3, SBIN4, SBIN5, SBIN6, SBIN7, SBIN8, SBIN9, SBIN10, SBIN11,
SBIN12
SBIN13, SBIN14, SBIN15, SBIN16, SBIN17, SBIN18, SBIN19, SBIN20, SBIN21, SBIN22, SBIN23, SBIN24,
SBIN25
SBIN26, SBIN27, SBIN28, SBIN29, SBIN30, SCL_PIN, SDEC, SDEC1, SDEC2, SDEC3, SDEC4, SDEC5,
SDEC6
SBREAK, SDEC7, SDEC8, SDEC9, SDEC10

SDA_PIN, SERIAL_BAUD, SEED, SELECT, SERIAL_DATA


SERIN, SERIN2, SEROUT, SEROUT2, SERVO, SERIAL_PARITY
SET, SET_BANK, SETBIT, SET_DEFAULTS, SET_OSCCAL, SHIFT_DELAYUS
SHEX, SHEX1, SHEX2, SHEX3, SHEX4, SHEX5, SHEX6, SHEX7, SHEX8
SHIN, SHOUT, SIN, SLEEP, SLOW_BUS, SNOOZE
SOUND, SOUND2, SQR, SSAVE, STEP, STOP, STR, STRN, STRING, STR$
STAMP_SIN, STAMP_COS, STAMP_SQR, SWAP, SYMBOL

T
TAN, THEN, TO, TOGGLE, TOLOWER, TOUPPER

U
UDATA, UNPLOT, UNTIL, UPPER
USB_CLASS_FILE, USB_DESCRIPTOR, USB_SHOW_ENUM, USBIN, USBINIT, USBOUT

V
VAL, VAR, VARIABLE

W
WAIT, WARNINGS, WATCHDOG, WEND, WHILE, WORD, WRITE, WSAVE

X
XIN, XOUT, XIN_TRANSLATE, XOUT_TRANSLATE, XTAL

7 may. 2010

ARREGLOS (ARRAYS)
El PROTON compiler SOPORTA variables de multiples elementos del tipo byte o word. Un arreglo es
un grupo de variables de el mismo tipo (8-bits 16-bits), que comparten el mismo nombre , pero coocadas
en celdas numeradas llamadas elementos.

Un arreglo se define usando las siguiente sintaxis:


DIM Nombre[ largo] AS BYTE
DIM Nombre[largo ] AS WORD
Nombre => cualquiera, excluyendo las palabras reservadas
largo => (0-255) para el tipo byte, (0-128) para el tipo word.
Ejemplo:
DIM MYARRAY[10] AS BYTE ' Crea un arreglo de 10 elementos del tipo byte.
DIM MYARRAY[10] AS WORD ' Creaun arreglo de 10 elementos del tipo word

Codigo Ejemplo:
DEVICE 16F84 '
DIM MYARRAY[10] AS BYTE ' Creaun arreglo de 10 elementos del tipo byte.
DIM INDEX AS BYTE ' Crea una variable normal del tipo BYTE.

FOR INDEX = 0 TO 9 ' Repite con INDEX= 0,1,2...9


MYARRAY[INDEX] = INDEX * 10 '
NEXT

FOR INDEX = 0 TO 9 ' Repite con INDEX= 0,1,2...9


PRINT AT 1 , 1 , DEC MYARRAY [INDEX] '
DELAYMS 500 'retardo de 500 ms
NEXT

STOP

9 may. 2010

CADENAS (STRINGS)
EL PROTON compiler soporta variables de cadena strings, solo cuando se trabaja con dispositivos
de 16-bit core.

La sintaxis para crear cadenas es el siguiente:


DIM Nombre as STRING * Largo
Nombre => cualquiera que no sea palabra reservada
largo = > entre 0-255, es el numero de caracteres que puedes almacenar la cadena.
La linea de abajo crea una cadena de nombre ST que puede almacenar 20 caracteres.
DIM ST as STRING * 20

Concatenacion
Dos o mas cadenas puedes ser concatenadas usando el operador mas (+) :
SOURCE_STRING1 = "HELLO
SOURCE_STRING2 = "WORLD" '
'Ambas cadenas son concatenadas en la cedana DEST_STRING
DEST_STRING= SOURCE_STRING1+ SOURCE_STRING2

Maniplular Cadenas por Partes


Cada posicion de una cadena puede ser accedido usando el mismo nombre de la cadena y con el uso
de los corchetes, ejemplo:
SOURCE_STRING[0] = "H"
Coloca el caracter "H" en la primera posicion, posicion cero de la cadena.

10 may. 2010

_ CARACTER DE CONTINUACION DE LINEA


Lineas que son muy largas para mostrar, pueden ser cotinuadas en la linea inferior por medio del uso
del caracter "_"; y este solo puede ser utilizado luego de un delimitador coma ","; por ejemplo :

VAR1 = LOOKUP VAR2,[1,2,3,_


4,5,6,7,8]

o tambien

PRINT AT 1,1,_
"HELLO WORLD",_
DEC VAR1,_

HEX VAR2

30 may. 2010

PROGRAMADOR PROTON (MICROCODE LOADER)


EL Cargador de microcodigo (Microcode Loader) permite programar el microcontrolador en su circuito
de aplicacion , a traves del puerto serial del PC; esta aplicacion esta presente en PROTON IDE.
Esto permite contar con la "progrmacion in circuit", y no tener que extraer el microcontrolador para
agragarle un codigo nuevo modificfado, dandole flexibilidad a su diseo.

Requisitos
Para su implementacion se necesita el uso del CI MAX232, en la siguiente configuracion:

Ademas se requiere grabarle el FIRMAWARE del microcontrolador, esto se hace una sola vez, y los
codigos se pueden econtrar dentro de la carpeta:

C:\Archivos de programa\Crownhill\ProtonIDELite\MCLoader

Los FIRWARE son especificos para cada microcontarolador y ademas dependiendo del oscilador a
utilizar (4 MHZ , 20 MHZ):
30 may. 2010

SEROUT
Sintaxis

SEROUT Tpin { \ Fpin } , Baudmode , { Pace, } { Timeout , Tlabel, } [ OutputData ]

Informacion General
Trasmite Datos seriales Asincronos (p.e. RS232 datos).

Vea Tambien:
Comunicacion Serial - SERIN

31 may. 2010

FOR....NEXT
Sintaxis

FOR Variable = ValorInicial TO ValorFinal [ STEP { Incremento } ]


{Instrucciones}
{Instrucciones}
{Instrucciones}
.
.
NEXT

Informacin general

El bucle for ...next, se utiliza para ejecutar una instruccin o una serie de declaraciones de una
determinada cantidad de veces.
Operadores
Variable - se refiere a una variable de ndice utilizado por el bucle. Esta variable de ndice en s puede ser
utilizado en el cuerpo del cdigo, pero tenga cuidado de alterar su valor dentro del bucle ya que esto puede
causar muchos problemas.
ValorInicial - es el valor de que se le asigna inicialmente al Operador Variable le. Este no tiene por qu ser
un nmero real - que podra ser el contenido de otra variable.
ValorFinal - es el valor del Operador Variable que genera la terminacion del bucle. Esto no tiene que ser un
nmero real - que podra ser el contenido de otra variable, o una expresin.
Incremento - es una constante o variable opcional por el que el operador Variable aumenta o disminuye
con cada viaje a travs del bucle FOR ... NEXT. Si se desea que Variable tome valores decrementales un
signo menos debe preceder a Incremento.
Ejemplo 1
' Muestra en un LCD y en formato decimal, todos los valores que la variable WRD
' toma en el bucle FOR...NEXT

' El bucle se realiza 1000 veces , ya que la variable WRD, inicia con el valor 0 y va uncrementando
' de 2 en dos hasta llegar a 2000 y sale del bucle.
DIM WRD as WORD
FOR WRD = 0 TO 2000 STEP 2
PRINT Dec WRD ," " ' Muestra el Valor de WRD en el LCD
NEXT
' cierre del bucle
Ejemplo 2
' Muestra en Decimal los vallores de WRD
' en este ejemplo el bucle se realiza 1000 veces ya que la variable WRD inicial con el valor
' 2000 y va decrementando de 2 en 2 hasta llegar a cero para finalizar el bucle.

DIM WRD as WORD

FOR WRD = 2000 TO 0 STEP -2 '


PRINT Dec WRD ," " '
' muetra la variable WRD en el LCD en formato decimal
NEXT '
cierre del bucle for..next

31 may. 2010

ADIN (LEER ADC)


ADIN
Sintaxis
Variable = ADIN nmero de canal
Informacin general
Lee el valor del convertidor analogico a digital del microcontrolador.
Operadores
Variable - una variable definida por el usuario de tipo bit, byte, byte_array, palabra, word_array, dword, o
flotar.
nmero del canal - una constante, variable o expresin. (0,1,2,3,4,5,.....)

Ejemplo
'Lee el valor desde el canal 0 del ADC y el lugar en la variable VAR1.
DECLARE ADIN_RES 10 'resultado de 10-bit requiere
RC DECLARE ADIN_TAD FRC 'OSC elegido
DECLARE ADIN_STIME 50 'Permitir 50us muestra de tiempo
DIM VAR1 como WORD
TRISA =% 00000001 'Configurar An0 (PORTA.0) como una variable
ADCON1 =% 10000000 'entrada analgica Ubicado en PORTA.0
VAR1 = 0 ADIN 'coloca la conversin en la variable VAR1

Declaraciones

Hay tres directivas de declarar para el uso con ADIN. Estos son: -

DECLARE ADIN_RES 8, 10 o 12

Establece el nmero de bits en el resultado. Si no se utiliza esta declaracion, el valor por defecto es la
resolucin maxima del tipo utilizado PICmicro.

DECLARE ADIN_TAD 2_FOSC, 8_FOSC, 32_FOSC, o FRC.


Fuente de reloj Establecida para el ADC. Todos los PICmicros compatibles tienen cuatro opciones para
la fuente de reloj utilizado por el ADC. 2_FOSC, 8_FOSC y 32_FOSC,son proporcionados por oscilador
externo, mientras que la CRF es el oscilador interno de RC del PICmicro. En lugar de utilizar los nombres
predefinidos de la fuente de reloj, los valores de 0 a 3 puede ser utilizado. Estos reflejan la configuracin de
bits 0-1 en ADCON0 registro.
Se debe tener cuidado al emitir esta declaracion, un tipo equivocado de fuente de reloj puede resultar
en baja resolucin, o ninguna conversin. CRF es la configuracin predeterminada si no se realiza esta
declaracion.

DECLARE ADIN_STIME 0 a 65535 microsegundos (nosotros).


Permite a los condensadores internos que se cargue ncompletamente antes que se tome una muestra.
Esto puede ser un valor de 0 a 65535 microsegundos (us). Un valor demasiado pequeo puede resultar en
una reduccin de la resolucin. Mientras que un valor demasiado elevado se traducir en una velocidad de
conversin pobre sin ningn tipo de resolucin extra alcanzado.
Un valor tpico para ADIN_STIME es de 50 a 100. Esto permite que un tiempo de carga adecuada, sin
perder demasiada velocidad de conversin. Pero la xperimentacin producir el valor correcto para su
requerimiento particular. El valor por defecto si no se utiliza esta declaracion es de 50.
Notas
Antes de que el comando ADIN puede ser utilizado, el registro TRIS deben ser manipulados
apropiadamente para que el pin deseado sea una entrada. Adems, el registro ADCON1 debe definirse en
funcin al PIN que se requiere como una entrada analgica, y en algunos casos, para configurar el formato
del resultado de la conversin. Vea las numerosas fichas tcnicas de Microchip para obtener ms
informacin sobre estos registros y cmo configurarlo correctamente para el dispositivo especfico usado.
Si varias conversiones se estn aplicando a continuacin, se debe utilizar un pequeo retraso despus
del comando ADIN. Esto permite que los condensadores internos de la ADC puedan cargarser
ntegramente: Ejemplo:
inicio:
VAR1 = ADIN 3 'Coloca la conversin en la variable VAR1

Espere DELAYUS 1 'para 1us

GOTO inicio 'Leer el ADC para siempre

31 may. 2010

LCD ALFANUMERICA

CONEXION PREDETERMINADA DEL LCD CON PROTON

PRINT
La instruccion utilzada para el manejo de una pantalla LCD alfanumerica es PRINT y se usa segun la
siguiente sintaxis:
PRINT AT posicion_Y, posision_X, expresion1, expresion2,expresion3,....,
posicion_Y => corresponde a la linea donde se escribira
posicion_X => corresponde a la columna
Luego de esto los datos a escribir separados por comas, estos pueden ser valores o expresiones
matematicas, boleanas, y cadenas de texto.
Las cadena de texto deben ser encerradas entre comillas, por ejemplo:
PRINT AT 1,1, "HOLA MUNDO"
PRINT AT 1,1 "HOLA"," ", "MUNDO"
Tambien existen una serie de modificadores que permiten dar formato a los valores numericos que se
desean visuaizar, son las siguientes:
BIN
=> Binario
DEC
=> Decimal
HEX
=> Hexadecimal
SBIN
=> Binario con signo
SDEC
=> Decimal con signo
SHEX
=> Hexadecimal con signo
IBIN
=> Binario con el caracter % al inicio
IDEC
=> Decimal con el caracter # al inicio
IHEX
=> Hexadecimal con el caracter $ al inicio
ISBIN => Binario con signo y con el caracter % al inicio
ISDEC => Decimal con signo y con el caracter # al inicio
ISHEX => Hexadecimal consigno y con el caracter $ al inicio
REP c\n = > Envia un caracter c, n veces
STR array\n = > envia una parte de un arreglo

CSTR cdata 0 => envia una cadena definida en la instruccion cdata.


Cuando utilizamos DEC, HEX O BIN, se puede determinar el numerpo de caracteres deseados
colocandole un numero, si quisieramos 2 decimales seria, DEC2, cuatro decimales DEC4, si se omite este
numero y simplemente se coloxca DEC, el po defecto es 3 decimales.
Ejemplo 1:
DIM VAR1 AS BYTE
VAR1 = 15

PRINT AT 1,1, "HOLA MUNDO"


PRINT AT 2,1, DEC VAR1
PRINT AT 2,1, DEC4 VAR1

'Muestra "HOLA MUNDO"


'Muestra 15
'Muestra 0015

PRINT AT 3,1, "VAR1 HEX = " , HEX VAR1 ' Muestra "VAR1 HEX = F"
PRINT AT 4,1, "VAR1 BIN = " , BIN VAR1 ' Muestra "VAR1 BIN = 1111"
PRINT AT 6,1 ,"VAR1 HEX= " , HEX4 VAR1 ' Muestra "VAR1 HEX= 000F"
Si es una variable punto flotante la que se quiere visualizar, el digito que se le agrega a DEC, determina
el numero de digitos despues del punto decimal, por ejemplo:
DIM FLT_VAR AS FLOAT
FLT_VAR = 3.145
PRINT DEC2 FLT_VAR
PRINT DEC4 FLT _VAR
PRINT DEC1 FLT_VAR

' Muestra 3,14


' Muestra 3,1400
' Muestra 3,1

DECLARACIONES ASOCIADAS AL LCD


Existen seis declaraciones para ser usadas con el LCD alfanumerico y la instruccion PRINT, y son :
DECLARE LCD_TYPE 1 or 0 , GRAPHIC or ALPHA
Informa al compilador el tipo de LCD que se direccionara a traves de la instruccion PRINT, 1 es para
Grafica y 0 para Alfanumerica, si esta declaracion no es usada, la configuracion por defecto es del tipo
Alfanumerico.

DECLARE LCD_INTERFACE 4 or 8

Informa al compilador cuantas lineas de datos seran usadas para el manejo del LCD, ocho o cuatro lineas.

DECLARE LCD_DTPIN PORT . PIN


Asigna el puerto a ser usado por las lineas de datos del LCD, esta puede ser conectada usando 8 lineas
de datos cuatro lineas de datos, si se utilizan solo cuatro lineas, estas deben ser conectadas a los cuatro
pines mas sgnificativos, o los cuatro menos significaivos, y esto puede ser configurado de la manera
siguiente:

DECLARE LCD_DTPIN PORTB.0

' Usado para interface de cuatro lineas y deben ser conectadas desde RB0 hasta RB7
DECLARE LCD_DTPIN PORTB.4
' Usado para interface de cuatro lineas y deben ser conectadas desde RB4 hasta RB7
Si esta declaracion no es utilizada la configuracion por defecto es PORTB.4.

DECLARE LCD_LINES 1 , 2 , or 4

Informa al compilador el numero de lineas del LCD.


Las LCDs alfanumericas vienen en un rango de medidas dadas por el numero de filas y columnas, el tipo
mas popular es el de 16 columnas por dos fila (16X2), aunque tamebien las de 16X4. Si esta declaracion no
es usada la configuracion por defecto es de 2 lineas.

Recomiendo en todo programa no obviar las declaraciones aunque se desee utilizar la configuiracion
por defecto, el formato del codigo del programa lo desarrollo asi:

CODIGO DE EJEMPLO:
Device 16f877
XTAL 4
PORTB_PULLUPS = TRUE
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Configuracion del LCD'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
DECLARE LCD_TYPE 0 ' LCD alfanumerica
DECLARE LCD_INTERFACE 4 ' 4 lineas de datos
DECLARE LCD_DTPIN PORTB.4 ' lineas de datos al PORTB RB4->RB7
DECLARE LCD_ENPIN PORTB.2 ' EN al pin RB2
DECLARE LCD_RSPIN PORTB.3 ' RS al pin RB3
DECLARE LCD_LINES 4 ' LCD de cuatro lineas
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Inicio:

' Etiqueta

print at 1,1, "Linea 1"


print at 6,1, "Linea 6"
Fin:

' Etiqueta

31 may. 2010

IF... THEN ... ELSE


Sintaxis
Caso 1

IF Comparacion THEN
Instrucciones1
END IF
Caso 2
IF Comparacion THEN
Instrucciones2
ELSE
Instrucciones3
END IF
Caso 3
IF Comparacion THEN
Instrucciones4
ELSEIF Comparacion THEN
Instrucciones5
ELSE
Instrucciones6
ENDIF
Informacion General
Primer Caso : Evala la comparacin que sigue al IF, si se cumple el o los criterios, se ejecutan las
instrucciones1. Si la comparacin no se cumple la instruccin se ignora

Segundo Caso: Evala la comparacin que sigue al IF, si se cumple el o los criterios, se ejecutan
unicamente las instrucciones2; si la comparacin no se cumple la instruccines2 se ignoran,y se pasa a
verificar la comparacion que le sigue al ELSE, si se cumple el o los criterios, se ejecutan unicamente las
instrucciones3; si la comparacin no se cumple la instruccines3 se ignoran.

Tercer caso: Evala la comparacin que sigue al IF, si se cumple el o los criterios, se ejecutan unicamente
las instrucciones4; si la comparacin no se cumple la instruccines4 se ignoran,y se pasa a verificar la
comparacion que le sigue al ELSEIF, si se cumple el o los criterios, se ejecutan unicamente las
instrucciones5; si la comparacin no se cumple la instruccines5 se ignoran, y se pasa a verificar la
comparacion que le sigue al ELSE, si se cumple el o los criterios, se ejecutan unicamente las
instrucciones6; si la comparacin no se cumple la instruccines6 se ignoran.

Ejemplo 1
SYMBOL LED = PORTB.4
VAR1 = 3
LOW LED

IF VAR1 > 4 THEN


HIGH LED
DELAYMS 500
LOW LED

END IF
En el ejemplo anterior, VAR1 no es superior a 4, en consecuencia, el creiterio no se cumple, por lo que
las instrucciones HIGH LED, DELAYMS 500 y LOW LED, nunca se ejecutan. Sin embargo, si cambiamos
el valor de la variable VAR1 a 5, a continuacin, el LED se encender durante 500 ms y luego se apaga,
porque VAR1 es ahora mayor que 4, por lo que cumple los criterios de comparacin.

Ejemplo 2

IF X & 1 = 0 THEN
A=0
B=1
ELSE
A=1
ENDIF

Ejemplo 3
IF X = 10 THEN
HIGH LED1
ELSEIF X = 20 THEN
HIGH LED2
ELSE
HIGH LED3
ENDIF

; Si X es igual a 10, enciende LED1 unicamente, SINO SI X es igual a 20, enciende LED2 unicamente,
SINO se cumple ninguna de la anteriores entonces se enciende LED3 unicamente.

Ejemplo 4

IF X >10 AND X<50 THEN


HIGH LED1
ENDIF
; Enciende el LED1 solo si X es mayor a 10 y X es menor a 50.
Las comparaciones se pueden plantear de manera organizada con el uso de los parentesis, por ejemplo:
IF ( (X>10 AND X<50) Or (X>80 AND X<100) ) THEN
HIGH LED1
END IF
;En este Enciende el LED1 solo si X es mayor a 10 y X es menor a 50, si X es mayor a 80 y X es menor a
100.

31 may. 2010

COMUNICACION SERIAL SERIN

Una de las formas ms populares de la comunicacin entre dispositivos electrnicos es la


comunicacin serial. Hay dos tipos principales de comunicacin serial; sncrona y asncrona. El HRSin,
HRSOut, HSerIn, HSerOut, RSin, RSOut, Sern y comandos SerOut se usan para enviar y recibir datos en
serie asncronos. Mientras los comandosSHIn y SHOut son para uso exclusivo de comunicacin sncrona.

El trmino asincrnico significa "sin ver el reloj" . De una manera mas especifica, "en la comunicacin
serial asincrona lo datos son transmitidos y recibidos sin el uso de un reloj. Los datos pueden ser enviados
usando tan slo dos cables, uno para datos y otra para tierra. Los puertos serie del PC (tambin llamados
puertos COM o RS232) utilizan la comunicacin serial asncrona. Nota: el otro tipo de comunicacin serial,
sncrona, utiliza por lo menos tres cables, uno para el reloj, una para datos y otra para tierra.

El RS232 es la especificacin elctrica para las seales que usa el puerto serie del PC. A diferencia de
las lgicas TTL, donde 5 voltios es un 1 lgico y 0 voltios es la lgica 0, RS232 utiliza -12 voltios para la
lgica 1 y +12 voltios para la lgica 0. Esta especificacin permite comunicacin a travs de longitudes de
cable ms largo sin amplificacin. La mayora de los circuitos que trabajan con RS232 utiliza un controlador
de lnea /receptor (transceptor), o adaptador de niveles. Este componente hace dos cosas: -

1.
Convierte los 12 voltios de RS-232 a TTL compatible 0 a 5 voltios niveles.
2.
Invierte los niveles de tensin, de modo que la lgica de 5 voltios = 1 y 0 voltios lgica = 0.
Debido a las capacidades de E/S, excelente para la gama de dispositivos PICmicro, y la adopcin de
niveles TTL en la mayora de los puertos serie de los PC modernos, un conductor de lnea es a menudo
innecesaria a menos que las largas distancias estn involucrados entre el transmisor y el receptor. En su
lugar una simple resistencia de limitacin de corriente es todo lo que se requiere.
Usted debe recordar que cuando se utiliza un circuito adpatador de niveles transmisor-receptor, tal
como el MAX232, la polaridad del modo serial se invierte en el proceso de convertir los niveles de seal, sin
embargo, si se utiliza la conexin directa, el modo es virgen. Esta es la causa ms comn de errores al
conectar dispositivos en serie, por lo tanto usted debe hacer provisiones por este dentro de su software.

La comunicacin asncrona en serie se basa en la sincronizacin exacta. Tanto el emisor como el


receptor deben ajustarse para medir el tiempo idntico, lo que comnmente se expresa en bits por segundo
(bps) llamada baudios.Sern requiere un valor llamado Baudmode que informa de las caractersticas
relevantes de los datos en serie que se reciben, el perodo de bit, el nmero de datos , el bit de paridad, y
la polaridad.

El argumento de Sern Baudmode acepta un valor de 16-bit que determina sus caractersticas: 1-bit
de parada, los bits 8-datos / sin paridad o bits de datos 7-/ paridad par- y prcticamente cualquier velocidad
a partir de tan 300 baudios a una mayor de 38K baudios (dependiendo de la frecuencia del cristal utilizado).
La lista a continuacin muestra cmo se calcula Baudmode, consulte el manual para
algunos baudmodes norma comn para velocidades de serie.

Si las comunicaciones son con software o hardware existente, su velocidad y modo determinar la
eleccin de la velocidad de transmisin y el modo. En general, 7-bit /paridad-par (7E) se utiliza el modo de
texto, y 8-bit/no-parity (8N) para los datos orentados a byte. Nota: el modo ms comn es 8-bit/sin-paridad,
incluso cuando los datos transmitidos es slo texto. La mayora de los dispositivos que utilizan un modo de
7-bit de datos, lo hacen para aprovechar la funcin de la paridad. La paridad puede detectar algunos errores
de comunicacin, sino que en su uso se pierde un bit de datos. Esto significa que los datos de entrada de

bytes transferidosen el modo 7E (paridad-par) slo puede representar valores de 0 a 127, en vez de la 0 a
la 255 del 8N (sin paridad) de modo.

Los comandos seriales del compilador "Sern" y "SerOut", todavia tienen la opcin de utilizar un bit
de paridad con desde 4 hasta 8 bit de datos. Esto es mediante el uso de las declaraciones: -

Con la paridad desactivada: -

DECLARE SERIAL_DATA 4 ' Configura SERIN y SEROUT para 4 bit de datos


DECLARE SERIAL_DATA 5 'Configura SERIN y SEROUT para 5 bit de datos
DECLARE SERIAL_DATA 6 ' Configura SERIN y SEROUT para 6 bit de datos
DECLARE SERIAL_DATA 7 ' Configura SERIN y SEROUT para 7 bit de datos
DECLARE SERIAL_DATA 8 ' Configura SERIN y SEROUT para 8 bit de datos (POR DEFECTO)

Con paridad Activada: -

DECLARE SERIAL_DATA 5 ' Configura SERIN y SEROUT para 4 bit de datos


DECLARE SERIAL_DATA 6 ' Configura SERIN y SEROUT para 5 bit de datos
DECLARE SERIAL_DATA 7 ' Configura SERIN y SEROUT para 6 bit de datos
DECLARE SERIAL_DATA 8 ' Configura SERIN y SEROUT para 7 bit de datos (POR DEFECTO)
DECLARE SERIAL_DATA 9 ' Configura SERIN y SEROUT para 8 bit de datos

Los bit de datos de la declaracion SERIAL_DATA puede variar de 4 a 8 bits (el valor predeterminado si
no se declara es el POR DEFECTO). La Habilitacin de paridad utiliza uno de los nmero de bits
especificado.

DECLARE SERIAL_PARITY ODD o EVEN

Establece el tipo de paridad de Sern y SerOut. Si la paridad es permitidA pero el DECLARE


SERIAL_PARITY no se emite en el programa, la configuracin predeterminada es paridad par.

DECLARE SERIAL_PARITY = EVEN 'si se desea paridad par


DECLARE SERIAL_PARITY = ODD 'si se desea paridad impar

DECLARE SERIAL_DATA 9 : Permite 8 bits de datos, junto con un noveno bit de paridad.

La paridad es una caracterstica simple de comprobacin de errores. Cuando un remitente de datos


serie est previsto para paridad par (el modo compatible con el compilador), este cuenta el nmero de unos
en el byte de salida y utiliza el bit de paridad para hacer este numero de unos sea par. Por ejemplo, si se
est enviando el valor de 7-bit: "0011010", establece el bit de paridad de 1 a fin de hacer un nmero par de
unos (cuatro), es decir, como el datos tiene tres unos, el bit de paridad se hace uno para dar cuatro unos.

El receptor cuenta tambin con los bits de datos para calcular lo que el bit de paridad debe ser. Si
coincide con el bit de paridad, el receptor serial supone que los datos se recibieron correctamente. Por
supuesto, esto no es necesariamente cierto, ya que dos bits de forma incorrecta podran hacer parecer
correcto la recepcion, o el bit de paridad en s mismo podra ser malo cuando el resto de los datos es
correcta.

Muchos sistemas funcionan exclusivamente con el uso de texto de 7-bit / modo de paridad-par. Por
ejemplo, para recibir un byte de datos a travs de bits de PORTA-0 a 9600 baudios, 7E, invertido:

SERIN PORTA.0, 24660, [SerData]

En el ejemplo anterior funcionar correctamente, sin embargo, no informa al programa qu hacer en


caso de un error de paridad. A continuacin, es una versin mejorada que utiliza el argumento opcional que
proporciona una etiqueta que a la cual se direccionara en caso de que se produzca un error de paridad en la
recepcion:

SERIN PORTA.0, 24660, P_ERROR, [SerData]


PRINT @SerData
STOP

P_ERROR:
PRINT "Error de paridad"

Si coincide con la paridad, el programa contina en la instruccin de PRINT despus de SERIN. Si la


paridad no coincide, el programa salta a la etiqueta P_ERROR. Tenga en cuenta que un error de paridad
tiene prioridad sobre otras especificaciones InputData (tan pronto como se detecta un error, Sern aborta y
salta a la rutina Plabel).

En los ejemplos anteriores, la nica manera de poner fin a la instruccin de Sern (que no sea reiniciar
o de apagado) es dar a Serin los datos en serie que necesita. Si no hay datos de serie recibidos, el

programa se queda atascado en un bucle sin fin. Sin embargo, se puede forzar a Serin a abortar si no recibe
datos en un nmero especificado de milisegundos. Por ejemplo, para recibir un valor a travs de PORTA-0 a
9600 baudios, 8N, invertido y Sern abortar despus de 2 segundos (2000 ms) si no llegan datos: -

SERIN PORTA.0 , 16468 , 2000 , TO_ERROR , [SerData]


PRINT CLS , @Result
STOP

TO_ERROR:
PRINT CLS , "Timed Out"

Si no se reciben datos serie en 2 segundos, Sern aborta y salta hasta la etiqueta TO_ERROR. Ambos
argumentos, de Espera y de la Paridad se pueden combinar. A continuacin se muestra un ejemplo para
recibir un de valor a travs de PORTA-0 a 2400 baudios, 7E, invertida con un tiempo de espera de 10
segundos:

DIM SerData AS BYTE

Again:
SERIN PORTA.0 , 24660 , P_ERROR , 10000 , TO_ERROR , [SerData]
PRINT CLS , @SerData

GOTO Again

TO_ERROR:
PRINT CLS , "Timed Out"
GOTO Again

P_ERROR:
PRINT CLS , "Parity Error"
GOTO Again

Al disear una aplicacin que requiere la comunicacin serie entre PICmicros, usted debe recordar a
trabajar dentro de estos lmites: -

1. Cuando el PICmicro est enviando o recibiendo datos, no puede ejecutar otras instrucciones.
2. Cuando el PICmicro est ejecutando otras instrucciones, no se puede enviar o recibir datos.

3. El compilador no ofrece un buffer de orden que hay en un PC. A bajas frecuencias del cristal oscilador, y
las mayores tasas de datos serie, el PICmicro no puede recibir datos a travs de Sern, procesarlo, y
ejecutar otro Sern a tiempo para tomar la siguiente parte de los datos, a menos que existan importantes
pausas entre las transmisiones de datos.

SERIN Modificadores

Como ya sabemos, Serin va a esperar y recibir un solo byte de datos, y almacenarlo en una variable.
Si el PICmicro esta conectado a un PC que ejecuta un programa de terminal y el usuario pulsa la tecla "A"
en el teclado, despus de ejecutado el comando Serin, la variable contendra el valor 65, que es el cdigo
ASCII de la letra "A".

Qu pasara si el usuario pulsa la tecla "1"? El resultado sera que la variable que contendr el valor
49 (el cdigo ASCII para el caracter "1"). Este es un punto importante a recordar: cada vez que se pulsa una
letra en el teclado, el ordenador recibe el valor ASCII de ese carcter. Corresponde a la parte receptora de
interpretar los valores segn sea necesario. En este caso, tal vez en realidad quera que la variable
terminara con el valor 1, en lugar del cdigo ASCII 49. El comando Serin proporciona un modificador, el
modificador llamado decimal, que interpretar esto para nosotros. Mira el siguiente cdigo: -

DIM SERDATA AS BYTE


SERIN PORTA.1, 16780, [DEC SERDATA]

Observe el modificador de decimales en el comando SERIN que aparece justo a la izquierda de la


variable SERDATA. Esto le dice a Sern para convertir texto entrantes representar los nmeros decimales en
forma decimal verdadera y guardar el resultado en SERDATA. Si el usuario que ejecuta el software de
terminal pulsa el "1", "2" y luego "3" claves seguido de un espacio u otro texto no numrico, el valor 123 se
almacenar en la variable SERDATA, permitiendo que el resto del programa para realizar cualquier
operacin sobre la variable numrica.

Sin el modificador decimales, sin embargo, habra sido obligado a recibir cada personaje ("1", "2" y "3")
por separado, y an as tendra que hacer alguna conversin manual para llegar al nmero 123 (cien
veintitrs) antes de poder hacer los clculos que desee sobre el mismo.

El modificador decimal est diseado para buscar texto que representa los nmeros decimales. Los
caracteres que representan nmeros decimales son los caracteres "0" a "9". Una vez que el comando Serin
se le pide que utilice el modificador decimal de una variable en particular, sigue de cerca los datos serie
entrantes, buscando el primer carcter decimal. Una vez que encuentra el carcter primera cifra decimal,
seguir buscando ms (la acumulacin de todo el nmero de varios dgitos) hasta que se encuentra un
carcter numrico no decimales. Recuerde que no terminar hasta que encuentra al menos un carcter
decimal seguido por al menos un carcter no decimales. Para ilustrar esto an ms, examine los siguientes
ejemplos (suponiendo que estamos usando el ejemplo de cdigo igual al anterior): -

Entrada serial : "ABC"

Resultado: El programa se detiene en el smbolo del Sern, continua en espera para el texto decimal.

Entrada Serial : "123" (sin caracteres siguientes ella)

Resultado: El programa se detiene en el smbolo del Sern. Se reconoce los caracteres "1", "2" y "3" como el
nmero ciento veintitrs, pero como no no hay datos siguientes al "3", espera de forma continua, ya que no
hay manera de saber si 123 es el nmero entero o no.

Entrada serial : "123 " (seguido por un carcter de espacio)

Resultados: Al igual que el ejemplo anterior, excepto una vez que el carcter de espacio se recibe, el
programa sabe el nmero completo es 123, y almacena este valor en SERDATA. El comando Serin luego
termina, permitiendo a la siguiente lnea de cdigo se ejecute.

Entrada serial: "123A"

Resultados: Igual que el ejemplo de arriba. La "A" carcter, como el carcter de espacio, es el primer texto
no decimales despus del nmero 123, que indica al programa que ha recibido todo el nmero.

Entrada Serial: "ABCD123EFGH"

Resultados: Al igual que los ejemplos anteriores. Los caracteres "ABCD" se pasan por alto (ya que no son
decimales, los caracteres 123 son evaluados para ser el nmero 123 y el siguiente carcter, "E", indica al
programa que ha recibido todo el nmero.

El resultado final del modificador de DEC est limitado a 16 bits (hasta el valor de 65535). Si un valor
mayor que este valor recibido por el modificador de decimales, el resultado final ser incorrecto porque el
resultado se extiende el plazo del valor mximo de 16-bit. Por lo tanto, los modificadores de Sern no puede
(en este momento) se utiliza para cargar DWORD (32 bits) variables.

El modificador DEC es slo uno de una familia de modificadores de conversin disponibles con Serin
Ms abajo encontrar una lista de modificadores de conversin disponibles. Todos los modificadores de la
conversin de trabajan similar al modificador decimal (como se describi anteriormente). Los modificadores
de recibir bytes de datos, a la espera para el primer byte que est comprendida en el rango de caracteres
que aceptan (por ejemplo, "0" o "1" para binario, "0" a "9" para decimal, "0" a "9 "y" A "a" F "para
hexadecimal. Una vez que reciben un carcter numrico, siguen aceptando la entrada hasta que un carcter
no numrico llega, o en el caso de los modificadores de longitud fija, hasta que el nmero mximo de dgitos
especificados es recibido.

Aunque es muy eficaz en el filtrado y conversin de texto de entrada, los modificadores no son
totalmente infalibles. Como se mencion anteriormente, los modificadores conversin podrian seguir
aceptando texto, hasta que el primer texto no numrico llege, incluso si el valor resultante supere el tamao

de la variable.Usted puede controlar esto hasta cierto punto mediante el uso de un modificador que
especifica el nmero de dgitos, como DEC2, que aceptara los nicos valores en el rango de 0 a 99.

Los caracteres de conversin de tipos de modificadores numricos Nmero aceptadas

DEC (1 .. 5) decimal, opcionalmente limitada del 0 al 9 de 1 a 5 dgitos


HEX (1 .. 4) Hexadecimal, opcionalmente limitada del 0 al 9, de 1 a 4 dgitos de la A a F
BIN (1 .. 16) binario, opcionalmente limitada 0 y 1 de 1 a 16 dgitos

Una variable precedida por BIN va a recibir la representacin ASCII de su valor binario.

Por ejemplo, si se especifica BIN VAR1 y "1000" se recibe, VAR1 se establecer en 8.

Una variable precedida de SWX recibir la representacin ASCII de su valor decimal.

Por ejemplo, si se especifica DEX VAR1 y "123" es recibido, VAR1 se establecer en 123.

Una variable precedida por HEX recibir la representacin ASCII de su valor hexadecimal.

Por ejemplo, si se especifica HEX VAR1 y "FE" se recibe, VAR1 se establecer en 254.

El comando Serin se puede configurar para esperar a una secuencia de caracteres antes de que se
recuva cualquier entrada adicional. Por ejemplo, supongamos que un dispositivo conectado al PICmicro
envia muchas secuencias diferentes de datos, pero los nicos datos que desea observar sean solo justo
despus de los caracteres nicos, "XYZ". El modificador WAIT puede ser utilizado para este propsito: -

SERIN PORTA.0, 16468, [WAIT ("XYZ"), SERDATA]

El cdigo de arriba espera a que los caracteres "X", "S" y "Z" sean recibidos, en ese orden, entonces
recibe el byte de datos que viene y lo coloca en la variable SERDATA.

STR Modificador

El compilador tambin tiene un modificador para el manejo de una cadena de caracteres,


denominado STR. El modificador STR se utiliza para recibir una cadena de caracteres en una variable de
matriz de bytes.

Una cadena es un conjunto de caracteres que se disponen o acceden en un cierto orden. Los
caracteres "ABC" se almacena en una cadena con la "A", seguido por el "B" y luego seguido por el "C". Una
matriz de bytes es un concepto similar al de una cadena, sino que contiene datos que se disponen en un
orden determinado. Cada uno de los elementos de una matriz es del mismo tamao. La cadena "ABC" se
almacenara en una matriz de bytes que contiene tres bytes (elementos). A continuacin se muestra un
ejemplo que recibe diez bytes a travs de bits de PORTA-0 a 9600 bps, N81/inverted, y los almacena en la
matriz de 10 bytes, SERSTRING: -

DIM SerString [10] AS BYTE

'Crear una matriz de 10 bytes.

SERIN PORTA.0, 16468, Relleno [STR SerString] 'la matriz con los datos recibidos.
PRINT SerString

'Mostrar la cadena.

Si la cantidad de caracteres recibidos no es suficiente para llenar toda la matriz, a continuacin, un


formateador puede ser colocado despus del nombre de la matriz, que slo recibir caracteres hasta la
longitud especificada. Por ejemplo: -

DIM SerString [10] AS BYTE 'Crear una matriz de 10 bytes.


SERIN PORTA.0, 16468, [STR SerString \ 5] 'Rellenar los primeros 5 bytes de la matriz
PRINT STR SerString \ 5 'Mostrar la cadena de 5 caracteres.

El ejemplo anterior ilustra cmo llenar slo los primeros n bytes de una matriz y, a continuacin, cmo
mostrar slo los primeros n bytes de la matriz. n se refiere al valor que se da despus de la barra invertida.

Consideraciones Generales

Preste atencin a cableado

Tome ms tiempo para estudiar y verificar los diagramas de cableado de comunicacin serial. Un error
en el cableado puede causar problemas en la comunicacin, o la no comunicacin. Asegrese de conectar
las clavijas de tierra (Vss) entre los dispositivos que se comunican en serie.

Compruebe configuracin de puerto en el PC y en los comandos de la serie

Una configuracin desigual entre el emisor y el receptor har que las transferencias de datos sean
ilegibles o no exista transferencias de datos.

Recuerde siempre que un transmisor-receptor de lnea invierte la polaridad de serie. Si los datos
recibidos de serie no se puede leer, lo ms probable es causado por un error de velocidad de transmisin ,
error de posicin, o un error de polaridad. Si recibe datos de otro dispositivo que no es un PICmicro, trate de

usar velocidades de transferencia de 9600 y por debajo, o como alternativa, utilize un cristal de frecuencia
ms alta. Debido a los gastos generales adicionales en el PICmicro, y el hecho de que el comando Serin no
ofrece algn tipo de bufer de hardware de recepcin para la comunicacin serial, po rl oque
recepciones consecuentes, pueden ser perdidas o ilegibles. Si esto ocurre, intente reducir la velocidad de
transmisin, o aumentar la frecuencia del cristal. Uso de variables simples (no matrices) tambin aumentar
la probabilidad de que el PICmicro recibir los datos correctamente.

Vea Tambien:
SEROUT

HARDWARD

Si deseamos conectar el micro al PC, debemos utilizar un circuito adaptador como el MAX232; en la
figura se muestran conectados los pines, 8 y 9, los cuales son opcionales en caso de que se quiera
programar el micro con el Microcode Loader de Proton.
Si queremos comunicar dos micros que estan en el mismo PCB, no hace falta utilizar este circuito, mas
bien si, cuando estos estan conectados en PCB distintas y a distancias considerables.

31 may. 2010

WHILE.....WEND

HACER MIENTRAS
Sintaxis
WHILE Condicion
Instrucciones
..
..
Instrucciones

WEND

Informacio General
Ejecuta un bloque de instrucciones mientras una condicion sea cierta
Ejemplo :
VAR1 = 1

WHILE VAR1 <= 10

; Ejecuta las instrucciones del bucle mientras


; VAR1 sea igual o menor a 10

PRINT @VAR1 , " "


VAR1 = VAR1 + 1
WEND

19 sept. 2010

OPERADORES RELACIONALES
Los operadores relacionales se utilizan para comparar dos valores, como se muestra en la siguiente
lista. El resultado puede ser utilizado para tomar una decisin sobre el flujo del programa.
Relacin

Operador

Expresin

Igualdad

X=Y

Desigualdad

<>

X<>Y

Menor que

<

X <Y

Mayor que

>

X> Y

Menor o igual

<=

X <= Y

Mayor o igual

>=

X >= Y

19 sept. 2010

MATEMATICA DE PUNTO FLOTANTE


El compilador PROTON puede realizar calculos de Punto Flotante (32 x 32 bits IEEE 754).

Declarar una variable como FLOAT permitir los clculos de punto flotante con esa variable.
La declaracion de una variable Punto Flotante se efectua de la siuiente manera;
DIM VAR_FLT AS FLOAT
La declaracion de una Constante de Punto Flotante se efectua de la siuiente manera;

SMBOLO PI = 3,14
SMBOLO FL_NUM = 5,0
La aritmtica de punto flotante no es lo mximo en exactitud, es simplemente una forma de comprimir
un valor complejo o grande en un espacio pequeo (4 bytes en el caso del compilador). Resultados
perfectamente adecuados por lo general se puede obtener de la escala correcta de variables de tipo entero,
con un aumento en la velocidad y un ahorro de memoria RAM y el espacio de cdigo. 32 bits de
matemticas de punto flotante es muy intensa ya que el microcontrolador PICmicro es slo un procesador
de 8 bits. Tambin consume grandes cantidades de memoria RAM y espacio de los cdigos para su
funcionamiento, por lo tanto use siempre el punto flotante con moderacin, y slo cuando sea estrictamente
necesario. El punto flotante no est disponible en PICmicros ncleo de 12-bit debido a las restricciones de
memoria, y es ms eficiente cuando se utiliza con los dispositivos bsicos de 16-bit debido al cdigo ms
lineal y especificaciones de RAM.
Formato de punto flotante

El compilador PROTON utiliza la variacin del microchip del formato IEEE 754 de punto flotante. Las
diferencias con la norma IEEE 745 son menores, y bien documentado en la nota de aplicacin AN575 de
Microchip (descargable en www.microchip.com).

Nmeros de punto flotante se representan en formato modificado IEEE-754. Este formato permite que
a las rutinas de punto flotante aprovechar la arquitectura del PICmicro y reducir la cantidad de sobrecarga
requerida en los clculos. La representacin se muestra a continuacin en comparacin con las normas del
formato IEEE-754: donde s es el bit del signo, y es el LSB del exponente y x es un marcador de posicin
para la mantisa y exponente bits.

Los dos formatos se pueden convertir fcilmente de una a la otra por la manipulacin del exponente y la
mantisa 0 bytes. El cdigo de ensamblador siguiente se muestra un ejemplo de esta operacin.

Formato

Exponente

Mantisa 0

Mantisa 1

Mantisa 2

IEEE-754

sxxx xxxx

xxxx xxxx

xxxx yxxx

xxxx xxxx

Microchip

xxxx xxxx

xxxx xxxy

sxxx xxxx

xxxx xxxx

IEEE-754 PARA MICROCHIP

RLF MANTISSA0
RLF exponente
RRF MANTISSA0

MICROCHIP PARA IEEE-754


RLF MANTISSA0
RRF exponente
RRF MANTISSA0
Las variables utilizadas por las Bibliotecas de punto flotante
Varios registros de 8-bit de RAM son utilizados por las rutinas matemticas para mantener los
operandos y resultados de las operaciones de coma flotante. Dado que puede haber dos operandos
necesarios para una operacin de punto flotante (como la multiplicacin o divisin), hay dos conjuntos de
registros exponente y mantisa reservados (A y B). Para que el argumento A, PBP_AARGHHH sostiene el
exponente y PBP_AARGHH, PBP_AARGH PBP_AARG y mantenga la mantisa. Para que el argumento B,
PBP_BARGHHH sostiene el exponente y PBP_BARGHH, PBP_BARGH PBP_BARG y mantenga la
mantisa.

Programas de Punto Flotante Ejemplo

"Multiplica dos valores de punto flotante

DEVICE = 18F452

XTAL = 4

DIM FLT que float

SMBOLO FL_NUM = 1,234 'Crear un punto flotante de valor constante

CLS

FLT = FL_NUM * 10

IMPRIMIR diciembre FLT

PARADA

'Agregar dos variables de punto flotante


DEVICE = 18F452
XTAL = 4
DIM FLT as float
DIM Flt1 as float
DIM FLT2 as float
CLS
Flt1 = 1,23
FLT2 = 1000,1
FLT = Flt1 FLT2
IMPRIMIR diciembre FLT
PARADA

Notas
Expresiones de punto flotante que contiene ms de 3 operandos no estn permitidos, debido al
espacio de RAM adicional necesario para una pila de software. Cualquier expresin que contiene una
variable de punto flotante o el valor se calcular como un punto flotante. Aunque el trmino se aplica
tambin contiene un byte, palabra o dword valor o variable.
Si la variable de asignacin es un byte, palabra o variable DWORD, pero la expresin tiene un carcter
de punto flotante. A continuacin, el resultado de punto flotante se convierte en un entero.
Ejemplo ;
DEVICE = 16F877
DIM DWD AS DWORD
DIM FLT que float
SMBOLO PI = 3,14
FLT = 10
DWD = FLT + P
"El clculo resultar en 13,14, pero se reducirn a un nmero entero 13
IMPRIMIR diciembre DWD ' Mostrar el resultado entero 13

PARADA
traduccin del ingls al espaol

Requisitos de espacio de codigo


Como se mencion anteriormente, una precisin de punto flotante tiene un precio de velocidad, y el
espacio de cdigo. Ambas cuestiones no son un problema si un dispositivo bsico de 16-bit se utiliza, sin
embargo en dispositivos de 14-bit bsicos puede suponer un problema. El compilador intenta cargar las
bibliotecas de punto flotante en la memoria baja, junto con todas las subrutinas de la biblioteca, pero si no
entra dentro de los primeros 2048 bytes de espacio de cdigo, y el PICmicro cuenta con ms de 2048 bytes
de cdigo disponible, la bibliotecas de punto flotante podr ser cargada en la parte superior de la memoria
de 1000 bytes de cdigo. Esto es invisible para el usuario, sin embargo, el compilador mostrar un aviso de
que est ocurriendo en caso de que parte de la memoria est siendo utilizado por su programa BASIC.
Mostrar ms preciso valores en coma flotante
De forma predeterminada, el compilador utiliza una rutina relativamente pequeo para la conversin de
valores de punto flotante para preparar decimal, por RSOUT, $ PRINT STR etc Sin embargo, debido a su
tamao, ya que no realiza ningn redondeo del primer valor, y slo es capaz de la conversin de valores
relativamente pequeos. es decir, aproximadamente 6 dgitos de precisin. Con el fin de producir un
resultado ms exacto, el compilador necesita usar una rutina ms grande. Esto se implementa mediante el
uso de un DECLARA: FLOAT_DISPLAY_TYPE = LARGE o STANDARD
Usando el modelo LARGE para declarar lo anterior dar lugar a que el compilador use la coma
flotante ms precisa a la rutina decimal. Tenga en cuenta que a pesar de que la rutina es ms grande que el
convertidor estndar, lo que realmente funciona mucho ms rpido. Los valores por defecto del compilador
para Norma, si este es declarar no se han concedido en el programa BASIC.

5 dic. 2010

ABS (COMANDO)
ABS (VALOR ABSOLUTO)
Sintaxys
Variable = ABS Variable
Detalles
Retorna el Valor Absoluto de un numero.
Ejemplo:
DWD1 = -1234567
DWD2 = ABS DWD1
PRINT DEC DWD2

' Muestra el Resultado "1234567"

5 dic. 2010

ACOS
ACOS

(ARCO-COSENO)

Sintaxys
Variable1 = ACOS Variable2

Detalles
Deduce el Arco Coseno de una Variable.
El Valor de la Variable2 debes estra entre -1 a 1.
Ejemplo:
FLOATIN = 0.8
FLOATOUT = ACOS FLOATIN
PRINT DEC FLOATOUT

Notas:
ACOS no est implementada en los dispositivos de 12 o 14 bits, sin embargo, con la funcionalidad
adicional, y la memoria ms lineal que ofrecen los dispositivos de base de 16 bits y de 32 bits de punto
flotante, el ARC COSENO esta implementada.
La trigonometra de punto flotante es abarca amplios recursos de memoria, as que no se sorprenda si
una gran parte de la memoria del PIC se utiliza con un solo operador. Esto tambin significa que la
trigonometra de punto flotante es relativamente lenta para operar.

5 dic. 2010

ADIN
ADIN

(ADQUISICION ANALOGICO DIGITAL)

Sintaxis
Variable1 = ADIN NumeroCanal

Detalles
Lee el valor del conversor analogico digital del PisMicro.

Ejemplo

Ejemplo

'Leer el valor del canal 0 del ADC y el lugar en la variable VAR1.

DECLARO ADIN_RES 10
RC DECLARE ADIN_TAD FRC
DECLARO ADIN_STIME 50

'10 bits resultado requerido


'OSC elegido
'Permitir 50us tiempo de la muestra

DIM VAR1 como WORD


TRISA =% 00000001
ADCON1 =% 10000000
VAR1 = ADIN 0

'Configurar An0 (PORTA.0), como aporte


'Ajuste de entrada analgica en PORTA.0
'Lugar de la conversin en la variable VAR1

Declaraciones:

Hay tres directivas de declaracion para su uso con ADIN. Estas son: -

DECLARO ADIN_RES 8, 10, o 12


Establece el nmero de bits en el resultado. Si esto no se declara, el valor por defecto es la maxima
resolucin des PIC a utilizar. Por ejemplo, la gama 16F87x dar lugar a una resolucin de 10 bits, junto con
los dispositivos de ncleo de 16 bits, mientras que el estndar de tipos PICmicro producir un resultado de 8
bits. Usando lo anterior permite declarar un resultado de 8 bits que se obtendrn de los tipos de PIC de 10
bits, pero no de 10 bits de los tipos de 8 bits.

DECLARO ADIN_TAD 2_FOSC, 8_FOSC, 32_FOSC, o FRC.


Establece la fuente de reloj del ADC. Todos los microPIC compatibles tienen cuatro opciones para la
fuente de reloj utilizado por el ADC. 2_FOSC, 8_FOSC y 32_FOSC, son configuraciones del oscilador
externo, mientras que la CRF es oscilador interno del PIC de RC. En lugar de utilizar los nombres
predefinidos para la fuente de reloj, valores de 0 a 3 puede ser utilizado. Estos reflejan la configuracin de
los bits 0-1 en ADCON0 registro.
Se debe tener cuidado al emitir este declarar, como el tipo equivocado de la fuente de reloj puede
resultar en una pobre resolucin, o sin conversin. CRF es la configuracin predeterminada si se declaran
no se public la lista de BASIC.

DECLARO ADIN_STIME 0 a 65535 microsegundos (nosotros).


Permite a los condensadores internos cargarse por completo antes que se tome una muestra. Esto
puede ser un valor de 0 a 65535 microsegundos. Un valor demasiado pequeo puede resultar en una
reduccin de la resolucin. Mientras que un valor demasiado elevado se traducir en la velocidad de
conversin.
Un valor tpico para ADIN_STIME es de 50 a 100. Esto permite que el tiempo de carga adecuada sin
perder velocidad de conversin. Pero la experimentacin producir el valor adecuado para su requerimiento
particular. El valor por defecto si se declaran no se utiliza en el listado bsico es de 50.

Notas

Antes de que el comando ADIN puede ser utilizado, el registro TRIS apropiado debe ser manipulado
para ajustar el canal en que se desee la entrada Analogica. Adems, el registro ADCON1 se debe
establecer de acuerdo con el canal en que se requiera una entrada analgica, y en algunos casos, para
configurar el formato del resultado de la conversin.
Si varias conversiones se estn aplicando, a continuacin, un pequeo retraso se debe utilizar despus
del comando ADIN. Esto permite que los condensadores internos de la ADC para cumplir ntegramente: -

3 dic. 2012

INKEY (Manejo De Teclado Matricial)

Sintaxys
Variable = INKEY
Detalles
Realiza un scan al teclado y devuelve el resultado a una variable.

Operadores

La Variable puede se definida del tipo bit, byte, byte array, word, word array, dword or float.

Ejemplo
DIM VAR1 as BYTE
VAR1 = INKEY
' Scanea el teclado
DELAYMS 50
' Antirrebote/50ms
PRINT @VAR1 , " " ' Muestra el resultado en el LCD .

Notas
INKEY devuelve un valor entre 0 y 16. Si ninguna tecla es presionada el valor devuelto es
16.
Usando el comando LOOKUP, los valores devueltos pueden se cambiados de acuerdo a los
caracteres presentes en el teclado fsicamente.
Ejemplo
VAR1 = INKEY
KEY = LOOKUP VAR1, [255,1,4,7,"*",2,5,8,0,3,6,9,"#",0,0,0]
Los valores del ejemplo son solo demostracin por lo que deben ser ajustados de
acuerdo a los caracteres impresos en cada tecla del mismo.

Declaciones DECLARE KEYPAD_PORT PORT


la instruccin.

Asigna el puerto a ser utilizado por

La rutina INKEY requiere resistores pull_up, por lo cual el mejor puerto para ello es el
puerto B, ya que este posee estos internamente. En caso de seleccionar otro puerto
esta consideracin debe ser tomada en cuenta.

3 dic. 2012

EREAD (Lectura de Memoria EEPROM interna)


Sintaxys
Variable = EREAD Direccion
Detalles
Lee informacion de la memoria EEPROM interna del microPIC.

Operators

Variable - tipo bit, byte, byte array, word, word array, dword, or float.
Direccion - constante, variable expresin, que contiene la direccin que se desea leer
en la memoria EEPROM.
Ejemplo
DEVICE 16F84
DIM VAR1 as BYTE
DIM WRD1 as WORD
DIM DWRD1 as DWORD
la direccin 0

VAR1

= EREAD 0

'Lee valor de 8-bit a partir de

WRD1 = EREAD 1
DWRD1 = EREAD 3

'Lee valor de 8-bit a partir de la direccin


'Lee valor de 8-bit a partir de la direccin

1
3

Nota
Si en la instruccin la variable usada en la asignacin es del tipo
float float dword, entonces cuatro (04) bytes sern ledos de la memoria EEPROM, y
estos correspondern a las direcciones de memoria consecuentes.

Si en la instruccin la variable usada en la asignacin es del tipo float word, entonces cuatro
(04) bytes sern ledos de la memoria EEPROM.

Ejemplo:

Direccion

Dato

Hex

Hex

00

0A

01

0B

02

0C

03

0D

04

0E

05

0F

06

1A

07

1B

08

1C

09

2D

0A

2E

0B

2F

0C

3A

0D

3B

0E

3C

0F

3D

CASO 1:

DIM VAR1 AS WORD

VAR1 = EREAD 0

' LA ASIGNACION SERA

VAR1 <= $0A0B

En este caso VAR1 es del tipo WORD (16 bits) por lo cual la direccin "0" corresponde a la
parte baja y la direccin "1" a la parte alta.

CASO 2:

DIM VAR1 AS DWORD

VAR1 = EREAD 3

' LA ASIGNACIN SERA

VAR1 <= $0D0E0F1A

En este caso VAR1 es del tipo DWORD (32 bits) y la asignacin usa las direcciones de
memoria 03-04-05-06.

Vea Tambien :
EDATA
EWRITE

3 dic. 2012

EWRITE (Escritura de Memoria EEPROM interna)


EWRITE
Sintaxis
EWRITE Direccin , [ Variable {, Variableetc } ]
Detalles
Escribe datos en la memoria EEPROM del PICmicro.
Operadores

Direccion : constante, variable expresin, que contiene la direccion que se desea


escribir.

Variable: definida por el usuario y del tipo bit, byte, byte array, word, word
array, dword,float or a constant value.
Ejemplo DEVICE 16F628

DIM VAR1 as BYTE


DIM WRD1 as WORD
DIM DIRECCION as BYTE
VAR1 = 200
WRD1= 2456
DIRECCION = 0

' Point to address 0 within the eeprom

EWRITE DIRECCION , [ WRD , VAR1 ] ' Escribe un dato de 16 bits y luego uno de 8
bits.
Notas
Si en la instruccin la variable usada en la escritura de la EEPROM es del
tipoword, entonces sern usadas cuatro (02) bytes de la memoria EEPROM, y
estos correspondern a las direcciones de memoria consecuentes.

Si en la instruccin la variable usada en la lectura es del tipo float word, entonces cuatro
(04) bytes sern escritas en la memoria EEPROM.

Si se desearan almacenar datos de 16 bits consecutivamente la direccin debe


ser incrementada en dos (02) cada escritura, como se muestra en el siguiente codigo :
FOR Direccin = 0 TO 64 STEP 2
EWRITE Direccin , [ WRD ]
NEXT
Vea tambin
EDATA
EREAD

3 dic. 2012

EDATA (Escritura de Memoria EEPROM)


Sintaxis
EDATA Constante1 { ,...Constanten etc }
Detalles

Almacena constantes o cadenas directamente en la memoria EEPROM de PICmicro.

Operators

Constante1, Constanten - valores a ser almacenados en la memoria EEPROM, los


valores son almacenados a partir de la direccin inicial 0. Esta instruccin no permite
especificar la direccin de memoria de almacenamiento de los datos. Para almacenar en
una direccin especifica diferente a la cero (0), es necesario usar el comando EWrite .
Ejemplo ' Almacena los datos 1000,20,255,15, y los valores ASCII para
' H','e','l','l','o' en la memoria EEPROM iniciando en la direccin 0.

EDATA 1000 , 20 , $FF , 001111 , "Hello"

Nota
Valores de 16-bit, 32-bit y punto flotante, pueden ser almacenados en la EEPROM, y estos
son colocados de manera tal que el byte menos significativo ocupe la primera direccin de
memoria.
Por ejemplo, si el valor a almacenar es 1000 con la sentencia Edata, entonces
la instruccin seria la siguiente :
EDATA 1000
Los datos en la EEPROM quedan as : 232, 03

Tabla de Direccionamiento (EDATA)


Los de la memoria EEPROM inicia en la direccin 0 y finaliza en un mximo de acuerdo a la capacidad
de PICmicro. En raras ocasiones la informacin almacenada en la EEPROM es una sola pieza continua de
informacion, por el contrario, normamalmente es usada para almacenar valores o cadenas de texto, de
manera tal que acceder a cada uno de estos es esencial. Considerando el siguiente codigo :
EDATA "HOLA"
EDATA "MUNDO"
El texto "HOLA" sera almacenado a partir de la direccion, contiene 4 caracteres y cada uno ocupa un
byte de la memoria EEPROM, de esta manera el texto "MUNDO" comienza a almacenarse a partir de
la direccin 4, y contiene 5 caracteres; asi que la proxima cadena de texto a alamecenar estara localizada a
partir de la direccion 9. Para acceder de manera separada a cada una de las cadenas de textos o valores
es necesario mantener un registro de la direccion de inicio o cabezera y final de cada cadena de texto.
Para esto un nombre de identificacion antes de la sentencia EDATA permite al compilador hacer el conteo
de bytes. El compilador almacena las direcciones asociada a cada texto o valor, con un nombre de
identificacion en la tabla.
Por Ejemplo :
HOLA_TEXT EDATA "HOLA"
MUNDO_TEXT EDATA "MUNDO"
El nombre HOLA_TEXT is ahora reconocido por el compilado como una constante, y de ser la

primera sentencia EDATA, esta tomara el valor de 0, refiriendose a la direccion de inicio de la


cadena "HOLA".

MUNDO_TEXT es una contante y mantendra un valor de 4, el cual se refiere a la direccion de


inicio de la cadena d etexto "MUNDO".
Note que el identificador debe ser localizado en la misma linea que la directiva EDATA.
Cualquier Directiva EDATA debe ser colocada en la cabecera del Programa, al igual que
los simbolos, estos nombre son reconocidos en el resto del programa cada vez que
estos aparezcan .

El ejemplo de abajo ilustra el uso del direccionamiento de la EEPROM:


' Muestra dos textos almacenados en la memoria EEPROM

Include "PROTON_4.INC"
Dim CHAR as Byte
Dim CHARPOS as Byte
HELLO EDATA "HOLA ",0
WORLD EDATA "MUNDO",0
EEPROM. terminacin.
Delayms 200
Cls
CHARPOS = HELLO
Gosub DISPLAY_TEXT
CHARPOS = WORLD
Gosub DISPLAY_TEXT
Stop

' Carcter
' Direccin
' Crea una cadena de Texto en la EEPROM. terminacin.
' Crea una cadena de Texto en la

'
'
'
'
'
'
'

retardo 200 ms
Limpia LCD
CHARPOS <= direccion de inicio del texto "HOLA"
Muestra el texto "HOLA"
CHARPOS <= direccion de inicio del texto "MUNDO"
Muestra el texto "MUNDO"
Fin

' subrutina pata leer y mostrar el texto almacenado en


la direccin correspondiente al valor de CHARPOS
DISPLAY_TEXT:
While 1 = 1
CHAR = EREAD CHARPOS
If CHAR = 0 Then Break
Print CHAR
Inc CHARPOS
Wend
Return

'
'
'
'
'
'
'

Bucle infinito
Lee EEPROM
Sale del Bucle cuando CHAR = 0
Muestra el caracter
Incrementa CHARPOS
Cierra bucle While
Sale de la subrutina

15 feb. 2013

Variables (Tipos de datos)

(terminacin)

Las variables son donde los datos temporales se almacenan en un programa BASIC. Ellos son creados
usando la palabra clave DIM. Debido a que la RAM disponible en en microPIC es algo limitado en tamao,
la eleccin de los tipos o tamaos de variables adecuados para cada tarea especfica es de suma
importancia. Las variables pueden ser del tipo BIT, BYTE, WORD, DWORD, FLOAT o STRING.

El espacio para cada variable se asigna automticamente en el rea de la memoria RAM del
microcontrolador. El formato para crear una variable es el siguiente: -

DIM Identificador AS Tipo

Identificador, cualquiera (a excepcin de palabras clave).


Tipo : bit, byte, word, dword o float.
Algunos ejemplos de la creacin de variables son: -

DIM perro As Byte

DIM cat

As Bit

'8 bits sin signo


'(0 a 255)
'un solo bit (0 1)

DIM rata As Word

'16 bits sin signo (0 a 65535)

DIM L_Rat As DWord

'32 bits con signo


'(-2147483647 a 2147483647)

DIM P_Rat As Float

'32 bits en coma flotante

DIM ST As secuencia * 20

'Crear una variable STRING


'capaz de contener 20 caracteres

El nmero de variables disponibles depende de la cantidad de RAM en un dispositivo en particular y


el tamao de las variables en el programa Proton BASIC puede reservar aproximadamente 26 ubicaciones
de memoria RAM para su propio uso. Tambin puede crear nuevas variables temporales para utilizarlas en
el clculo de ecuaciones complejas , especialmente si los clculos de punto flotante se llevan a cabo.
Hay ciertas palabras reservadas que no se pueden utilizar como nombres de variables, estas son las
variables del sistema utilizados por el compilador.

Las siguientes palabras reservadas no se debe utilizar como nombres de variables, como el
compilador crear estos nombres cuando sea necesario: -

PP0, PP0H, PP1, PP1H, PP2, PP2H, PP3, PP3H, PP4, PP4H, PP5, PP5H, PP6, PP6H, PP7, PP7H, PP8,
PP9H, GEN, GENH, GEN2, GEN2H, GEN3, GEN3H, GEN4, GEN4H, GPR, BPF, BPFH.

Cada tipo de variable requiere diferentes cantidades de memoria RAM para su asignacin. La lista de
abajo ilustra esto.

FLOAT

requiere 4 bytes de RAM.

DWORD

requiere 4 bytes de RAM.

Word

requiere 2 bytes de RAM.

BYTE

requiere 1 byte de RAM.

Bit

requiere 1 byte de RAM para cada 8 variables bits utilizadas.

Cada tipo de variable puede contener un mnimo diferente y el valor mximo:

FLOAT
Tericamente puede tener un valor de 1-1e37 hasta e38, as como los valores fraccionarios, haciendo
de este el ms exacto de los tipos de variables. Sin embargo, ms que los tipos DWORD, esto tiene un
precio ya que los clculos y las comparaciones FLOAT utilizan ms espacio de cdigo en el PIC. Utilice
este tipo de variable con moderacin y slo cuando sea estrictamente necesario. Los valores ms bajos de
punto flotante ofrecen ms precisin.

DWORD
Puede contener un valor entre -2147483647 y 2147483647. Esto tiene un precio sin embargo, ya
que los clculos y las comparaciones DWORD usarn ms espacio de cdigo dentro de la PICmicro, al igual
que FLOAT, utilice este tipo de variable con moderacin y slo cuando sea necesario.

WORD
Podr contener a un valor entre 0 y 65535, que suele ser lo suficientemente grande para la mayora
de aplicaciones. Se sigue utilizando ms memoria, pero no tanto como un tipo DWORD.

BYTE
Puede tener un valor de 0 a 255, y son los caballos de trabajo habituales de la mayora de los
programas. El Cdigo producido por las variables de tamao BYTE es muy bajo en comparacin con los
tipos WORD, FLOAT o DWORD, y se debe tomar en cuenta si el programa requiere un funcionamiento ms
rpido, o ms eficiente.

BIT
Puede tener un 0 o un 1. Estos se crean 8 a la vez, por lo tanto, si declara una sola variable de tipo

BIT en el programa no guardar espacio de memoria RAM, solo ahorrar espacio de cdigo, ya que las
variables de tipo bit producen el uso ms eficiente de cdigo para las comparaciones etc

15 feb. 2013

Identificadores y Etiquetas

Identificadores
Un identificador es simplemente un nombre. Son
usados en Pronto Basic como etiquetas de lneas y
nombres de variables. Un identificador es cualquier
secuencia de letras, dgitos y smbolos, aunque no deben
comenzar con un dgito. Los identificadores no distinguen
las letras maysculas de las minsculas, por lo que
etiqueta, ETIQUETA, Etiqueta son todas tratadas como
equivalentes. Aunque las etiquetas pueden tener cualquier
nmero de caracteres de longitud, Protn Basic solamente
reconoce los primeros 32.

Etiquetas
Para marcar lneas que el programa puede desear
referenciar con comandos GOTO GOSUB, Proton BAsic
usa tiquetas de lnea y no permite nmero de lnea y no
requiere que cada lnea sea etiquetada. Cualquier lnea
puede comenzar con una etiqueta de lnea que es

simplemente un identificador seguido por dos puntos (:)


ejemplo
etiqueta1:

Goto etiqueta1
20 feb. 2013

MULTIMETRO DIGITAL
MONTAJE EN ISIS 7.7 SP2

MICROCONTROLADOR : PIC16F877
LCD 2x16
FUNCIONES :
1.
VOLTIMETRO
2.
AMPERIMETRO
3.
CONTADOR

4.
5.
6.
7.
8.

FRECUENCIA
PERIODO
CICLO UTIL
OHMETRO
CAPACIMETRO

CODIGO :

; MULTIMETRO DIGITAL
Device 16F877
Declare XTAL

;SE SELCCIONA EL PIC


20

;SE CONFIGURA UN CRISTAL DE 20MHZ

PORTB_PULLUPS = 1

;SE CONFIGURAS LAS RESISTENCIAS INTERNAS PULL-UP DEL PUERTO B

'***************************CONFIGURACION CONVERTIDOR ANALOGICO DIGITAL ******************


Declare ADIN_RES 10

'CONFIGURA EL ADC A 10 BIT DE RESOLUCION

Declare ADIN_TAD FRC

'ASIGNA EL OSCILADOR INTERNO PARA EL MUESTREO

Declare ADIN_STIME 50

' CONFIGURA A 50uSEG EL TIEMPO DE MUESTREO

ADCON1 = %10000010

' Se CONFIGURA EL ADC TODO ANALOGICO

;******************************************************************************************************
;CONFIGURACION DE PUERTOS

TRISD=001111

;SE CONFIGURA EL PUERTO D

TRISC=000000

;SE CONFIGURA EL PUERTO C

TRISB=000001

;SE CONFIGURA EL PUETO B

TRISA=011111

;SE CONFIGURA EL PUERTO A

TRISE=000001

;SE CONFIGURA EL PUERTO E

Clear PORTD

; LIMPIA EL PUERTO D

Clear PORTB

; LIMPIA EL PUERTO B

Clear PORTC

; LIMPIA EL PUERTO C

Clear PORTE

; LIMPIA EL PUERTO E

'INICIALIZACON DE PANTALLA LCD

Declare LCD_TYPE 0

;PANTALLA ALFANUMERICA

Declare LCD_DTPIN PORTB.4

;SE USAN 4 LINEAS DE DATOS

Declare LCD_RSPIN PORTB.3

;SE CONFIGURA EL PIN RB3 PARA EL RS DEL LCD

Declare LCD_ENPIN PORTB.2


Declare LCD_LINES 2

;SE CONFIGURA EL PIN RB2 PARA EL PIN EN DEL LCD


;LCD DE DOS LINEAS

'DECLARACION DE VARIABLES

Dim Frec As Word

;SE DECLARA LA VAR FREC DE 16 BITS

Dim Cont As Byte


Dim var1 As Byte

Dim volt As Float


Dim OHM As Float
Dim CAD As Word
Dim amper As Float
Dim temp As Float
Dim periodo As Float
Dim ciclo_h As Word
Dim ciclo_l As Word
Dim porc_ciclo_util As Float
Dim capacitancia2 As Word
Dim capacitancia As Float

;SE ALMACENAN LOS SIMBOLOS ESPECIALES EN LA MEMORIA CGRAM DE LA PANTALLA LCD


' CARGANDO EL 1ER. CARACTER PERSONALIZADO EN LA CGRAM BORDE ESQUINA SUPE IZ CARACTER 0
Print 254,64, $1F,$1E,$1C,$1C,$18,$18,$10,$00
'CARGANDO EL 2DO. CARACTER PERSONALIZADO EN LA CGRAM
CARACTER 1

BORDE ESQUINA INF IZQ-

Print 254,72, $00,$10,$18,$18,$1C,$1C,$1E,$1F


'CARGANDO EL 3RO. CARACTER PERSONALIZADO EN LA CGRAM SUPER DER - CARACTER 2
Print 254,80, $1F,$0F,$0F,$07,$07,$03,$03,$01
'CARGANDO EL 4TO. CARACTER PERSONALIZADO EN LA CGRAM

INF DER - CARACTER 3

Print 254,88, $01,$03,$03,$07,$07,$0F,$0F,$1F


'CARGANDO EL 5TO. CARACTER PERSONALIZADO EN LA CGRAM
CARACTER 4

SIGNO MENOS -

Print 254,96, $00,$00,$00,$1F,$1F,$00,$00,$00


'CARGANDO EL 6TO. CARACTER PERSONALIZADO EN LA CGRAM

FLECHA DER - CARACTER

5
Print 254,104, $00,$10,$18,$1C,$1C,$18,$10,$00
'CARGANDO EL 7MO. CARACTER PERSONALIZADO EN LA CGRAM
CARACTER 6

FACHA ARRIBA -

Print 254,112, $00,$00,$00,$04,$0E,$0E,$1F,$1F


'CARGANDO EL 8VO. CARACTER PERSONALIZADO EN LA CGRAM
CARACTER 7

FLECHA ABAJO -

Print 254,120, $1F,$1F,$0E,$0E,$04,$00,$00,$00

Cls

;LIMPIA EL LCD

Print At 1,1,0, " MULTIMETRO ",2


Print At 2,1,1, "

DIGITAL ",3

DelayMS 3000
Cls

;INICIO PROGRAMA PRINCIPAL

Cont = 0

; CONTADOR DE INDICADOR DE FUNCION A SELECCIONAR

INICIO:

If PORTD.1 = 1 Then
DelayMS 300
Cont= Cont + 1
If Cont = 7 Then
Cont = 6
End If
End If

If PORTD.0 = 1 Then

DelayMS 300
Cont= Cont - 1
If Cont = 255 Then
Cont = 0
End If
End If

; SE SELECCIONA UNA OPCION DEPENDIENDO DEL VALOR DE LA VARIABLE CONT


Select Case Cont
Case 0 :
Print At 1,1,"1-",5, $FE, $0C, "VOLTIMETRO "
Print At 2,1,"2-", " AMPERIMETRO ",7
If PORTD.2=1 Then
Call VOLTIMETRO
End If

Case 1 :
Print At 1,1,"2-",5, "AMPERIMETRO ",6
Print At 2,1,"3-", " MED. FREC ",7
If PORTD.2=1 Then
Call AMPERIMETRO
End If
Case 2 :
Print At 1,1,"3-",5, "MED. FREC ",6
Print At 2,1,"4-", " MED. PERIODO",7
If PORTD.2=1 Then
Call FRECUENCIMETRO
End If
Case 3 :
Print At 1,1,"4-",5, "MED. PERIODO",6
Print At 2,1,"5-", " % CICLO UTIL",7
If PORTD.2=1 Then
Call MED_PERIODO
End If
Case 4 :
Print At 1,1,"5-",5, "% CICLO UTIL",6

Print At 2,1,"6-", " OHMETRO

",7

If PORTD.2=1 Then
Call CICLO_UTIL
End If
Case 5 :
Print At 1,1,"6-",5, "OHMETRO

",6

Print At 2,1,"7-", " CAPACIMETRO ",7


If PORTD.2=1 Then
Call OHMETRO
End If
Case 6 :
Print At 1,1,"7-",5, "CAPACIMETRO ",6
Print At 2,1," ", "

"

If PORTD.2=1 Then
Call Capacimetro
End If
End Select

GoTo INICIO

; REGRESA A LA ETIQUETA INICIO

;;FIN DEL PROGRAMA PRNCIPAL

;;****************** RUTINA PARA EL FRECUENCIMETRO ***********************************


FRECUENCIMETRO:
Cls
Repeat
Frec = Counter PORTB.0,200
POR UN PERIODO DE 200 MS

;RELIZA UN CONTEO DE PULSOS EN EL PUERTO B PIN 0

Frec = Frec * 5
Print At 1,1, " FREC = ",Dec Frec , " HZ
Until PORTD.3=1

"

;SE EJECUTA LA RUTIMA HASTA QUE SE PRESIONES SALIR

Return

;*********** RUTINA PARA LA MEDICION DE PERIODOS ************************************

MED_PERIODO:
Cls
Repeat
Frec = Counter PORTB.0,200
POR UN PERIODO DE 200 MS

;RELIZA UN CONTEO DE PULSOS EN EL PUERTO B PIN 0

Frec = Frec * 5
periodo = 1000 / Frec
Print At 1,1, " T = ",DEC2 periodo , " mSeg
Until PORTD.3=1

"

;SE EJECUTA LA RUTIMA HASTA QUE SE PRESIONES SALIR

Return

;**************** RUTINA DEL VOLTIMETRO*************************


VOLTIMETRO:
Cls
Repeat
CAD = ADIn 1

; DEVUELVE UN VALOR ENTRE 0 Y 1023 PORQUE ES 10 BIT

volt = CAD * 10/1023


Print At 1,1, "Volt = ", DEC2 volt , " VDC
Until PORTD.3=1

" ;

;SE EJECUTA LA RUTIMA HASTA QUE SE PRESIONES SALIR

Return

;*********RUTINA PARA LA MEDICION DE RESISTENCIA *******************************


OHMETRO:
Cls
;SE UTILIZA UN DIVISOR DE TENSION VOUT = R2*VIN/(R1+R2)
Repeat
CAD = ADIn 3
volt = CAD * 5000/1023
OHM = (volt * 10000 )
OHM = OHM /( 5000 - volt)
Print At 1,1, " RES = ", DEC2 OHM , " OHM

Until PORTD.3=1

" ;

;SE EJECUTA LA RUTIMA HASTA QUE SE PRESIONES SALIR

Return

;*********************** RUTINA PARA EL AMPERIMETRO*********************************


AMPERIMETRO:
Cls
Repeat
CAD = ADIn 2
amper= CAD * 20 /1023
Print At 1,1, " Corr = ", DEC2 amper , " mA

" ;

Until PORTD.3=1 ;SE EJECUTA LA RUTIMA HASTA QUE SE PRESIONES SALIR


Return

;******************************* RUTINA PARA LA MEDICION DE CICLO UTIL****************


CICLO_UTIL:
Cls
Repeat
ciclo_l = PulsIn PORTB.0,0
BAJO

;CUENTA EL TIEMPO DE DURACION DEL UN PULSO EN ESTADO

DelayMS 10
ciclo_h = PulsIn PORTB.0,1
ALTO

;CUENTA EL TIEMPO DE DURACION DEL UN PULSO EN ESTADO

porc_ciclo_util = (ciclo_h*100)
porc_ciclo_util= porc_ciclo_util /(ciclo_l + ciclo_h)
Print At 1,1, "Ciclo Ut= ", DEC1 porc_ciclo_util ,"

" ;

Until PORTD.3=1
Return

;************************* RUTINA PARA CALCULAR LA CAPACITACIA **********************


Capacimetro:
Cls
Repeat
For var1 = 1 To 100
High PORTE.0
DelayMS 10

' Discharge the cap

capacitancia2 = RCIn PORTE.0 , High


CAPACITOR

;CALCULA EL TIEMPO DE DESCARGA DEL

capacitancia = (capacitancia2/64) + capacitancia


100 VECES

; SE SUMA EL RESULTADO EN LA VARIABLE

Next
capacitancia= capacitancia /100 ; SE DIVIDE ENTRE 100 PARA SACAR EL PROMEDIO
Print At 1,1, " Cap = ", Dec capacitancia , 223, " uF

" ;

Until PORTD.3=1
Return

28 feb. 2016

LCD, Interrupcin RB0 INT, ADC y Transmision RS232 por


Software
Cada vez que se produce la interrupcin RB0_INT por flanco de subida en RB0, se transmite va serial
RS232 datos correspondientes a los valores del puerto B y del Convertidor Analgico Digital, a su vez se
puede observar la informacin en el LCD, representados como altura (puerto B) y peso (ADC).
El ejemplo muestra en forma sencilla y ordenada como deben ser configurados y ubicados los codigos
correspondientes a las interrupciones; as como de el resto de los perifricos.

'****************************************************************
Device 16F877
Xtal 20
PortB_Pullups FALSE
'DESHABILITA LAS RESISTENCIAS PULL-UP DEL PUERTO B
On_Interrupt GoTo INTERRUPCION
; DEFINICIONES PARA LA CONFIGURACION INTERUPCIONES

Symbol INTEDG = OPTION_REG.6 ' BIT SELECCION DEL FALNCO DE INTERRUPCION


Symbol GIE = INTCON.7
' BIT HABILITADOR GLOBAL DE INTERRUPCIONES

Symbol INTE = INTCON.4


Symbol INTF = INTCON.1

' BIT DE HABILITACION DE LA INTERRPCION RB0/INT


' BIT DE HABILITACION DE LA INTERRPCION RB0/INT

;CONFIGURACION DEL CONVERTIDOR ANALOGICO DIGITAL


Declare Adin_Res 10

' Resultado ADC - 10 bit

Declare Adin_Tad FRC


Declare Adin_Stime 50
TRISA = 000001

' RC OSC
' 50us sample time

' Configura AN0 (PORTA.0) como entrada

ADCON1 = %10000000

' Configura PORTA.0 Analogico

;CONFIGURACION DEL LCD

Declare LCD_Type 0
Declare LCD_DTPin PORTD.4
Declare LCD_ENPin PORTD.3
Declare LCD_RSPin PORTD.2
;CONFIGURACION DEL PUERTO SE COMUNICACION SERIAL

Declare SERIAL_DATA 8
Symbol RS232 = 84
Symbol tx_pin = PORTC.6
Symbol rx_pin = PORTC.7

' 8 bits de datos


' 9600 bps/sin bit de paridad

' Declaracion de Variables


Dim ADC As Word

Dim PESO As Float


Dim ALTURA As Byte
Dim flag As Byte
Dim cont As Word
Symbol BUZZER = PORTD.0
;EL CDIGO DE LA INTERRUPCIN SIEMPRE DEBE SER COLOCADO EN ESTA UBICACIN

;(NO COLOCAR DEBAJO DEL PROGRAMA PRINCIPAL ESTO SE DEBE A QUE LA DIRECCIN
; DE MEMORIA DE PROGRAMA DE ATENCIN DE INTERRUPCIONES ES LA ORG 0x004)
GoTo Salta_Int

INTERRUPCION:
flag = 1
INTF = 0
Context Restore
Salta_Int:
'CONFIGURACION DE PUERTOS
TRISA = %11111111
TRISB= %11111111
TRISC = %10111111
TRISD.0 = 0
TRISD.1 = 1
;CONFIGURACIN DEL LA INTERRUPCIN POR FLANCO DE SUBIDA DEL PIN RBO (RB0/INT)

GIE=1
INTEDG = 1
INTE = 1
INTF = 0
cont = 0

flag = 0
BUZZER = 0
PESO =0
ALTURA =0

;HABILITADOR GLOBAL DE INTERRUPCIONES


;SELECCIN DE FLANCO DE SUBIDA PARA INTERRUPCION RB0/INT
; HABILITADOR DE INTERRUPCION RB0/INT
; BANDERA DE INTERRUPCION RB0/INT

Print At 1,1,"Peso : ", Dec2 PESO, " "

Print At 2,1,"Altura : ", Dec ALTURA, " "


'Inicio del programa principal

While 1 = 1
If flag = 1 Then
DelayMS 2700
ALTURA = PORTB
BUZZER = 1

DelayMS 300
BUZZER = 0
ADC = ADIn 0

' Efectua la conversion ADC y almacena el resultado en la variable ADC

PESO = ADC
Select Case PORTB

Case 1 : ALTURA = 1
Case 3 : ALTURA = 2
Case 7 : ALTURA = 3
Case 15 : ALTURA = 4
Case 31 : ALTURA = 5
Case 63 : ALTURA = 6
Case 127 : ALTURA = 7
Case Else: ALTURA = 0
End Select
cont = cont + 1
SerOut tx_pin, RS232, [Dec cont, ".- Peso: ", Dec2 PESO, " - ALTURA : " ,Dec ALTURA, 13]
rs232
flag = 0
Print At 1,1,"Peso : ", Dec2 PESO, " "
Print At 2,1,"Altura : ", Dec ALTURA, " "
End If

Wend

Programacin en Visual Basic


UNIVERSIDAD TECNOLGICA DE MORELIA
OFIMATICA
PROGRAMACIN
Profesor
Alumno:
Calificacin:
INTRODUCCIN.

' envio

Visual Basic es uno de los tantos lenguajes de programacin que podemos encontrar hoy en da.
Dicho lenguaje nace del BASIC (Beginners All-purpose Symbolic Instruction Code) que fue creado en
su versin original en el Dartmouth College, con el propsito de servir a aquellas personas que estaban
interesadas en iniciarse en algn lenguaje de programacin. Luego de sufrir varias modificaciones, en
el ao 1978 se estableci el BASIC estndar. La sencillez del lenguaje gan el desprecio de los
programadores avanzados por considerarlo "un lenguaje para principiantes".
VISUAL BASIC
Es un lenguaje de programacin que se ha diseado para facilitar el desarrollo de aplicaciones en un
entorno grafico (GUI-GRAPHICAL USER INTERFACE) Como Windows 98, Windows NT o superior.
CARACTERSTICAS DE VISUAL BASIC.
Diseador de entorno de datos: Es posible generar, de manera automtica, conectividad entre
controles y datos mediante la accin de arrastrar y colocar sobre formularios o informes.
Los Objetos Actives son una nueva tecnologa de acceso a datos mediante la accin de arrastrar y
colocar sobre formularios o informes.
Asistente para formularios: Sirve para generar de manera automtica formularios que administran
registros de tablas o consultas pertenecientes a una base de datos, hoja de calculo u objeto (ADOACTIVE DATA OBJECT)
Asistente para barras de herramientas es factible incluir barras de herramientas es factible incluir barra
de herramientas personalizada, donde el usuario selecciona los botones que desea visualizar durante
la ejecucin.
En las aplicaciones HTML: Se combinan instrucciones de Visual Basic con cdigo HTML para controlar
los eventos que se realizan con frecuencia en una pagina web.
La Ventana de Vista de datos proporciona acceso a la estructura de una base de datos. Desde esta
tambin acceso al Diseador de Consultas y diseador de Base de datos para administrar y registros.
DESCRIPCIN DE VENTANAS PRINCIPALES
Ejecutamos Visual Basic (VB) y al comenzar podemos ver la siguiente ventana que nos permitir
saber que en que formato deseamos el programa:

Est nos esta mostrando la diferentes formas para comenzar, hay 3 formas, la primera Nuevo es
iniciando un Nuevo Proyecto, seleccionando uno tipo de proyecto, la segunda Existente es abriendo
un proyecto ya existente, el archivo tiene que contener la extensin *.vbp, *.mak o*.vbg, y por ultimo la
tercera Recientes es seleccionando un proyecto de la lista de archivos recientemente abiertos (VB se
encarga automticamente de mostrar una lista de los ltimos proyectos abiertos).
Para continuar se elige EXE estndar y luego Abrir, ahora se explicara la Ventana principal de Visual
Basic.
LAS PARTES DEL ENTORNO DE VISUAL BASIC.
Barra de titulo: muestra el nombre del proyecto y del formulario q se est diseando actualmente
Barra de mens: agrupa los mens despegables que contienes todas las operaciones que pueden
llevarse a cabo con Visual Basic 6.0.
Barra de herramientas estndar: contienen los botones que se utilizan con mayor frecuencia cuando se
trabaja con un proyecto. Simplifica la eleccin de opciones de los mens Archivo, Edicin, Ver y
Ejecutar; adems, en el rea derecha presenta la ubicacin (coordenadas) y el tamao del objeto
seleccionado
Ventana de formulario: es el rea donde se disea la interfaz grfica, es decir, es donde se inserta
electo grficos, como botones, imgenes, casilla de verificacin, cuadros de listas, etc.
Cuadro de herramientas: presenta todos los controles necesarios para disear una aplicacin, como
cuadros de texto, etiquetas, cuadros de listas, botones de comandos, etc.
Ventana de proyecto: muestra los elementos involucrados en el proyecto, como formularios, mdulos,
controles oxc, etc. Cada elemento puede seleccionarse en forma independiente para su edicin.

Ventana de posicin del formulario: muestra la ubicacin que tendr el formulario en la pantalla,
cuando ejecute la aplicacin. Esta ubicacin puede cambiarse si se hace clic con el botn izquierdo del
mouse.
La Ventana propiedades muestra todas las propiedades del control actualmente seleccionado, en este
caso muestra las propiedades del Form1, luego podemos ver que abajo dice "Form1 Form", lo que
est en negrita es el nombre del objeto, y lo que le sigue es el tipo de objeto, en este caso es un
Formulario (Form)

1.- Barra de titulo, en est se muestra el nombre del proyecto actual en el que se esta trabajando,
luego viene el nombre del programa, continuado a "Microsoft Visual Basic viene el estado en el que
est el proyecto, hay 3 tipos de estado en [Diseo] cuando se est escribiendo el
cdigo, [Ejecucin] el programa se encuentra en ejecucin, o en estado de [Interrupcin] que es
cuando en estado de ejecucin se produjo un error, por ultimo en la barra de titulo se puede visualizar
el nombre del Form (Formulario) actual en que se est trabajando y como se est trabajando [Form1
[Form]] cuando se trabaja en el diseo del Formulario o [Form1 [Cdigo]] cuando se trabaja en el
cdigo para ese formulario.
2.- En la barra de mens se encuentran todas las opciones para manejar Visual Basic, a medida que
se vayan utilizando se irn explicando.
3.- La barra de herramientas, contiene varios accesos directos a los mens, para agilizar el manejo de
Visual Basic.
4.- Se le llama Cuadro de herramientas y sirve para colocar objetos en la Ventana de Diseo, como
Cuadros de textos, Botones, Imgenes, y otros. Esto funciona muy fcil ya que seleccionamos por
ejemplo un CommandButton (botn), y vamos al ventana diseo y lo creamos haciendo Clic con el
Mouse (sin soltarlo!) y lo arrastramos hasta el tamao que deseemos, en ese momento soltamos el
botn. Y listo ya tienes un botn estilo Windows para usar!.

5.- La Ventana diseo, es aqu donde se le da la apariencia al programa, es decir lo que el usuario va a
ver. Los puntillos del fondo son utilizados con el fin de alinear ms fcil los objetos en el
Formulario(Ventana).
6.- En la ventana Posicin del Formulario, se puede ver un monitor y dentro de l una ventanita, esto
sirve para definir la posicin de la ventana cuando se inicie el programa, es decir donde se va a
mostrar. Pruebe hacer clic sobre la ventana (sin soltar el botn!) y arrastre la ventana dentro del
monitor, luego suelte el botn del Mouse. Y cuando se ejecute la aplicacin la ventana aparecer en
esa posicin.
7.- La Ventana propiedades muestra todas las propiedades del control actualmente seleccionado, en
este caso muestra las propiedades del Form1, luego podemos ver que abajo dice "Form1 Form", lo
que est en negrita es el nombre del objeto, y lo que le sigue es el tipo de objeto, en este caso es un
Formulario (Form).
8.- En la ventana Posicin del Formulario, se puede ver un monitor y dentro de l una ventanita, esto
sirve para definir la posicin de la ventana cuando se inicie el programa, es decir donde se va a
mostrar. Pruebe hacer clic sobre la ventana (sin soltar el botn!) y arrastre la ventana dentro del
monitor, luego suelte el botn del Mouse. Y cuando se ejecute la aplicacin la ventana aparecer en
esa posicin.
8.- El Explorador de proyectos es donde visualizamos todas los Formularios(Ventanas), Mdulos,
Clases, entre otros del proyecto actualmente abierto, es decir de la aplicacin que se est creando, en
este caso hay un solo Formulario llamado Form1, lo que aparece dentro de parntesis es el nombre de
archivo. Y este Formulario se encuentra dentro de una carpeta llamada "Formularios", por ser que VB
clasifica los archivos por tipos, cuando use otros tipos de archivos adems de Formularios podr
visualizar otras carpetas.
VARIABLE
Basic, desde siempre, al contrario de otros sistemas de programacin, no exigi la definicin previa de
una variable. Una variable, como Vd. seguro que conoce, es un nombre que en el programa le
asignamos a un dato. Ese dato podr cambiar.
Dim: Al declarar una variable con esta palabra estamos diciendo que la variable sea local al mbito en
que se declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no
sera accesible desde los dems procedimientos o formularios.
Public: Las variables declaradas sern publicas y podrn estar accesibles desde todos los formularios
de la aplicacin. Para conseguirlo tendremos que declararlas en un mdulo de cdigo, no en la seccin
declarations de cualquier formulario de los que conste la aplicacin. Para crear un mdulo de cdigo
en el men principal de Visual Basic marcamos en INSERT/MODULE y aparecer junto a los dems
formularios de la ventana de proyecto aunque con un icono distinto indicando que se trata de un
mdulo de cdigo.
Static: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se
destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su
valor durante todo el periodo de ejecucin de la aplicacin. De esta forma a entrar en algn
procedimiento las variables recuerdan el valor que tenan cuando se sali de l.
TIPOS DE VARIABLES
TIPO

COMENTARIO

BOOLEAN

Slo admite 2 valores TRUE o FALSE

BYTE

admite valores entre 0 y 255

INTEGER

admite valores entre -32768 y 32767

LONG

admite valores entre -2.147.483.648 y


2.147.483.647

SINGLE

admite valores decimales con precisin


simple

DOUBLE

admite valores decimales de doble precisin

CURRENCY

vlido para valores de tipo moneda

STRING

cadenas de caracteres

DATE

fechas, permite operar con ellas

Constante: Declaracin de constantes que pueden ser usadas en cualquier punto en lugar de su valor,
permitiendo cambiarlo cuando sea necesario, sin tener que cambiarlo en todos los sitios en que se
utiliza. La expresin no puede utilizar llamadas a funciones, pues la constante se calcula en tiempo de
compilacin, no en tiempo de ejecucin.
EXPRESIONES LGICAS
Existen los llamados operadores lgicos, que nos permiten establecer condiciones que dependadan
de ms de un criterio de seleccin. Todos los operadores hacen que la expresin en la que se
encuentren se evala a verdadero o falso, sin posibilidad de cualquier otro valor.
Estas expresiones son:
And: exp1 And exp2, donde se evala a verdadero s&oacutelo en el caso que el exp1 como exp2 se
evalen a verdadero. En cualquier otro caso se evala a falso.
Or: exp1 Or exp2, donde se evala a verdadero cuando alguna de las expresiones exp1 o exp2 se
evala a verdadero.
Not: Not exp1. aqu se evala a verdadero si exp1 es falso y se evala a falso si exp1 es verdadero.
Xor: exp1 Xor exp2, se evala a verdadero slo en el caso de que una y slo una de las expresiones
exp1 o exp2 se evala a verdadero.
OPERADORES DE VISUAL BASIC
En Visual Basic existe un gran nmero de operadores que se pueden utilizar para crear frmulas.
Los operadores ms utilizados en una aplicacin de Visual Basic son los siguientes:
Operador

Operacin que realiza

Suma / Concatenacin de cadenas de caracteres

Resta

Multiplicacin

Divisin

Divisin entera

Mod

Resto de la divisin entera

Exponenciacin

&

Concatenacin de cadena de caracteres

OPERADORES RELACIONALES
Los operadores relacinales que reconoce vcpp son:
Operador

Significado

==

Igual que

>

Mayor que

<

Menor que

>=

Mayor o igual que

<=

Menor o igual que

!=

No es igual que o es diferente que

SENTENCIAS

SENTENCIA DIM
Es la forma mas comn de declarar una variable como
Privada. Puede emplearse en un Procedimiento, Funcin, Formulario o Mdulo. La sintaxis es de la
siguiente forma:
Dim nombrevariable As Integer (o el tipo que sea)
Declarando una variable con la sentencia DIM, en un formulario, Funcin, procedimiento o mdulo,
el entorno de la variable ser el explicado anteriormente para una variable declarada como Privada. Es
decir, esa variable no sale del formulario, procedimiento mdulo donde se declar. Cada vez que
entremos al formulario, procedimiento o mdulo, esa variable tomar el valor cero (si es numrica) o
nulo (si es string).
Resumimos la forma de declarar una variable :
En un Procedimiento (La variable no puede usarse fuera de esta Procedimiento)
Dim Variable As Tipovariable
En un Formulario (En su seccin de declaraciones)

SENTENCIAS CONDICIONALES.

Llamamos sentencias condicionales a aquellas que se realizan si se cumple una determinada


condicin. Son las sentencias por las que empieza cualquier texto de Basic, y este no va ser menos.
La sentencia condicional mas usada es:
Si se cumple una condicin Entonces
Realiza estas instrucciones
Si no se cumple
Realiza estas otras instrucciones
Fin de la sentencia.
As de fcil es programar en Basic. Lo que ocurre es que esta herramienta habla ingls, y lo descrito
anteriormente toma la forma:
If condicin Then
Instrucciones
Else
Otras instrucciones
End If

LA SENTENCIA SELECT
La sentencia SELECT "selecciona" los campos que conformarn la consulta, es decir, que establece
los campos que se visualizarn o compondrn la consulta. El parmetro 'lista_campo' est compuesto
por uno o ms nombres de campos, separados por comas, pudindose especificar tambin el nombre
de la tabla a la cual pertenecen, seguido de un punto y del nombre del campo correspondiente. Si el
nombre del campo o de la tabla est compuesto de ms de una palabra, este nombre ha de escribirse
entre corchetes ([nombre]). Si se desea seleccionar todos los campos de una tabla, se puede utilizar el
asterisco (*) para indicarlo.
Una sentencia SELECT no puede escribirse sin la clusula FROM. Una clusula es una extensin de
un mandato que complementa a una sentencia o instruccin, pudiendo complementar tambin a otras
sentencias. Es, por decirlo as, un accesorio imprescindible en una determinada mquina, que puede
tambin acoplarse a otras mquinas. En este caso, la clusula FROM permite indicar en qu tablas o
en qu consultas (queries) se encuentran los campos especificados en la sentencias SELECT. Estas
tablas o consultas se separan por medio de comas (,), y, si sus nombres estn compuestos por ms de
una palabra, stos se escriben entre corchetes ([nombre]).
Tenemos aqu algunos ejemplos de mandatos SQL en la estructura SELECT...FROM...:
SELECT nombre,apellidos FROM clientes;
Selecciona los campos 'nombre' y 'apellidos' de la tabla 'clientes'.
SELECT clientes.nombre, producto FROM clientes, productos;
Selecciona el campo 'nombre' de la tabla 'clientes', y el campo 'producto' de la tabla productos.
Hay que tener en cuenta que si dos tablas poseen el mismo nombre de campo (un 'nombre' de cliente
y un 'nombre' de producto, hay que especificar tambin la tabla a la cual pertenece dicho campo, ya,
que de lo contrario, seleccionara ambos nombres).
SELECT pedidos.* FROM pedidos;
Selecciona todos los campos de la tabla 'pedidos'.
SELECT * FROM pedidos;
Selecciona todos los campos de la tabla 'pedidos'.
SELECT nombre, apellidos, telefono FROM clientes;

Selecciona los campos 'nombre', 'apellidos' y 'telefono' de la tabla 'clientes'. De esta manera
obtenemos una agenda telefnica de nuestros clientes.
SELECT [codigo postal] FROM [tabla morosos];
Selecciona el campo 'codigo postal' de la tabla 'tabla morosos'.
BUCLE POR CONTADOR
Realiza el bucle tantas veces como le indiquemos. Por ejemplo, en este bucle nos va a presentar las
26 letras maysculas del alfabeto ingls

For N=65 To 90
Label1.caption = Chr ( N )
Next N

Este "programa" nos presentar en una caja (Label) los caracteres cuyo nmero ASCII vaya desde el
65 (A) al 90 (Z) Comenzar presentando el correspondiente al nmero 65, e ir presentando
sucesivamente el 66, el 67, etc., hasta llegar al 90, donde se parar.

BUCLES POR CONDICIN


Ejecuta las instrucciones del bucle mientras se cumple una condicin
X=0
Do While X < 1000
X=X+1
Loop
El programa toma una variable ( X ) que previamente tuvimos la curiosidad de ponerla a cero, e
incrementa su valor una unidad. Analiza si el valor de X es menor que 1000, y si es cierto, vuelve a
realizar el bucle. As hasta que X ya no sea menor que 1000. Al dejar de cumplirse que X sea menor
que 1000, sale del bucle. Acabamos de realizar un temporizador, y tambin de exponer las sentencias
condicionales y los bucles, inicio de cualquier curso de Basic. Como final de leccin, se propone un
problema. Con el primer bucle, donde visualizbamos los caracteres A a la Z, posiblemente no nos
diese tiempo de ver cada una de las letras que iban apareciendo en la pantalla, en la etiqueta Label1,
dado que cambiara con mucha velocidad, y solamente veramos la Z, que es donde se detuvo el
programa. Podemos poner un temporizador cada vez que presente una letra, y as nos dar tiempo a
verla. Con los dos bucles vistos anteriormente ya podemos hacerlo. Si lo que queremos es que el
programa se ejecute mientras no se cumpla una determinada condicin, la sentencia ser:
X=0
Do Until X > 1000
X=X+1
Loop
Observe que la diferencia entre una y otra es la condicin, While para indicar Mientras se cumpla
que ... y Until para indicar Mientras no se cumpla que ....
Utilizaremos la condicin de While para: (Mientras se cumpla la condicin)
For N=65 To 90

Label1.caption = Chr ( N )
Label1.RefreshN ' Refresca la etiqueta
X=0
Do While X < 1000
X=X+1
Loop
Next N
La instruccin de la clusula Else, slo se ejecuta cuando el resto de condiciones han fracasado.
Cualquiera de los bloques de instruccin puede contener un nmero arbitrario de instrucciones,
incluida la posibilidad de que existan otras instrucciones IF-THEN-ELSE. Se pueden colocar todas las
sentencias de cdigo que queramos en cada uno de los bloques de sentencias, siempre que cada
sentencia vaya en una lnea distinta..
Un ciclo similar a el 'Do While' es el 'Loop While'. La principal diferencia es que el ciclo Do While la
condicin para poder continuar esta al principio (primero ceha la condicin y luego ejecuta el cdigo
que se desea repetir), mientras que en el Loop While esta al final, esto es despus de que ejecuta el
cdigo checa si debe continuar. Esto significa que un ciclo Do While, puede nunca ser ejecutado,
mientras que un ciclo Loop While siempre al menos se ejecutar una vez.
Cuando existe un gran nmero de instrucciones a evaluar es aconsejable utilizar otra estructura de
decisin, como puede ser las instruccinSelect Case. Esta instruccin no d ms potencia al lenguaje,
pero hace que el cdigo sea ms legible y eficiente. Esta sentencia permite realizar operaciones
diferentes dependiendo del valor de una variable.
La estructura de repeticin For...Next es adecuada cuando conocemos el nmero de veces que debe
repetirse un conjunto de instrucciones y deseamos reducir la cantidad de cdigo escrito.
Otra estructura de repeticin es Do...Loop. Esta estructura se utiliza cuando desconocemos cuntas
veces se ha de ejecutar el bucle.
Si utilizamos While el bucle se repite mientras la condicin se cumpla y si utilizamos Until el bucle se
repetir hasta que la condicin d valor verdadero. Con While, la condicin es comprobada al principio
del bucle, por lo que si no se cumple al iniciarse, el cuerpo del bucle no se ejecutar. Con Until se
comprueba a la salida del bucle, por lo que por lo menos, una vez se ejecutar el bucle.
Los siguientes comandos pueden ser usados para repetir varias veces la ejecucin de una seccin de
cdigo.
Ciclo Do (Sintaxis):
Do While condicin
lneas de cdigo
Loop
Ciclo While (Sintaxis):
Do
lneas de cdigo
Loop While condicin
Los ciclos For si los programadores saben cuantas veces un cliclo debe ser ejecutado.
Ciclo For (Sintaxis):

For contador = valor_inicial To valor_final [Step incremento]


lneas de cdigo
Next [contador]
If estructura de decisisn
If en Lnea simple
End If
El If de multi-lnea necesita una expresin 'End If' para definir el final del bloque If.
Si cualquiera de las dos condiciones es falsa, el programa ejecutar el cdigo que est en el bloque
'Else'.
El comando 'ElseIf' puede usarse para checar una segunda condicin en caso de que la primera sea
falsa.
Select' define el final del bloque de casos. Si deseamos que presente un mensaje si se introduce un
valor no definido en el bloque de casos,
El incremento en Step como parte del ciclo, es usado para decirle a VB cuanto debe aumentar en cada
ciclo la variable de control. Introduce el siguiente cdigo y observa que valores se imprimen.:
For test = 1 To 10 Step 2
Print test
Next test
Una de las mas poderosas caractersticas de cualquier computador es la capacidad que tiene de tomar
decisiones.
Es decir al comparar dos alternativas diferentes el computador puede tomar una decisin basndose
en la evaluacin que hace de alguna condicin.
ejemplo de instrucciones condicionales:
si sueldo > 3000
desplegar rico
si no
desplegar pobre
Fin-si
si sexo = 'm'
imprime mujer
si no
imprime hombre
Fin-si
De los ejemplos observar que los caminos a seguir por el computador dependern de la evaluacin
que el computador hace con y de la condicin.
Todo lenguaje de programacin debe tener instrucciones que permitan formar condiciones e
instrucciones que pueden evaluar esas condiciones.

Pero recordar que lenguajes modernos y orientados a clientes-servidores de igual forma tienen
componentes que permiten del mismo modo al usuario tomar decisiones incluso directamente en
pantalla, es decir tambien existen los objetos, controles o componentes de seleccin y decisin en
html.
El formato general de una instruccin condicional es:
Como se observa, son cuatro partes bien diferenciadas entre si;

La propia instruccin condicional en si

La condicin

El grupo cierto de instrucciones

El grupo falso de instrucciones


Cuando el computador evala una condicin el resultado de esa evaluacin solo es evaluado de dos
maneras o la condicin es CIERTA o la condicin es FALSA.
Esto depender del valor que tenga asignado o que se haya capturado para la variable que esta en la
condicin, por ejemplo si se capturo 6000 en sueldo en el ejemplo a) entonces el computador indicara
que la condicin es CIERTA pero en otro caso si a la variable sueldo primero se le asigno un valor de
250 entonces el computador indicara que la condicin es FALSA.
Ya dependiendo del resultado de la evaluacin, el computador ejecuta las instrucciones contenidas en
el grupo de cierto o falso respectivamente.
Empezaremos el anlisis por la CONDICIN.
INSTRUCCIONES DE CONTROL DE PROGRAMA
CONDICIONES SIMPLES
En general todas las condiciones se forman con;

Variables

Operadores
Relacinales

Constante o Variables

sexo

sueldo

>

300,000

Una condicin simple se define como el conjunto de variables y/o constantes unidas por los llamados
operadores relacinales.
INSTRUCCIONES DE CONTROL DE PROGRAMA
INSTRUCCIN IF
Es la instruccin condicional mas usada en los diversos lenguajes de programacin, su formato
completo y de trabajo en vcpp es:
cargar o asignar la variable de condicin;
if (condicin)
{ grupo cierto de instrucciones;}
else
{ grupo falso de instrucciones; };

Primus.- Observar donde van y donde no van los puntos y comas;


Secundus.- La condicin va entre parntesis ;
Tertius.- Si un if no ocupa un grupo falso de instrucciones entonces no se pone el else, y la llave antes
del else si terminara con punto y coma.
Ejemplo:
<HTML>
<FORM ACTION=/CGI-BIN/tusitio/PROG2.EXE METHOD=GET>
SUELDO:<INPUT TYPE=TEXT NAME=SUELDO><BR>
<INPUT TYPE=SUBMIT VALUE=OK>
</FORM></HTML>
#using <mscorlib.dll>
#using <System.dll>
#using <lcnet.dll>
using namespace System;
void main(){
//declarando variables
int sueldo;
// capturando,cargando y convirtiendo
//los datos de la forma a las variables
sueldo = Int32::Parse(lcnet::getparametro("SUELDO"));
//construyendo y desplegando la pagina de salida
Console::WriteLine("Content-Type:text/html\n");
if (sueldo >= 3000)
{Console::WriteLine(S"RICO");}
else
{Console::WriteLine(L"POBRE");};
}//fin main
INSTRUCCIONES DE CONTROL DE PROGRAMA
CONDICIONES COMPUESTAS
En muchas ocasiones es necesario presentar mas de una condicin para su evaluacin al computador.
Por ejemplo que el computador muestre la boleta de un alumno si este estudia la carrera de medicina y
su promedio de calificaciones es mayor de 70.
Una condicin compuesta se define como dos o mas condiciones simples unidas por los llamados
operadores lgicos.
Los operadores lgicos que vcpp reconoce son;

OPERADOR

SIGNIFICADO

&&

"Y" LOGICO

||

"O" LOGICO

"NO" NEGACION

Ejemplo:
if ( (carrera=="informatica") && ( sexo=="m") ) etc, etc, etc.
Notas:
Observar que cada condicin simple lleva sus propios parentesis.
Si la variable es de tipo string el dato va entre comillas("), pero si la variable es de tipo char el dato va
entre apostrofes(').
Para que el computador evale como CIERTA una condicin compuesta que contiene el operador
lgico "&&", las dos condiciones simples deben ser ciertas.
Para que el computador evale como CIERTA una condicin compuesta que contiene el operador
lgico "||", basta con que una de las condiciones simples sea cierta.
La cantidad total de casos posibles cuando se unen dos o mas condiciones simples esta dada por la
relacin donde n = cantidad de condiciones, la primera mitad de ellos empieza en cierto y la segunda
mitad en falso.
Ejemplo, si formamos una condicin compuesta con dos condiciones simples y el operador lgico "y",
la cantidad total de casos posibles serian , y se puede construir la siguiente tabla de verdad.
Tabla de verdad con "y"
IRA COND SIMPLE

2DA COND SIMPLE

EVALUACION

La evaluacin final, se obtiene usando la regla anteriormente descrita para una condicin compuesta,
que contiene el operador "Y".
Esta tabla significa lo siguiente;
1.- Cualquiera que sean la cantidad de datos procesados, siempre caer en uno de estos cuatro casos
generales.
La tabla de verdad para una condicin compuesta con "Or" es la siguiente;
IRA COND SIMPLE

2DA COND SIMPLE

EVALUACION

Construir una tabla de verdad para una condicin compuesta de tres o mas condiciones simples, es
tambin tarea sencilla, solo recordar que;
1.- La cantidad posible de casos es posible, la mitad empiezan con Cierto y la otra mitad empiezan con
Falso.
2.- Para evaluar esta condicin triple primero se evalan las dos primeras incluyendo su operador bajo
las reglas ya descritas y luego se evala el resultado parcial contra la ultima condicin y ultimo
operador para obtener la evaluacin final.
Ejemplo una condicin compuesta de tres condiciones simples, donde el primer operador lgico es el
"y" y el segundo operador lgico es el "O", dara la siguiente tabla de verdad.
Ira cond

2da cond

Eval 1a Y 2a

3ra cond

Eval eval O 3ra

CAPTION:
Representa es texto que aparecer en el men.
NAME:
Es el nombre del control. Se puede anteponer el prefijo mnu ms el texto del ttulo del men.
CHECKED:
Establece si debe aparecer una marca de verificacin a la izquierda del texto del objeto del men. La
marca la puedes utilizar cuando deseas informar de la opcin que est activada en un momento
determinado.
ENABLED:
Indica si el objeto podr recibir eventos del usuario. Si tiene el valor False el elemento aparecer
atenuado en el men.
VISIBLE:

Indica si el objeto debe mostrarse o no, si se establece este valor a False, los elementos situados a la
derecha ocupan el lugar del elemento no visible.
WINDOWSLIST:
Establece el valor que determina si un objeto de men mantiene una lista de las ventanas MDI
secundarias del formulario actual. Elementos del Men:
Utilizando los botones de sangra se puede determinar el nivel del objeto men que quieras
seleccionar. As, los ttulos de men se sitan en el nivel superior, mostrndose en la lista inferior del
editor de mens, lo ms a la izquierda posible. En muchas aplicaciones se pueden ver unas barras
horizontales en los mens desplegables que realizan la funcin de dividir en secciones dichos mens.
Este elemento es conocido como un separador, y sirve para separar aquellos comandos del men que
tengan_un_motivo_en_comn.
Para crear un separador, basta con introducir un guin (-) en la propiedad Caption. No se puede crear
un elemento en un nivel inferior inmediatamente despus de un separador, es decir, no puedes tener
como ttulo de men un separador.
TECLAS DE MTODO ABREVIADO:
Al introducir el carcter & el men est creando una tecla de acceso a dicho objeto. Esta tecla se
representa subrayada en el texto de men y respresenta la tecla del teclado que el usuario puede
pulsar para ejecutar la accin. Dicha tecla se corresponde con la letra que sigue al caracter & en la
propiedad Caption del objeto men. Si se trata de un ttulo de men tienes que usar la tecla de acceso
en combinacin con la telca [Alt.]. Una vez abierto un ttulo de men y desplegado sus elementos, para
acceder rpidamente a uno de ellos, puedes usar la tecla de acceso directamente.
Tienes que tener cuidado en no utilizar las mismas teclas de acceso para elementos de un mismo nivel
de men ya que entonces no funcionarn. El editor de men tambin admite la incorporacin de teclas
de mtodo abreviado. Las abreviaturas del men son combinaciones de teclas que se pueden utilizar
en lugar de elegir el elemento del men correspondiente. Para crear una tecla de mtodo abreviado
tienes que utilizar la propiedad Shortcut, a la que puedes acceder al crear el men desde el editor de
mens.
EVENTOS DEL MEN
Cuando en tiempo de diseo seleccionamos la opcin de men de un formulario que estamos creando,
Visual Basic muestra el procedimiento de evento click de dicho elemento del men. En el caso del
ttulo del men, el procedimiento click tiene como accin predeterminada la de mostrar los elementos
de men del nivel inferior, por lo que no ser necesario tener que programar esta accin. Esto tambin
se puede aplicar a los elementos de un men que son a su vez ttulos de submens. En casi todos los
casos tienes que utilizar una opcin del men para descargar el formulario o para finalizar la
aplicacin. La opcin de texto salir suele ser el ms apropiado. La instruccin Unload descarga de
memoria el formulario que se especifique. Se puede usar de varias formas, por ejemplo si estamos
dentro de un Form llamado frmconsulta podremos salir de l de dos formas: Una es Unload Me o
Unload frmconsulta.
MSGBOX
La sntaxis completa de la funcin MsgBox es:
MsgBox(mensaje[, botones][, t&iacutetulo][, archivoAyuda, contexto])
Los valores que pueden tomar el parmetro botones son:
Constante

Valor

Descipcin

vbOKOnly

Muestra slo el botn aceptar

vbOKCancel

Botones aceptar y cancelar

vbAbortRetryIgnore

Botones anular, reintentar e ignorar

vbYesNoCancel

Botones si, no y cancelar

vbYesNo

Botones si y no

vbRetryCancel

Botones reintentar y cancelar

vbCritical

16

Muestra el icono de mensaje crtico

vbQuestion

32

Icono de interrogacin

vbExclamation

48

Icono de exclamacin

vbInformation

64

Icono de mensaje de informacin

vbAplicationModal

Cuadro de dilogo modal de la


aplicacin

vbSystemModal

4096

Cuadro de dilogo modal del sistema

El parmetro botones es de valor numrico, y adems de los botones que aparecen en le cuadro de
dilogo, tambin puede indicar el icono que acompae al mensaje y el tipo de dilogo modal que es.
Cuando un cuadro de dilogo es modal de aplicacien tienes que cerrarlo para interactuar con otra
ventana de la misma aplicacin. Cuando es un cuadro de dilogo modal del sistema, todas las
aplicaciones que estn ejecutndose se suspenden hasta que el usuario responda al cuadro de
dilogo. El cuadro InputBox se consigue a travs de la funcin InputBox. Se utiliza cuando se necesita
que el usuario introduzca alguna informacin.
LOS CONTROLES
Realmente son objetos que disponen de sus propias propiedades y mtodos, y cuya utilidad es la de
facilitarnos el desarrollo de nuestras aplicaciones. Bueno, este intento de definicin puede haber
quedado bien, pero para que lo tengis ms claro, tener en cuenta que en cualquier aplicacin con la
que trabajamos estamos rodeados de controles. Quien no ha visto en multitud de programas los
botones ACEPTAR y CANCELAR, un cuadro para introducir texto, una lista con datos, etc.. Pues todos
ellos son controles y no tendremos que preocuparnos por crearlos para nuestras aplicaciones sino que
ya vienen con el paquete de VB, lo nico que tendremos que hacer es modificar sus propiedades:
tamao, color, etc.. para incorporarlos en nuestras aplicaciones y asociarles el cdigo necesario para
que se comporten como esperamos al ejecutar la aplicacin.
Antes de empezar a conocer los controles bsicos veamos cuales son sus caractersticas generales:

Propiedades: Todos los controles disponen de una serie de propiedades las cuales
podemos cambiar al incluirlos en nuestras aplicaciones. Ejemplos de propiedades son el
color, el tipo de letra, el nombre, el texto, etc.

Mtodos: Son procedimientos asociados a los controles, es decir, rutinas ya establecidas


que podemos invocar desde nuestras aplicaciones para que se realice alguna operacin
sobre el control. Por ejemplo el control ListView ( la lista de archivos que aparece en el

explorador de windows) dispone del metodo order que te ordena los datos aparecidos en
la lista.

Eventos: Son acciones que pueden ser motivadas por el propio usuario o por mismo
sistema operativo. Ejemplos pueden ser el movimiento del raton o hacer click sobre su
botn. En Visual Basic digamos que se utiliza la programacin orientada a eventos, lo cual
es una de las diferencias ms importantes respecto a la programacin lineal de MS DOS.
No necesitamos detectar cuando se ha producido un evento determinado, Windows lo
detecta automticamente. Los eventos ya estan definidos, son bastantes y cada control
cuenta con los suyos propios, aunque son muy parecidos. Lo nico que tendremos que
hacer es asociar el cdigo necesario al evento que necesitemos tratar.
Para mostrar la ventana donde aparecen los controles que Visual Basic carga por defecto nada ms
arrancar la aplicacin tendremos que marcar en View del men principal (versin inglesa) y activar la
opcin Toolbox. Obtendremos una ventana como esta en la pantalla:
Realmente existen muchos ms controles, aunque estos son los ms utilizados y por eso aparecen por
defecto. Para tener acceso a los dems controles tanto de Visual Basic como los controles que
incorporan otras aplicaciones marcaremos en Tools/Custom Controls del men principal.
Moviendo el ratn por encima de cualquier control aparecer una pista indicndonos el control de que
se trata.
Para que esta ventana aparezca siempre en primer plano aunque no sea la ventana activa
marcaremos con el boton derecho del ratn en cualquier lugar de la ventana y activaremos la
opcin Always On Top del men contextual.
CONTROLES BASICOS
TextBox
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras
aplicaciones.
No hace falta que indiquemos las coordenadas de la situacin del formulario en pantalla, simplemente
tendremos que marcar sobre el control de la caja de herramientas y dibujarlo con el tamao que
queramos en nuestro formulario.
PROPIEDADES
Las propiedades de las que dispone el control son las siguientes:(para obtener el cuadro de
propiedades, seleccionar el control y pulsar F4 o pulsar con el boton derecho para obtener el men
contextual y marcar Propierties)
Text: Aqui indicamos el texto que aparecer en el control. Podemos asignarle cualquier texto en
tiempo de diseo o ejecucin. Tambin podemos tomar el texto que haya introducido el usuario para
tratarlo durante la ejecucin.
Name: Esta propiedad la tienen todos los controles, el nombre que viene por defecto en este caso
Text1 y es el nombre con el que se conocer el control cuando lo utilicemos en el codigo. En un mismo
formulario no puede haber 2 controles con el mismo nombre. Conviene poner un nombre que
represente la funcion que tiene el control en la aplicacion para que el codigo quede ms claro. Ejemplo,
si en el textbox vamos a introducir la direccin de una persona podemos asignale a esta propiedad el
valor Direccion.
MultiLine: Permite que introduzcamos varias lineas de texto en el control en lugar de slo una.
Alignment: Alineacion que tendr el texto dentro del control: izquierda, centro o derecha. Para que
funcione la propiedad MultiLine debe estar con el valor true.

Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el
texto que contenga. Nos puede servir para utilizar el control como salida de datos sin que el usuario
pueda modificarlos por error.
Otras propiedades que son comunes a la mayoria de los controles:
Backcolor: color de fondo.
Forecolor: color de letra.
Font: tipo y tamao de letra.
METODOS
Recordemos que por mtodos se entienten los procedimientos o funciones asociados a un control, los
cuales nos permiten realizar ciertas operaciones tiles sobre dicho control: Ej. ordenar sus elementos,
buscar un dato, etc..
Pues bien, los controles bsicos que vamos a ver en este captulo nicamente contienen mtodos
avanzados que no vamos a analizar por ahora, ya que son mtodos que no se suelen utilizar. Ms
adelante cuando veamos otros tipos de controles estudiaremos cuales son los mtodos que nos
podrn servir. Si alguien est interesado en conocer todas las caractersticas de los controles puede
hacerlo mirando en la ayuda que proporciona VB, haciendo click sobre cualquier control de la caja de
herramientas y pulsando a continuacin F1 obtendr ayuda referente a ese control donde aparecern
todas sus propiedades, metodos y eventos.
EVENTOS
Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento
del ratn. A estos eventos se les puede asociar cdigo para que se ejecute al producir el evento.
MouseMove: al mover el raton por encima del control.
Mousedown: al pulsar cualquier boton del raton
Change: al cambiar el contenido del control
Click: al hacer click con el botn izquierdo del ratn sobre el control
Doubleclick: al hacer doble click con el con el botn izquierdo del ratn sobre el control
Getfocus: este evento se activa cuando el control recibe el enfoque, es decir, cuando se activa el
control en tiempo de ejecucin para introducir datos en l o realizar alguna operacin.
Lostfocus: Es el contrario del anterior evento, se activa cuando el control pierde el enfoque, es decir,
se pasa a otro control para seguir introduciendo datos.
EJEMPLO
Vamos a probar el uso del control TextBox mediante un pequeo ejemplo en el que teniendo un nico
control de este tipo en un formulario, lo programaremos de forma que al pasar el ratn sobre el control
(evento mousemove) aparecer en el formulario el texto que contenga.
Observamos que al situar el control en el formulario aparece por defecto el texto Text1. Para que no
aparezca ese texto al ejecutar la aplicacin, debemos cambiar la propiedad Text pulsando F4 y colocar
el texto que queramos o no colocar nada.
Lo que queremos hacer es que cada vez que movamos el raton por el control aparezca su contenido
en el formulario. Entonces lo que habr que hacer abrir la ventana de cdigo, seleccionando el control
y pulsando F7, o con el botn derecho del ratn y la opcin View code del men contextual. Este
proceso nos llevar al cuadro de la imagen siguiente.

Lo que tendremos que hacer es seleccionar el evento que necesitemos de la seccin Proc, en nuestro
caso mousemove y a continuacin teclear el codigo correspondiente: La instruccin print visualiza un
texto en el formulario y si le ponemos text1.text le decimos que nos muestre la propiedad Text del
control Text1 que ese ser el nombre que tendr el control por defecto si no lo hemos cambiado en la
propiedad name.
Al ejecutar esta pequea aplicacin pulsando F5 observaremos como aparece en el formulario lo que
hayamos tecleado en el control cada vez que movemos el raton sobre el Textbox.
Podemos modificar el programa para que responda a cualquier otro evento sin ms que seleccionarlo
en la seccin Proc e introduciendo el codigo que sea necesario.
Label
Este control es tambin uno de los ms utilizados, aunque su utilidad queda restringida a la
visualizacin de datos en el mismo, no permitiendo la introduccin de datos por parte del usuario.
La forma de utilizarlo es similar a la del control anterior, dibujar el control en el formulario con el tamao
que queramos y asignarle un texto en tiempo de diseo o de ejecucin esta vez sin utilizar la propiedad
text puesto que no la incorpora, sino utilizando la propiedad caption.
Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad
de los dems controles que tengamos en la aplicacin o para indicarnos acciones que podemos
realizar. En el ejemplo anterior donde apareca un textbox en el formulario, hubiera quedado mejor con
un mensaje aclaratorio contenido en un control label:
PROPIEDADES
Caption: Es el texto que contendr el control.
Alignment: Alineacin del texto contenido en el control, no necesita que est activada ninguna otra
propiedad.
BorderStyle: Si queremos que aparezca un borde alrededor del control activaremos esta propiedad.
Para este control no se suelen utilizar los eventos ya que su contenido suele cambiar poco a lo largo
de la ejecucin de la aplicacin. De todas formas los eventos son casi los mismos del control textbox
excepto que no dispone de los eventos GetFocus y LostFocus ya que a este control no se le puede
dar el enfoque.
En la parte final de este capitulo veremos un ejemplo donde se muestra el funcionamiento de todos los
controles que vamos a ir viendo.Por ahora a ver si conseguis que ahora el mensaje no aparezca en el
formulario sino en un segundo label situado en el formulario, dejando un control label que muestre el
mensaje aclaratorio que hemos visto antes.
CommandButton
Este control es el tpico botn que aparece en todas las aplicaciones y que al hacer click sobre l nos
permite realizar alguna operacin concreta, normalmente Aceptar o Cancelar. Aunque segn el cdigo
que le asociemos podremos realizar las operaciones que queramos.
En el ejemplo anterior podemos aadir un control de este tipo para salir de la aplicacin sin tener
pulsar sobre la equis de la esquina superior derecha.
Pero slo con introducir un control de este tipo con el texto salir que se introduce a traves de la
propiedad caption no basta. Habr que asociarle un cdigo que nos permita salir de la aplicacin en el
evento adecuado. Y el evento por excelencia de este control es click. As pues accederemos al cdigo
del control y la sentencia nos permitir salir de la aplicacin es End, simplemente tecleamos esa
palabra en el evento click y comprobar que realmente finalizaremos nuestra aplicacin al pulsar sobre
dicho botn.

PROPIEDADES
Caption: Aqui pondremos el letrero que queremos que apaezca en el botn: aceptar, cancelar, salir,
etc.
Enabled: Esta es una nueva propiedad, cuando su valor es true el botn funciona normalmente,
cuando su valor es false el boton se encuentra desactivado, no responde a los eventos producidos
sobre l y el texto aparece en un gris claro advirtiendonos de su estado. Podemos utilizar esta
propiedad para activar o desactivar un boton dependiendo del estado de otros controles. Por ejemplo,
en un boton Aceptar, no activarlo hasta que se haya introducido una cantidad en un control textbox, ya
que ese botn nos calcular el IVA de la cantidad.
EVENTOS
Click: Es el evento tpico de este control y el que ms se utiliza.
MouseMove: Como sabemos detecta el movimiento del ratn sobre el control. Puede servir para que
aparezca un mensaje en un control Label que nos aporte informacin sobre la utilidad del control
ampliando el texto que hayamos colocado como caption del commandbutton.
OptionButton
Este control nos permite elegir una opcin entre varias de las que se nos plantean. Cada opcin ser
un control optionbutton diferente.
Facilita la introduccin de datos por parte del usuario:
De todas las opciones que se nos ofrece, en este caso los 4 colores, slo podremos activar una. Si
activamos cualquier otra opcin, se desactivar automticamente la ltima que tenamos activada.
El marco que est alrededor de los 4 controles optionbutton se trata del control Frame , es opcional,
aunque es conveniente colocarlo siempre que hagamos uso de las opciones. No slo por motivos de
presentacin sino porque de esta manera podremos establecer grupos de controles optionbutton
independientes en los que en cada grupo slo pueda haber una opcin activada a la vez. Tambin, al
mover el marco se movern los controles incluidos en l facilitndonos las modificaciones.
Para que los controles Optionbutton queden englobados dentro de un control Frame, primero
tendremos que colocar el control Frame en el formulario con el tamao adecuado y despues ir
colocando los controles Optionbutton dentro del Frame.
Del control Frame la nica propiedad que nos interesar es caption, que es el texto que aparecer en
el encabezado, en el ejemplo anterior: colores.
PROPIEDADES DE OPTIONBUTTON
Caption: El texto que aparecer al lado del control: Rojo, verde, etc.
Value: Es el valor que tendr el control: True si se encuentra activado y False si no lo est. Para
comprobar que opcin ha activado el usuario comprobaremos el estado de esta propiedad.
Alignment: Alineacin del texto respecto al control: Left Justify: el control aparece a la izquierda del
texto. Es el ejemplo anterior.Right Justify: el control aparece a la derecha del texto.
Los eventos del control son los mismos que en anteriores controles, aunque no se suele asociar cdigo
a los eventos de este tipo de controles, sino nicamente conocer el valor que tienen: true o false.
Aplicacin de ejemplo
Para practicar con los controles que hemos visto vamos a realizar una pequea aplicacin que
consistir en realizar con 2 nmeros que introduzcamos, una operacin que seleccionemos y mostrar
el resultado.

El formulario donde estarn todos los controles es el siguiente:


La propiedad Caption de cada uno de los controles es la que se muestra en el formulario.
He modificado la propiedad Name de cada control para que al utilizarlos desde el codigo sepamos cual
es el control con el que trabajamos:

Los controles TextBox tienen los nombres: Num1, Num2 y Resul.

Los controles Optionbutton tienen cada uno de ellos el mismo nombre que su caption

Los controles CommandButton tienen los nombres: Calcular, Limpiar y Salir.

A los controles Label y al Frame no have falta cambiarles el nombre.


Lo que habr que hacer ahora es asociar codigo a cada uno de los botones que es de donde se van a
realizar las operaciones:

Para el botn Calcular que es el que nos mostrar el resultado segn la operacin
seleccionada, he utilizado la instruccin If Then Else que vimos en el captulo anterior:

El botn Limpiar Datos nos va a servir para borrar de una forma rpida los datos
introducidos por el usuario y el resultado preparando los controles para introducir nuevos
datos. El cdigo que tendremos que introducir es muy simple

El botn Salir nicamente contendr la sentencia End.

Вам также может понравиться