Documentos de Académico
Documentos de Profesional
Documentos de Cultura
F6f9ea PDF
F6f9ea PDF
INDICE
Capitulo 01 - La interfaz
Capitulo 02 - El men principal
Capitulo 03 - Tools (Primera parte)
Capitulo 04 - Tools (Segunda parte)
Capitulo 05 - Sistemas de numeracin
Capitulo 06 - Variables
Capitulo 07 - Operaciones Lgicas y Matemticas
Capitulo 08 - Mi primer programa: Un led parpadeante
Capitulo 09 - Mi segundo programa: Usando un pulsador
Capitulo 10 - IF - THEN - ELSE ENDIF
Capitulo 11 - FOR-TO-STEP-NEXT
Capitulo 12 - WHILE - END
Capitulo 13 - LOOKUP
Capitulo 14 - SHIFTLEFT y SHIFTRIGHT
Capitulo 15 - MODULOS
CAPITULO 01 LA INTERFAZ
Debido a que se trata de un software concebido desde el vamos como un entorno,
la integracin entre los diferentes mdulos que lo componen es completa y sin
problemas.
Una vez instalado el programa, el icono que lo representa aparecer en nuestro
escritorio, y haciendo doble clic sobre el se abrir la pantalla principal del
programa, que al menos hasta la versin sobre la que se desarrolla este tutorial (la
5.91) esta en ingles:
Antes de ver en que consiste cada opcin del men principal, vamos a analizar
rpidamente
cada
seccin
de
esta
pantalla:
En la parte superior, y justo debajo de la barra de men tenemos tres cuadros de
texto que nos muestran la ruta completa hacia el programa que tenemos cargado
en el simulador (Program Location), el microcontrolador que hemos seleccionado
segundo capitulo,
men.
muestra (cuando
es la instruccin
a ejecutar (Next
Por ultimo, y a la derecha del cuadro anterior, tenemos el valor de todos los
registros de propsito general (GPRs, o general purpose register). La lista tiene
dos columnas, cada una indicando la direccin del registro (Addr.) y su valor en
hexadecimal (Hex. Value):
Estas son: Step By Step (paso a paso), Slow (Lenta), Normal (Normal), Fast
(Rpida), Extremely Fast (muy rpida) y Ultimate (No Refresh) que es la mas
rpida de todas, pero que no actualiza la pantalla principal del simulador. Esta
opcin resulta muy til para "adelantar" partes del programa que sabemos que no
tienen problemas. Todas pueden ser invocadas con CTRL+F1 a CTRL+F6, tal como
se ve en la figura anterior.
Tools es el submen encargado de invocar a cada uno de los mdulos que integran
el simulador, y que veremos en detalle en captulos siguientes. Tal como se ve en la
figura, la mayora de ellos se pueden activar mediante la combinacin de la tecla
CTRL y alguna mas.
Hardware Stack Viewer nos permite conocer el valor de cada uno de los niveles
del stack (generalmente llamado pila en espaol). Esto puede resultar til para
depurar los programas que tienen muchas subrutinas anidadas o cuando
sospechamos que hay desbordamientos del stack. Adems de ver el nivel de stack
Existe tambin una vista alternativa del estado de los registros especiales, que
pude resultar mas cmoda en algunos casos. Es la correspondiente a la opcin
Alternative SFR Viewer, y muestra en columnas la direccin en hexa del registro,
el nombre "de pila" del mismo (TMR0, PCL, STATUS, etc), y el valor del mismo, en
hexadecimal y en binario.
Adems de los diez puntos de parada anteriores, se pueden definir cinco puntos
especiales, mediante la herramienta Special Breakpoints. La diferencia entre esta
y la anterior herramienta (y lo que la hace tan especial) es que en este caso los
puntos de inspeccin se fijan mediante una condicin (Break Condition) o por el
estado de algn registro (Register Address). Los botones SET y DEL permiten
habilitar y deshabilitar individualmente cada una de las condiciones.
El LCD Module es la versin virtual del tpico display LCD con controlador Hitachi
que usamos en todos nuestros proyectos. Es posible configurar completamente su
funcionamiento, mediante el botn Setup. Al presionarlo, la ventana aumenta su
tamao y aparecen una serie de cuadros de seleccin desde donde podremos elegir
el numero de filas y columnas del display, el color del mismo, a que puerto estn
conectadas las lneas de datos y si son 4 u 8, y donde estn conectadas (puerto y
pin) las lneas RS, R/W y E. Tambin se pueden configurar los tiempos de delay del
display, para que su simulacin sea lo mas fiel posible a la realidad.
Otras dos herramientas sumamente tiles para comprender que esta haciendo en
cada momento el microcontrolador son el osciloscopio (Oscilloscope) de cuatro
canales, con posibilidad total de configuracin de cada uno de ellos, y el Signal
Generator (generador de seales) tambin de cuatro canales y con posibilidad de
generar pulsos de periodo y relacin cclica ajustable. Por supuesto, habr captulos
en que haremos uso de ellas.
No poda faltar el modulo con los displays LED de 7 segmentos, presentes en una
gran cantidad de proyectos. En este caso, la herramienta 7-Segment LED Display
Panel nos proporciona 4 dgitos completamente configurables (nuevamente
mediante el botn Setup presente en cada uno de ellos), y podemos elegir el pin al
que esta conectada cada uno de los segmentos, si son de nodo o ctodo comn,
etc.
de las variables
Variables (ver
el nombre de la
constantemente
Sistema Decimal:
Como su nombre lo indica, el sistema decimal toma como base para construir los
nmeros potencias sucesivas del numero 10. Se utilizan los smbolos del "0" al "9",
y el peso de cada cifra esta dado por su posicin, dado que se multiplica por 10
elevado a la posicin en que se encuentra el digito menos uno. Como en todos los
sistemas de numeracin, el digito de menos "peso" es el que esta mas a la derecha,
y el de mas "peso" el que se encuentra mas a la izquierda.
Potencia
10:
Valor:
de
10^7
10^6
10^5
10^4
100
10
Dado que este sistema es el que usamos todo el tiempo, no nos detenemos a
pensar en como se construye cada numero, pero cuando leemos el numero "123"
en realidad esta "construido" de la siguiente manera:
(1 * 10^2) + (2 * 10^1) + (3 * 10^0) =
(1 * 100) + (2 * 10) + (3 * 1) =
Nibble
0101
Byte
00000101
Word
16
0000000000000101
00000101
Word
0000000000000101
Dentro de un byte (la agrupacin de bits mas comn) se numeran los bits que lo
componen de acuerdo a la siguiente convencin:
1) El bit ubicado mas a la derecha es el bit "cero".
2) Cada bit ubicado a su izquierda recibe el numero siguiente
7 6 5 4 3 2 1 0
El bit cero recibe generalmente el nombre de LSB (least significant bit o "bit menos
significativo"). De la misma manera, al ubicado mas a la izquierda se lo llama MSB
(most significant bit o "bit mas significativo"). Y nos referimos a los dems bits
intermedios por su numero de bit correspondiente: bit 2, bit 3, etc.
De todo esto podemos deducir que el tipo de dato mas pequeo que podemos
manejar es el bit, que solo puede tener dos valores: 1 o 0. Estos dos estados
representan generalmente "encendido" o "apagado", "verdadero" o "falso", "si" o
"no",
etc.
Como podemos ver en la tabla de mas arriba, el nibble es la unin de cuatro bits.
Dado que 2x2x2x2 = 16, este es el numero de valores posibles que puede tomar
Hexadecinal
0000 0001
10
0000 1010
233
11101001
E9
255
1111 1111
FF
15280
Algunos ejemplos.
Capitulo 06 - Variables:
Vamos a comenzar a ver algo de la programacin en el BASIC incluido en el
entorno PIC SIMULATOR IDE, al que en adelante nos referiremos como "BASIC", a
secas.
La programacin seria prcticamente imposible sin el uso de variables. Podemos
hacernos una imagen mental de las variables consistente en una caja en la que
podemos guardar algo. Esa caja es una de las muchas que disponemos, y tiene en
su frente pegada una etiqueta con su nombre. Estas cajas tienen ciertas
particularidades, que hace que solo se puedan guardar en ellas determinados tipos
de
objetos.
En esta analoga, cada caja es una variable, su contenido es el valor que adopta, y
la etiqueta es el nombre de la variable. Como su nombre lo indica, y como veremos
mas adelante, el contenido de una variable puede ser modificado a lo largo del
programa.
El BASIC tenemos distintos tipos de variable, segn el dato que puedan almacenar:
-
A
B
X
Y
AS
AS
AS
AS
BIT
BYTE
WORD
LONG
Tambin es posible utilizar vectores, que son una matriz de dimensiones 1xN . Por
ejemplo, la sentencia siguiente:
DIM A(10) AS BYTE
declara un vector (al que nos referiremos algunas veces como "array") de diez
elementos del tipo BYTE, que sern accedidos mediante el uso de subndice (entre
parntesis) del 0 al 9.
LA sentencia RESERVE le permite al programador reservar un numero de posiciones
de la RAM para su uso en rutinas en assembler o para el In-Circuit Debugger de
MPLAB. Simplemente, si queremos reservar 20 bytes de RAM, escribimos:
RESERVE 20
Las variables tipo Word, como vimos, estn compuestas por dos bytes. el primero
de ellos es llamado byte "alto" y el otro "bajo", dado que el primero contiene los 8
bits mas significativos. En BASIC podemos acceder individualmente a cada uno de
los bytes que componen un Word mediante las extensiones ".HB" (High byte, o
byte alto) y ".LB" (Low Byte o byte bajo) . Veamos un ejemplo:
DIM A AS BYTE
DIM B AS WORD
A = B.HB
A = B.LB 'Esto es lo mismo que A = B
B.HB = A
B.LB = A
B = A 'Esto tambin borra el byte alto de la variable B
DIM
DIM
B =
B =
A.0
A AS BYTE
B AS BIT
A.1
A.7
= A.5
Existe una "forma corta" de acceder a los bits individuales de cada port,
simplemente usando las variables BASIC tipo byte RA, RB, RC, RD, RE o bien las
tipo bit RA0, RA1, RA2, ..., RE6, RE7
RA = 0xFF
RB0 = 1
DIM X AS WORD
DIM Y AS BYTE
X = 0x3F
Y = POINTER(X)
Y = Y + 0x55
X = X - 1
POINTER(X) = Y
Y = 0xAA
X = X - 1
POINTER(X) = Y
Una forma de escribir programas que nos resulten mucho mas fciles de entender
es el uso de nombres simblicos, o SYMBOL. Un "symbol" es una cadena que
contiene cdigo, asignado a un nombre. Al momento de compilar, PIC BASIC hace
la "bsqueda y reemplazo" de nuestros smbolos y luego genera el cdigo ASM y el
HEX. Supongamos que tenemos un LED conectado al bit cero del puerto B.
Mediante SYMBOL podemos hacer:
SYMBOL LED1 = PORTB.0
Luego, si queremos encender el LED, en lugar de
DIM
DIM
A =
B =
B =
A AS BIT
B AS BYTE
TRUE
0x55
%01010101
DIM
DIM
DIM
A =
A AS WORD
B AS WORD
X AS WORD
123
DIM
DIM
DIM
X =
X =
X =
X =
X =
X =
X =
A AS BIT
B AS BIT
X AS BIT
NOT A
A AND B
A OR B
A XOR B
A NAND B
A NOR B
A NXOR B
DIM A
DIM B
A = A
PORTB
AS WORD
AS WORD
OR B
= PORTC AND %11110000
Si bien se supone que quien esta leyendo este tutorial tiene una buena idea sobre
electrnica y microcontroladores, igualmente vamos a hacer una muy breve
descripcin del circuito.
En primer lugar, vamos a aprovechar el oscilador interno del 16F628A y nos
evitaremos el xtal y condensadores asociados. El puerto B del micro (pines 6 al 13)
esta conectado a 8 LEDs mediante 8 resistencias de 220ohms, que tienen como
funcin limitar la corriente que circula por los LEDS. Estos sern nuestras "salidas".
Los pines 17 y 18, correspondientes al PORTA.0 y PORTA.1 estn conectados a
sendos pulsadores, que al ser presionados conducen 5V (un "1") al pin respectivo.
Cuando estn en reposo, las resistencias R1 y R2 se encargan de mantener el pin
en "0". Por ultimo, el pin 1 (PORTA.2) comanda un parlante mediante un transistor,
para hacer alguna prueba con sonidos.
El circuito debe alimentarse con 5v bien filtrados y regulados. Si no sabes como
construir una fuente, puedes leer algo sobre el tema aqu.
Volviendo a nuestro programa, vamos a escribir el "hola mundo" de los
microcontroladores: encender un LED.
El primer paso es, desde el men "Opciones" -> "Select Microcontroller", elegir
el PIC16F628A.
Si volvemos a la ventana principal del PIC SIMULATOR IDE, y desde "Tools" ->
"Microcontroller View" abrimos la vista del microntrolador, al darle "Start" a la
simulacin tendremos algo parecido a lo que sigue:
l pin 6, correspondiente a RB0 esta en "OFF" por que el pulsador del pin 17 (RA0)
esta en OFF. Si con el mouse hacemos un click sobre la "T" que esta al lado del pin
17, la vista del microcontrolador pasara al estado que muestra la imagen siguiente:
Recordemos que el botn "T" significa "cambio" (Toggle) por lo que el estado del
pin 17 permanecer en alto hasta que lo pulsemos otra vez, y el estado del
microcontrolador volver a ser el inicial. Como en cualquier curso, conviene realizar
estas practicas, que aunque puedan parecer muy sencillas nos ayudaran a conocer
las herramientas disponibles y "tomar confianza" al programa. Tambin es
interesante el realizar cambios en el programa BASIC, recompilar y analizar los
resultados.
El programa BASIC de este capitulo puede descargarse desde [aqu], y el
correspondiente archivo HEX desde [aqu] .
A = B THEN PORTA.0 = 1
B > A THEN A = B
B = 5 THEN A = 0
(A = 0) OR (B = 5) THEN C = 2
PORTA.0 THEN PORTB.3 = 0
TOTAL
A = 2
B = 5
C = 1
D = 0
= 0
'Le
'Le
'Le
'Le
como BYTE
como BYTE
como BYTE
como BYTE
"TOTAL" como BYTE
0 a la variable "TOTAL"
la variable "A"
la variable "B"
la variable "C"
la variable "D"
IF A = 2 THEN
A = B + (C * D)
TOTAL = A * B
ENDIF
El ejemplo anterior, la condicin A = 2 es verdadera (puesto que ese es el valor
que le asignamos a "A" mas arriba), por lo que las dos instrucciones dentro del
THEN-ENDIF se ejecutaran. Esto hace que TOTAL tome el valor de 10 (hagan las
cuentitas!). Si "A" hubiese tenido otro valor, esas dos sentencias no se ejecutaran
y TOTAL seguira valiendo "0" al terminar el programa.
Por ultimo, tenemos que saber que es posible "anidar" instrucciones IF-THENELSE-ENDIF, con lo que se pueden tomar decisiones verdaderamente complejas.
Por supuesto, tenemos que ser cautos en el uso de esta caracterstica ya que
debido a limitaciones en el tamao de la pila y cantidad de memoria disponible del
PIC podemos ocasionar un desborde y el programa colapsara. Este seria un ejemplo
de un anidamiento:
IF PORTB.1 = 1 THEN
IF A = 2 THEN
A = B + (C * D)
TOTAL = A * B
ELSE
A = 0
ENDIF
ELSE
A = 19
ENDIF
Las sentencias en color rojo corresponden a una estructura IF-THEN-ELSE-ENDIF y
las que estn en azul a la otra, que se encuentra dentro ("anidada" en) de la
primera.
TOTAL = 0
A AS BYTE
INICIO AS BYTE
FINAL AS BYTE
PASO AS BYTE
TOTAL AS WORD
INICIO = 1
FINAL = 100
PASO = 1
TOTAL = 0
'Declaro
'Declaro
'Declaro
'Declaro
'Declaro
'Asigno
'Asigno
'Asigno
'Asigno
la
la
la
la
la
variable
variable
variable
variable
variable
"1" a
"100"
"1" a
"0" a
la variable "INICIO".
a la variable "FINAL".
la variable "PASO".
la variable "TOTAL".
FOR A = 1 TO 100
TOTAL = TOTAL + A
NEXT A
'"A" va de 1 a 100 de 1 en 1
'Sumo "A" al valor de "TOTAL".
'fin del bucle.
Hay casos en que es necesario que el valor de la variable de control del bucle se
decremente en lugar de ir aumentando. En ese caso, se puede usar un valor
negativo para STEP. El siguiente ejemplo cuenta desde 50 hasta 20, de 5 en 5:
DIM A AS BYTE
Ejemplo 1: El siguiente es un bucle infinito. Como dentro del cuerpo del WHILEWEND no se cambia el valor de la variable A, esta siempre vale "0" y la condicin
del WHILE nunca es falsa, por lo que se repite eternamente:
DIM A AS BYTE
A = 0
...
WHILE A = 0
instruccion1
instruccion2
...
instruccionn
WEND
...
A AS BYTE
A AS BYTE
0
0
WHILE A < 10
A = A + 1 'Incremento la variable A
B = B + A 'Sumo a B el valor de la variable A
WEND
Capitulo 13 LOOKUP
La funcin LOOKUP puede ser utilizada para seleccionar un Byte desde una lista de
constantes del mismo tipo, de acuerdo al valor de un ndice (tambin de tipo Byte).
El resultado de la seleccin se almacena (como no!) tambin en una variable tipo
byte.
La forma de la funcin LOOKUP es la siguiente:
variable = LOOKUP(byte0, byte1, ..., byteN), indice
Veamos un ejemplo sencillo:
DIM indice AS BYTE
DIM variable AS BYTE
indice = 3
variable = LOOKUP(25, 35, 55, 70, 85, 100), indice
...
variable tendr el valor "70" (decimal) al ejecutar este cdigo. El primer elemento
de la lista, recordemos, corresponde al valor "0" de indice.
Si bien la lista puede contener un mximo de 255 elementos, que es el mximo
direccionable por una variable indice de tipo byte, hay que asegurarse que el
microcontrolador que estamos empleando tenga memoria suficiente para
albergarla.
El segundo ejemplo, extrado de la propia ayuda del PIC SIMULATOR IDE,
nos muestra como manejar un display LED de siete segmentos conectado al
puerto B:
Lo que hace el programa es muy sencillo: enciende los dos primeros bits del
PORTB, espera un tiempo, los desplaza hacia la izquierda, si esos bits llegaron al
extremo de la variable tipo byte que es el PORTB, se invierte el sentido del
desplazamiento. La siguiente animacin flash ilustra el efecto, tal como se puede
ver en el simulador:
Capitulo 15 - MODULOS
Usar memoria interna de EEPROM
Tener acceso a la memoria de los datos de EEPROM puede ser programado usando
READ y WRITE declaraciones. La primera discusin es la direccin de un octeto en
memoria de EEPROM y puede ser una constante o una variable del octeto. La segunda
discusin es los datos se leen o se escriben que (para la declaracin READ debe ser una
variable del octeto). Se sugiere para mantener interrupciones inhabilitadas durante la
ejecucin de
DIM A AS BYTE
DIM B AS BYTE
A = 10
READ A, B
WRITE 11, B
Usando interrupciones
La rutina de la interrupcin se debe poner como el resto de subprogramas despus de la
declaracin END. Debe comenzar con ON INTERRUPCIN y terminar con la
declaracion RESUMEN. Si las operaciones aritmticas, los rdenes o algunas otras
declaraciones complejas se utilizan en rutina de la interrupcin, entonces EXCEPTO la
declaracin SAVE SYSTEM debe ser colocado a la derecha despus de la declaracin ON
INTERRUPT para ahorrar el contenido de los registros usados por el sistema. ENABLE y
DISABLE las declaraciones puede ser utilizado en programa principal controlar el bit de
GIE en registro de INTCON. La declaracin RESUME fijar el bit de GIE que permitir
nuevas interrupciones. Por ejemplo:
DIM A AS BYTE
A = 255
TRISA = 0
PORTA = A
INTCON.INTE = 1
ENABLE
END
ON INTERRUPT
A = A - 1
PORTA = A
INTCON.INTF = 0
RESUME
DIM T AS WORD
T = 0
TRISA = 0xFF
ADCON1 = 0
TRISB = 0
OPTION_REG.T0CS = 0
INTCON.T0IE = 1
ENABLE
loop:
ADCIN 0, PORTB
GOTO loop
END
ON INTERRUPT
SAVE SYSTEM
T = T + 1
INTCON.T0IF = 0
RESUME
DIM I AS BYTE
HSEROPEN 19200
loop:
HSERIN I
HSEROUT "Number: ", #I, CrLf
GOTO loop
DIM I AS BYTE
HSEROPEN 19200
loop:
HSERGET I
IF I > 0 THEN
HSEROUT "Number: ", #I, CrLf
WAITMS 50
ENDIF
GOTO loop
DIM I AS BYTE
loop:
SERIN PORTC.7, 9600, I
SEROUT PORTC.6, 9600, "Number: ", #I, CrLf
GOTO loop
DEFINE LCD_BITS = 8
DEFINE LCD_DREG = PORTB
DEFINE LCD_DBIT = 0
DEFINE LCD_RSREG = PORTD
DEFINE LCD_RSBIT = 1
DEFINE LCD_EREG = PORTD
DEFINE LCD_EBIT = 3
DEFINE LCD_RWREG = PORTD
DEFINE LCD_RWBIT = 2
DIM ADDR AS WORD
DIM DATA AS BYTE
SYMBOL SDA = PORTC.2
SYMBOL SCL = PORTC.3
LCDINIT 3
WAITMS 1000
FOR ADDR = 0 TO 31
LCDCMDOUT LcdClear
DATA = 255 - ADDR
I2CWRITE SDA, SCL, 0xA0, ADDR, DATA
LCDOUT "Write To EEPROM"
LCDCMDOUT LcdLine2Home
LCDOUT "(", #ADDR, ") = ", #DATA
WAITMS 1000
NEXT ADDR
FOR ADDR = 0 TO 31
LCDCMDOUT LcdClear
I2CREAD SDA, SCL, 0xA0, ADDR, DATA
LCDOUT "Read From EEPROM"
LCDCMDOUT LcdLine2Home
LCDOUT "(", #ADDR, ") = ", #DATA
WAITMS 1000
NEXT ADDR
AllDigital
Define SPI_CS_REG = PORTC
Define SPI_CS_BIT = 0
Define SPI_SCK_REG = PORTC
Define SPI_SCK_BIT = 3
Define SPI_SDI_REG = PORTC
Define SPI_SDI_BIT = 4
Define SPI_SDO_REG = PORTC
Define SPI_SDO_BIT = 5
SPIPrepare
Define LCD_BITS = 8
LCD_BITS = 8
LCD_DREG = PORTD
LCD_DBIT = 0
LCD_RSREG = PORTE
Los tres ltimos parmetros pueden ser fijados a los valores ms bajos cuando se utiliza
el mdulo LCD integrada simulador. Si R / W se conecta a la lnea de
microcontroladores y LCD_READ_BUSY_FLAG parmetro se pone a 1 usando
DEFINE directiva, entonces estos parmetros demora ser ignorado por el compilador y
el momento correcto ser ejecutado por la lectura de la situacin de la bandera ocupado
en la pantalla LCD.
LCDINIT declaracin debe ser colocado en el programa antes de cualquier de las
declaraciones LCDOUT (utilizada para el envo de datos) y LCDCMDOUT (utilizada
para el envo de comandos). La constante numerica argumento de LCDINIT se utiliza
para definir el tipo de cursor:
DEFINE LCD_BITS = 8
DEFINE LCD_DREG = PORTB
DEFINE LCD_DBIT = 0
DEFINE LCD_RSREG = PORTD
DEFINE LCD_RSBIT = 1
DEFINE LCD_EREG = PORTD
DEFINE LCD_EBIT = 3
DEFINE LCD_RWREG = PORTD
DEFINE LCD_RWBIT = 2
DIM A AS WORD
A = 65535
LCDINIT 3
WAITMS 1000
loop:
LCDOUT "I am counting!"
LCDCMDOUT LcdLine2Home
LCDOUT #A
A = A - 1
WAITMS 250
LCDCMDOUT LcdClear
GOTO loop
Las declaraciones relacionadas LCD tendr control sobre TRIS registros relacionados
con los pines utilizados para interfaz LCD, pero si usted utiliza los pines PORTA
PORTE en los dispositivos con A / D Converter Mdulo entonces debe tomar el control
sobre el registro ADCON1 utilizado para fijar las patillas como digital I / O.
Usted puede configurar hasta ocho caracteres definidos por el usuario que se utilizar en
FORO DE TODO EN ELECTRONICA PAGINA51 - goslock
GLCD_DREG - define el puerto cuando las lineas de datos (tiene que ser un
puerto de 8 bits)
GLCD_RSREG - define el puerto RS cuando est conectado a la lnea
GLCD_RSBIT - define el pin RS cuando est conectado a la lnea
GLCD_EREG - define el puerto donde E es conectado a la lnea
GLCD_EBIT - define el pin donde E es conectado a la lnea
GLCD_RWREG - define el puerto en el R / W est conectado a la lnea
GLCD_RWBIT - donde se define el pin R / W est conectado a la lnea
GLCD_CS1REG - define el puerto donde CS1 est conectado a la lnea
GLCD_CS1BIT - define el pin donde CS1 est conectado a la lnea
GLCD_CS2REG - define el puerto donde CS2 est conectado a la lnea
GLCD_CS2BIT - define el pin donde CS2 est conectado a la lnea
La declaracion GLCDINIT debe ser colocado en algn lugar al comienzo del programa
bsico antes de cualquier otra declaracion relacionada con el modulo Grafico LCD.
Las declaraciones relacionadas con el modulo Grafico LCD tendr control sobre TRIS
registros relacionados con las clavijas utilizadas para LCD de interfaz, pero si utiliza los
pines de los puertos donde esten los Modulos A / D y / o mdulos de la comparacin,
debe tomar el control Durante el registro correspondiente (s) (ADCON1, ANSEL,
CMCON)
para
ajustar
las
pines
utilizadas
como
digital
O.
DIM I AS BYTE
DIM J AS BYTE
GLCDINIT
FOR I = 0 TO 127
FOR J = 0 TO 63
GLCDPSET I, J
NEXT J
NEXT I
1: 10-bit, 244Hz
2: 10-bit, 977Hz
3: 10-bit, 3906Hz
4: 9-bit, 488Hz
5: 9-bit, 1953Hz
6: 9-bit, 7813Hz
7: 8-bit, 977Hz
8: 8-bit, 3906Hz
9: 8-bit, 15625Hz
10: 7-bit, 1953Hz
11: 7-bit, 7813Hz
12: 7-bit, 31250Hz
Bobinas A y C son en realidad parte de una sola bobina con conexin comn. Lo mismo
es vlido para B, D bobina y conexiones.
Tambin hay STEP_MODE parmetro utilizado para definir el modo de conducir. Si se
pone a 1 (por defecto) ser el motor impulsado por completo el modo de paso. El valor
2 se debe utilizar para el modo de medio paso. La primera declaracin de base que se
debe utilizar es STEPHOLD. Se utilizan las clavijas como configurar los productos y
tambin energizar AyB bobinas para fijar el rotor en su posicin inicial. Para mover el
rotor en sentido horario y en sentido direcciones hay STEPCW y STEPCCW
declaraciones disponibles. Su primer argumento es el nmero de rotor medidas que se
llevarn a cabo y que pueden ser de tipo Byte de datos constante o variable. El segundo
argumento define la demora entre pasos consecutivos expresada en microsegundos por
un Byte o Word tipo de datos constante o variable. Si se utiliza STEPCW declaracin
resultados rotor en movimiento en direccin a continuacin la configuracin de la
conexin para el B y D bobinas deben intercambiar. He aqu dos ejemplos (el segundo
ejemplo se utiliza retrasos adecuados para la simulacion):
AllDigital
ADCON1 = 0x0E
Define STEP_A_REG = PORTB
Define STEP_A_BIT = 7
Define STEP_B_REG = PORTB
Define STEP_B_BIT = 6
Define STEP_C_REG = PORTB
Define STEP_C_BIT = 5
Define STEP_D_REG = PORTB
Define STEP_D_BIT = 4
Define STEP_MODE = 2
WaitMs 1000
StepHold
WaitMs 1000
Dim an0 As Word
loop:
Adcin 0, an0
AllDigital
Define STEP_A_REG = PORTB
Define STEP_A_BIT = 7
Define STEP_B_REG = PORTB
Define STEP_B_BIT = 6
Define STEP_C_REG = PORTB
Define STEP_C_BIT = 5
Define STEP_D_REG = PORTB
Define STEP_D_BIT = 4
Define STEP_MODE = 2
WaitUs 300
StepHold
WaitUs 1000
loop:
StepCCW 16, 300
WaitUs 1000
StepCW 24, 300
WaitUs 1000
Goto loop
Este ejemplo puede ser muy corto mediante dos declaraciones de alto nivel especifico
en BASIC DS18S20. DS18S20START declaracin iniciar una sola conversin de
temperatura. Segn la hoja de datos del dispositivo de conversin se completar en en la
mayora de 750ms. Despus de ese perodo, el valor medido puede ser ledo por
DS18S20READT declaracin en la que requiere de dos variables de tipo Byte de datos
como argumentos. El primer argumento contendr el valor de temperatura de 0,5 grados
centgrados en las unidades (por ejemplo, el valor 100 representa la temperatura de 50
grados). El segundo argumento contendr el valor 0x00 si la temperatura es positivo y
valor 0xFF si es negativo. Por ejemplo:
DIM temp AS BYTE
DIM sign AS BYTE
DS18S20START
WAITMS 1000
DS18S20READT temp, sign
FUNCIONES AVANZADAS
La directiva STARTFROMZERO se utiliza en el compilador se inicia el programa de
cero programa de ubicacin de memoria flash (reset vector) y utilizar el programa de la
memoria disponible. Interrupcin de la rutina si se utilizan, deben ejecutarse mediante el
uso de cdigo ensamblador. El compilador tambin dejar el control de registro
PCLATH al usuario suponiendo que todo el cdigo est en la misma pgina de la
memoria del programa. Esta caracterstica avanzada se puede utilizar en el desarrollo de
aplicaciones del gestor de arranque, por ejemplo.