Microcontroladores
Microcontroladores
BASIC PARA
MICROCONTROLADORES PIC
[Link] 1/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 2/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
CONTENIDO
Prólogo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1
Capítulo I. Herramientas de Diseño. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3
[Link] 3/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
4.3.1.- Define. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.3.2.- Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .42
4.3.3.- Arrays. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3.4.- Constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.2.- Proyecto #2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.3.- Proyecto #3. Implementación de la instrucción If-Them-Else. . . . . . . .60
5.4.- Proyecto #4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.5.- Proyecto #5. Implementación de la instrucción For-Next. . . . . . . . . . . 65
5.6.- Proyecto #6. Implementación de la instrucción Frecout. . . . . . . . . . . . 68
5.7.- Proyecto #7. Implementación de la instrucción Button . . . . . . . . . . . . .76
5.7.1.- Proyecto #7.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
5.7.2.- Proyecto #7.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
5.7.3.- Proyecto #7.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
ii
[Link] 4/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
iii
[Link] 5/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
iv
[Link] 6/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 7/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
@. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
ADCin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Asm… EndAsm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .311
Branch. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .312
Button. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Call. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Clear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .315
ClearWDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316
Count . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
DTMFout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
EEPROM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
End. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
FreqOut. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .321
For… Next. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .323
Gosub. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
vi
[Link] 8/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Goto. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
High. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .324
I2Cread. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
I2Cwrite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .326
IF-Then-Else. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Input. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .328
LCDin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .329
LCDout. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .330
Low. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .331
NAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Output. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Pause. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
PauseUs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .333
Pot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
PulsIn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
PulsOut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
PWM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .337
Read . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338
Return . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Reverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340
Select Case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .340
SerIn. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .342
vii
[Link] 9/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
SerOut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .343
Sleep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
Swap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344
Toggle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .345
While-Wend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .347
Apéndice A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348
Apéndice B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .358
Apéndice C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360
Bibliografía . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362
viii
[Link] 10/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Prólogo
[Link] 11/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 12/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 1.1.
(Fuente: [Link]
[Link] 13/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 1.2.
[Link] 14/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 1.3.
Figura 1.4.
[Link] 15/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 1.5.
Figura 1.6.
[Link] 16/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 1.7.
Figura 1.7.
[Link] 17/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.1.
(Fuente: [Link]
[Link] 18/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.2.
(Fuente: [Link]
Figura 2.3.
(Fuente: [Link]
Es posible descargar una versión DEMO del compilador PIC Basic, con la
cual se pueden compilar programas con un máximo de 31 líneas de código, a
través de la dirección: [Link]
[Link] 19/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.4.
(Fuente: [Link]
Para empezar la descarga del archivo de instalación del compilador, solo hay
que hacer clic en el link señalado en la figura 2.4, e indicar la ruta en la cual
se desea que el archivo de instalación sea almacenado.
Nota Importante: Es necesario adquirir una de las versiones completas del
compilador Basic, para no tener límites en la cantidad de líneas del programa
a compilar.
En la figura
disponible del2.5 se puede
software observar
Microcode el archivo
Studio, descargado
y en la figura 2.6 se para
puedelaobservar
versión
el archivo del compilador PicBasic Pro en su versión de prueba.
10
[Link] 20/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.7.
Figura 2.8.
11
[Link] 21/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.9.
Figura 2.10.
12
[Link] 22/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Pulse “Next” para iniciar la copia de archivos (figura 2.11), y finalmente espere
que se complete la instalación (figura 2.12).
Figura 2.11.
Figura 2.12.
13
[Link] 23/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Una vez instalado Microcode Studio, es importante tomar en cuenta que antes
de iniciar este software, es necesario instalar el compilador Basic, el cual es
indispensable para la generación del código que será cargado en el
microcontrolador PIC.
Figura 2.13.
14
[Link] 24/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.14.
Figura 2.15.
15
[Link] 25/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Una vez seleccionadas las rutas de instalación del compilador, se debe hacer
clic en el botón “Install” (figura 2.16), para dar inicio a la copia de archivos.
Figura 2.16.
Figura 2.17.
16
[Link] 26/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.18.
17
[Link] 27/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.19.
Figura 2.20.
18
[Link] 28/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.21.
Figura 2.22.
19
[Link] 29/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 2.23.
20
[Link] 30/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 31/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.1.
22
[Link] 32/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
• Microcontrolador de 8 Bits.
• Memoria de programa tipo Flash de 1024 palabras de 14 bits.
• Memoria RAM de 68 bytes.
• Memoria EEPROM de datos de 64 bytes.
• Velocidad de operación de hasta 20 Mhz.
• Cuatro fuentes de interrupción.
• Posee 13 pines I/O (pines de entrada o salida).
23
[Link] 33/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.2.
Tabla 3.1
24
[Link] 34/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.3.
En total se cuenta con trece pines I/O, los cuales pueden ser programados
como entrada o salida según convenga al momento de diseñar un circuito de
control.
Los pines correspondientes al oscilador (OSC1 y OSC2) y al reset (MCLR)
deben ser siempre tomados en cuenta en el diseño de nuestros proyectos. Es
por este motivo
indispensables para que damosfuncionamiento
el correcto inicio al estudio de algunos PIC.
del microcontrolador circuitos
25
[Link] 35/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.4.
Los valores de los condensadores cerámicos vienen dados según la tabla que
se muestra a continuación:
Tabla 3.2
26
[Link] 36/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Por ejemplo, para un oscilador tipo XT, podemos utilizar un cristal de cuarzo
como el de la figura 3.5.
Figura 3.5.
Figura 3.6.
27
[Link] 37/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 38/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.8.
29
[Link] 39/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.9.
30
[Link] 40/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.10.
Una manera muy sencilla de ver el estado lógico de un pin configurado como
salida en cualquiera de los puertos de microcontrolador es a través del uso de
LEDs, como se observa en los circuitos de la figura 3.11.
31
[Link] 41/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
En el primer circuito, el LED se iluminará solo cuando el estado lógico del pin
de salida del puerto sea igual a “1”, es decir, 5 voltios.
En el segundo circuito, el LED se iluminará solo cuando el estado lógico de la
salida del puerto sea igual a “0”, es decir, 0 voltios.
Figura 3.11.
32
[Link] 42/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.12.
33
[Link] 43/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
El primer circuito en la figura 3.12 mantiene un nivel lógico alto (5V) mientras
el pulsador permanece abierto. Al presionar el pulsador, el nivel lógico en el
pin I/O del puerto pasa a ser bajo (0V).
El segundo circuito de la figura 3.12 mantiene un nivel lógico bajo (0V)
mientras el pin
lógico en el pulsador
I/O del permanece
puerto pasa abierto.
a ser altoAl(5V).
presionar el pulsador, el nivel
3.4.3. El Opto-acoplador:
Figura 3.13.
34
[Link] 44/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.14.
35
[Link] 45/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
través del cual circulará la corriente necesaria entre sus contactos, para hacer
funcionar cualquiera de estos dispositivos de potencia.
Figura 3.15.
36
[Link] 46/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3.16.
37
[Link] 47/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Estructura de un programa.
Componentes y operadores en PicBasic. Capitulo IV
B C D
Figura 4.1.
38
[Link] 48/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
39
[Link] 49/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Led1:
For Z = 0 To 9
LED = Encendido
Etiqueta Pause 1000
Subrutina
LED = Apagado
Pause 1000
Next Z
GoTo Inicio
End
40
[Link] 50/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PIC Basic cuenta con una serie de herramientas de programación entre las
cuales podemos mencionar las etiquetas, variables, identificadores,
constantes, comentarios, símbolos entre otras.
Algunas de estas herramientas son de uso obligatorio a la hora de realizar un
programa, y otras que no son de uso obligatorio, nos facilitarán el trabajo
considerablemente.
41
[Link] 51/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Parámetro Descripción
Tabla 4.1.
Nombre de Tipo de
VAR Descripción
la Variable Variable
A1 Var Bit Toma los valores 0 y 1 unicamente
Temp Var Byte Toma valores entre 0 y 255 (8 bits)
dig1 Var Word Toma valores entre 0 y 65535 (16 bits)
Tabla 4.2.
42
[Link] 52/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
43
[Link] 53/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 54/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 4.4.
Tabla 4.5.
Con
comoestos operadores
lo demuestra resultaejemplo:
el siguiente muy sencillo realizar operaciones binarias,
Si aplicamos una AND lógica, donde deseamos filtrar los siete bits más
significativos del valor almacenado en la siguiente variable:
Var1 = %00101001
Entonces,
Var1 = Var1 & %00000001
45
[Link] 55/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 4.6.
4.3.9.- Operadores
establecer Lógicos:
condiciones Los operadores
entre variables lógicos de
y son utilizados son
la utilizados para
misma manera
que los operadores de comparación.
Operador Descripción
AND AND Lógico
OR OR Lógico
XOR XOR Lógico
NOT NOT Lógico
NOT AND NAND Lógico
NOT OR NOR Lógico
NOT XOR NXOR Lógico
Tabla 4.7.
Ejemplo:
If Var1 = 1 and Var2 = 3 And Var3 = 5 Then Goto inicio
46
[Link] 56/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.1.
47
[Link] 57/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 1
Componentes Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
LED 2
Resistencia de 220 Ohm 2
Fuente regulada de 5 Vdc 1
Tabla 5.1.
•
El Led 2serseconfigurado
deberá encuentra igualmente
conectado en el pin
como RB0 del puerto B, el cual
“Salida”.
Note que el ánodo del diodo LED se encuentra conectado al pin de salida del
puerto, por lo tanto para que encienda el LED debemos hacer salir un 1 lógico
por el pin correspondiente.
Como los pines de los puertos pueden ser configurados como “entradas” o
como “salidas”, es importante tomar en cuenta los registros de configuración
de puertos, los cuales para el caso específico del PIC16F84 son dos:
48
[Link] 58/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Registro TrisA
1 1 1 1 0
Bit menos
significativo
RA4 RA3 RA2 RA1 RA0
Figura 5.2.
1 = Entrada (Al configurar un bit del registro TrisA en “1”, éste se comporta como entrada).
0 = Salida (Al configurar un bit del registro TrisA en “0”, éste se comporta como salida).
Al ver la figura 5.2, se puede observar que el pin RA0 ha sido configurado
como salida y el resto de los pines como entrada.
En PicBasic, este paso se realiza de la siguiente manera:
TrisA = %11110 (“%” para expresar la configuración en Binario), ó:
TrisA = $1E (“$” para expresar la configuración en Hexadecimal)
Registro TrisB
1 1 1 1 1 1 1 0
Bit menos
RB7 RB6 RB5 RA4 RA3 RA2 RA1 RA0 significativo
Figura 5.3.
1 = Entrada (Al configurar un bit del registro TrisB en “1”, éste se comporta como entrada).
0 = Salida (Al configurar un bit del registro TrisB en “0”, éste se comporta como salida).
49
[Link] 59/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Para el caso particular del puerto B, se puede observar que el pin RB0 ha sido
configurado como salida y el resto de los pines como entrada.
“Consideramos importante configurar los pines que no estarán en uso como
entrada, ya que de esta forma podemos evitar daños en el hardware interno
del microcontrolador al experimentar con éste en un tablero de pruebas.”
La configuración en PicBasic para el registro TrisB, ajustada al ejemplo de la
figura 5.3 sería entonces la siguiente:
TrisB = %11111110 (si se desea hacer la notación en binario), ó:
HIGH
50
[Link] 60/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LOW
GOTO
PAUSE
51
[Link] 61/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
52
[Link] 62/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.4.
53
[Link] 63/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Modelo
Com ilar
Compilar y del uC.
Grabar
el PIC en
Figura 5.5.
Figura 5.6.
54
[Link] 64/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.7.
55
[Link] 65/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
4
s
io
lt 3
o
V
0
1 4 7 10 13 16 19 22 25 28 31 34 37 40 43 46 49 52 55 58 61
Tiempo
Figura 5.8.
56
[Link] 66/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
5.2.- Proyecto #2: En este ejemplo conectaremos un Led en cada pin del
puerto B, el cual a su vez deberá ser configurado como salida para garantizar
el correcto funcionamiento del mismo. En la figura 5.9 podemos observar en
detalle la conexión del circuito eléctrico que deberá ser montado.
Figura 5.9.
Proyecto # 2
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor de 33 pF 2
LED 8
Resistencia de 220 Ohm 8
Fuente regulada de 5 Vdc 1
Tabla 5.2.
57
[Link] 67/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
58
[Link] 68/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PORTB = %10101010 ' Enciente las salidas RB1, RB3, RB5 y RB7, al
' mismo tiempo apaga RB0, RB2, RB4 y RB6.
End
Este programa enciende primero las salidas pares del puerto B y apaga las
salidas impares, genera una pausa de 1 segundo (1000 ms) y seguidamente
hace el proceso inverso en las salidas, es decir, enciende las salidas impares
y apaga las salidas pares para generar nuevamente otra pausa de 1 segundo
y así repetir el proceso completo al generar un salto a la etiqueta “Inicio”.
59
[Link] 69/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.10.
Proyecto # 3
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
LED 1
Resistencia de 220 Ohm 1
Resistencia de 10K Ohm 1
Pulsador Normalmente Abierto 1
Fuente regulada de 5 Vdc 1
Tabla 5.3.
60
[Link] 70/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
IF – THEM – ELSE
Con la instrucción
programa, If –condiciones
basadas en Them podemos tomardefinidas
específicas decisiones
por ael lo largo de un
programador.
Inicio:
End
61
[Link] 71/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.11.
62
[Link] 72/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 4
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Resistencia de 220 Ohm 8
Resistencia de 10K Ohm 8
Pulsador Normalmente Abierto 8
Display de 7 Segmentos - Cátodo común 1
Fuente regulada de 5 Vdc 1
Tabla 5.4.
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
63
[Link] 73/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
' gfedcba
' |||||||
If PORTB.0 = 1 Then PortD = %00111111 ' Enciende los segmentos correspondientes
' al dígito “cero” en el display.
End
64
[Link] 74/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.12.
Proyecto # 5
Componente Cantidad
PIC16F877A
Cristal de 4 Mhz 1
1
Capacitor cerámico de 33 pF 2
Resistencia de 220 Ohm 8
Display de 7 Segmentos - Cátodo común 1
Fuente regulada de 5 Vdc 1
Tabla 5.5.
65
[Link] 75/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
FOR… NEXT
' gfedcba
' |||||||
Cero CON %00111111
Uno CON %00000110
Dos CON %01011011
Tres CON %01001111
Cuatro CON %01100110
Cinco CON %01101101
Seis CON %01111101
Siete CON %00000111
66
[Link] 76/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
Next I
Digito:
Return ' Retorna una línea después del salto con retorno (Call)
End
67
[Link] 77/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Next I
Next I
En este caso en conteo inicia en nueve y decrece en una unidad hasta llegar
a cero.
5.6.- Proyecto #6: PicBasic cuenta con una instrucción capaz de generar
tonos DTMF (Dual Tone Multifrecuency - Multifrecuencia de doble tono), tonos
que se utilizan en telefonía para marcar una serie de números y así poder
establecer la comunicación
interesante para entre
esta instrucción dossero elmás
podría personas.
discado Una telefónicos
de números aplicación
en sistemas de alarma cuando ha sido activado un dispositivo de supervisión,
para luego generar un mensaje de voz que nos alerte de dicho evento.
Realice el montaje de la figura 5.13 y analice el programa que se muestra a
continuación, el cual genera tonos DTMF consecutivos de una serie de dígitos
predefinidos. Es muy importante considerar que para generar los tonos
adecuadamente el oscilador externo debe ser de 10 Mhz o superior.
68
[Link] 78/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.13.
Proyecto # 6
Componente Cantidad
PIC16F84A 1
Cristal de 10 Mhz 1
Capacitor cerámico de 33 pF 2
Capcitor Electrolítico de 10 uF 2
Parlante de 8 Ohm 1
Fuente regulada de 5 Vdc 1
Tabla 5.6.
69
[Link] 79/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 80/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
DTMFout
Pin: especifica el pin del puerto en el cual se emitirán los tonos DTMF.
On-ms: es una variable o constante que especifica la duración de cada tono
en milisegundos. En caso de no utilizar este parámetro, el tiempo por defecto
de cada tono es de 200 ms.
Off-ms: es una variable o constante que especifica el tiempo en milisegundos
del silencio que hay entre cada tono. En caso de no utilizar este parámetro, el
tiempo en silencio entre cada tono por defecto será de 50 ms.
Tono: puede ser una variable o constante entre 0 y 15, que especifica el tono
que debe ser generado.
71
[Link] 81/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
End
72
[Link] 82/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.15.
73
[Link] 83/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.16.
74
[Link] 84/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.17.
Figura 5.18.
75
[Link] 85/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Button
76
[Link] 86/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.19.
77
[Link] 87/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PULSout
78
[Link] 88/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Para este proyecto hemos preparado tres ejemplos los cuales están basados
en el circuito de la figura 5.20.
Figura 5.20.
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Resistencia de 10K Ohm 1
Pulsador Normalmente Abierto 1
Fuente regulada de 5 Vdc 1
Tabla 5.8.
79
[Link] 89/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
La
cualsalida
hemosa través de la cual
conectado se van a generar
un osciloscopio paralos pulsos
poder verserá el pin RB1,deenlas
el resultado el
señales generadas a partir de las especificaciones dadas en cada ejemplo a
continuación.
Inicio:
Button PORTB.0,1,2,1,A,0,Tiempo
80
[Link] 90/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.21.
81
[Link] 91/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.22.
Button PORTB.0,1,2,1,A,0,Tiempo
82
[Link] 92/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.23.
83
[Link] 93/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.24.
84
[Link] 94/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
Button PORTB.0,1,2,2,A,0,Tiempo
Tiempo:
Pause 10 ' Pausa de 10 milisegundos
GoTo Inicio ' Salta a inicio
End
Button PORTB.0,1,2,2,A,0,Tiempo
85
[Link] 95/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.25.
86
[Link] 96/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 97/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.26.
88
[Link] 98/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.27.
89
[Link] 99/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.28.
90
[Link] 100/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5.29.
Proyecto # 8
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
LED 3
Resistencia de 220 Ohm 3
Fuente regulada de 5 Vdc 1
Tabla 5.9.
91
[Link] 101/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Branch
La instrucción
la variable, Branchsi hace
es decir, un salto
la variable a unaaetiqueta
es igual dependiendo
0, el salto se hace a ladel valor de
etiqueta 1;
si la variable es igual a 1, el salto se hace a la etiqueta 2; si la variable es
igual a 2, el salto se hace a la etiqueta 3, y así sucesivamente.
Inicio:
Branch I,[Led1,Led2,Led3]
Led1:
PORTB = %00000001 ' enciende el led en RB0
Pause 1000 ' pause de 1 segundo
PORTB = %00000000 ' apaga el led
I = I + 1 ' suma 1 a la variable I
GoTo inicio ' salta a inicio
Led2:
PORTB = %00000010 ' enciende el led en RB1
Pause 1000 ' pause de 1 segundo
PORTB = %00000000 ' apaga el Led
I = I + 1 ' suma 1 a la variable I
GoTo inicio ' salta a inicio
92
[Link] 102/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Led3:
PORTB = %00000100 ' enciende el led en RB2
Pause 1000 ' pause de 1 segundo
PORTB = %00000000 ' apaga el Led
I = 0 ' Inicializa la variable I
93
[Link] 103/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
5.9.- Proyecto #9: La instrucción “PWM”, puede ser usada para generar
voltajes analógicos implementando el circuito conectado al pin RB0 de la
figura 5.30. A continuación realizaremos un ejemplo de aplicación de la
instrucción PWM para generar un voltaje determinado, aplicando una serie de
cálculos sencillos.
Figura 5.30.
Proyecto # 9
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Resistencia de 10K Ohm 1
Capcitor Electrolítico de 10 uF 1
Fuente regulada de 5 Vdc 1
Tabla 5.10.
94
[Link] 104/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PWM
En un
de nuestro ejemplo, paraa generar
microcontrolador unlavoltaje
través de específico
instrucción PWM,enpodemos
una de las salidas
aplicar la
siguiente fórmula:
Vfuente ∗ nivel
Vout =
255
donde,
Vout: voltaje de salida.
Vfuente: voltaje de la fuente de alimentación del circuito.
Nivel: constante entre 0 y 255.
95
[Link] 105/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 106/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
6.1.- Pantallas LCD: Las pantallas LCD alfanuméricas, son las más utilizadas
hoy en día
se hace en el desarrollo
necesario demensajes
visualizar proyectos de
o equipos electrónicos
texto cortos, en los cuales
que proporcionen la
información adecuada sobre un evento determinado. Las pantallas más
comunes suelen ser de 1x16, de 2x16 y de 4x16 (Filas x Columnas). Todas
estas configuraciones también se encuentran para 20 columnas y hasta para
40 columnas. Aunque en esta edición solo estudiaremos el uso de pantallas
alfanuméricas, también resulta interesante mencionar que existen en el
mercado pantallas gráficas (GLCD), como la que se observa en la figura 6.3, y
donde se debe aplicar un método de control diferente al de las pantallas
alfanuméricas.
97
[Link] 107/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 108/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Pin 7 al14: "Bus de Datos”, el Pin 7 hasta el Pin 14 representan 8 líneas que
se utilizan para colocar el dato que representa una instrucción para el modulo
LCD o un carácter alfanumérico.
Pin 15-16: "BackLight", en muchos modelos de LCD, los pines 15 y 16 son
respectivamente
mercado modelosel de “Ánodo” y el “Cátodo”,
pantallas LCD dondeaunque
esta se pueden es
condición encontrar en el
configurable
desde la parte posterior del circuito impreso a través de “Jumpers”, o
conexiones donde podemos invertir los Pines, de manera tal que el Pin 15 sea
el “Cátodo” y el Pin 16 el “Ánodo”, como se muestra en la figura 6.5.
Figura 6.5.
6.3.- Conexión de una pantalla LCD en Pic Basic: Una pantalla LCD puede
ser conectada a un microcontrolador utilizando los ocho bits del bus de datos
(D0 a D7) o solamente los cuatro bits mas significativos del bus de datos (D4
apuerto
D7). Al emplearenlospuertos
y nunca ocho bits, estos deberán
diferentes. estar conectados
Si deseamos en con
trabajar solo un solo
los
cuatro bits más significativos del bus, estos deberán ser conectados en los
cuatro bits menos significativos de un puerto o en los cuatro bits más
significativos del puerto seleccionado.
Los pines E (Pin 6) y RS (Pin 4) pueden estar conectados en cualquier puerto
del microcontrolador. Por último, el Pin R/W deberá estar conectado a tierra
(GND) para indicar a la pantalla LCD que estaremos escribiendo, esto debido
a que estaremos trabajando inicialmente solo con la instrucción “Lcdout”.
99
[Link] 109/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Un dato interesante resulta ser el hecho de que las pantallas LCD pueden ser
controladas utilizando dos configuraciones distintas para el bus de datos:
Nota
móduloImportante : PIC Basic
LCD alfanumérico asume por defectose que
y un microcontrolador, el conexionado
ha realizado como seentre un
muestra
en el diagrama esquemático de la figura 6.6. En este caso no será necesario definir
estas conexiones en el programa; sin embargo, es conveniente saber que el
funcionamiento de un programa para el manejo de una pantalla LCD, no se verá
afectado si decidimos definir cada una de las conexiones como se muestran a
continuación:
DEFINE LCD_DREG PORTA ' Indica que el Bus de datos estará conectado
' en el Puerto A.
DEFINE LCD_DBIT 0 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTA ' Indica al uC que el pin “RS” estará en el Puerto A
DEFINE LCD_EREG PORTB ' Indica al uC que el pin “E” estará en el Puerto B
100
[Link] 110/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.6.
Proyecto # 10
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x4 1
Resistencia de 1K Ohm 1
Potenciómetro de 5K Ohm 1
Fuente regulada de 5 Vdc 1
Tabla 6.1.
101
[Link] 111/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LCDout
$FE, $C0
$90 segundalínea
Mueve el cursor al inicio de la tercera línea
$FE, $D0 Mueve el cursor al inicio de la cuarta línea
Tabla 6.2.
102
[Link] 112/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Línea 1 - - - - - - - - - - - - - - - -
Línea 2 $C0 $C1 $C2 $C3 $C4 $C5 $C6 $C7 $C8 $C9 $CA $CB $CC $CD $CE $CF
Línea 3 $90 $91 $92 $93 $94 $95 $96 $97 $98 $99 $9A $9B $9C $9D $9E $9F
Línea 4 $D0 $D1 $D2 $D3 $D4 $D5 $D6 $D7 $D8 $D9 $DA $DB $DC $DD $DE $DF
Figura 6.7.
103
[Link] 113/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
GoTo
End Inicio ' Salta a la etiqueta inicio
104
[Link] 114/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Para estevariable
en una ejemploa se
la ha realizado
cual hemos un programa que
denominado muestra
“Dato”, y la el valorpodrá
cual cargado
ser
incrementada al accionar el pulsador “P1” conectado en RB0; el valor de esta
variable también podrá decrecer al accionar el pulsador “P2” conectado en
RB1.
Los puertos han sido configurados de la siguiente manera:
•
Puerto D: se configura como salida ya que éste será utilizado para el
control de la pantalla LCD.
La variable “Dato” ha sido inicializada con un valor cargado igual a 25. Para
aumentar o disminuir este valor, simplemente se pregunta si en RB0 o en RB1
hay un cambio de estado lógico. Adicionalmente se establecen dos
condiciones que se deben cumplir para que la variable pueda aumentar su
valor o disminuir:
105
[Link] 115/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.10.
106
[Link] 116/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 11 - 12
Componente Cantidad
PIC16F877A 1
Cristal de 8 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x2 1
Resistencia de 10K Ohm 2
Potenciómetro de 5K Ohm 1
Pulsador Normalmente Abierto 2
Fuente regulada de 5 Vdc 1
Tabla 6.3.
' Programa en Pic Basic Pro:
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
Inicio:
107
[Link] 117/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Lcdout $fe,$C0,"Dato: ",Dec Dato," " ' Escribe el mensaje en la 2da línea
' seguido del valor cargado en la
' variable "Dato" en Decimal.
Suma:
Resta:
Note quedel
además en valor
la línea de programa
cargado encargadahay
en la variable, de imprimir el mensaje
un espacio “Dato:
en blanco “,
entre
comillas (“ “) para imprimir en la pantalla:
Lcdout $fe,$C0,"Dato: ",Dec Dato," "
108
[Link] 118/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.11.
Figura 6.12.
• Al accionar el pulsador “P2”, se deberá mostrar el siguiente sub-menú
(figura 6.13), el cual también deberá permanecer visible durante 5
segundos para luego retornar al menú inicial:
" Menu #2 "
"Mensaje #2 aqui!"
Figura 6.13.
Lea detenidamente los comentarios de cada línea del programa. Observe que
en esta oportunidad
utilizadas en el puertohemos
B (RB0utilizado un alias
se llamará P1, y para
RB1 cada una de
se llamará las entradas
P2).
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
109
[Link] 119/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
Inicio:
GoTo Inicio
Mensaje1:
Mensaje2:
End
110
[Link] 120/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Para lograrcargaremos
en la cual este objetivo, hemos
un valor declarado
igual en elejemplo
a 64, como programa la variable “Dato”,
inicial.
Ya es conocido por un ejemplo anterior a éste, que si deseamos mostrar el
contenido de la variable en decimal, debemos anteponer la directiva “ Dec” o el
símbolo “#” a ésta, como se puede ver a continuación:
111
[Link] 121/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.14.
Proyecto # 13 - 14
Componente Cantidad
PIC16F877A
Cristal de 8 Mhz 11
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x2 1
Potenciómetro de 5K Ohm 1
Fuente regulada de 5 Vdc 1
Tabla 6.4.
112
[Link] 122/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
Inicio:
End
113
[Link] 123/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE
DEFINE LCD_EREG
LCD_EBIT PORTD
3 '
' Indica al uC
"E" estará que el pin
conectado en "E"
RD3 estará en el Puerto D
Inicio:
For I = 33 To 125
Lcdout $fe,2
Lcdout "Dec:",#I," Hex:",HEX I," "
Lcdout $fe,$C0,"ASCII: ", I," "
Next I
Fin:
GoTo Fin ' Bucle infinito.
End
114
[Link] 124/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.15.
115
[Link] 125/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 15 - 16
Componente Cantidad
PIC16F877A 1
PIC16F84A
Cristal de 4 Mhz 11
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x4 1
Resistencia de 10K Ohm 2
Potenciómetro de 5K Ohm 1
Pulsador Normalmente Abierto 2
Fuente regulada de 5 Vdc 1
Tabla 6.5.
116
[Link] 126/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Count
Pin:especifica el pin del puerto en el cual se introducirán los pulsos. Este pin
es designado como entrada automáticamente por la instrucción Count.
Inicio:
Count PORTB.1, 1000, Pulsos ' Cuenta los pulsos introducidos a través
' del pin RB1, durante 1000 milisegundos y el
117
[Link] 127/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
118
[Link] 128/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Suma:
Pause 300 ' Pausa de 300 milisegundos
Base = Base + 100 ' Incrementa la variable "Base"
If Base = 10100 Then Base = 10000 ' Establece un límite máximo al valor cargado
' en la variable "Base".
Espera = Base / 100 ' Divide el valor cargado en la variable
' "Base" entre 100 y lo carga en la variable
' "Espera", para que la pausa que se genera
' después de cada pulso sea igual al tiempo
' del pulso.
Resta:
End
119
[Link] 129/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
120
[Link] 130/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.16.
121
[Link] 131/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PULSIN
Pin: especifica el pin del puerto en el cual se introducirá el pulso a ser medido.
Nivel: define si la medición se hace en nivel alto o bajo. (1 = alto, 0 = bajo).
Variable:es una variable de 8 bits (variable tipo byte) o 16 bits (variable tipo
word) definida por el programador en la cual se grabará el resultado de la
lectura.
Analice el siguiente programa:
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
122
[Link] 132/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
LCDOut "Lectura: ",#LECTURA," " ' Muestra mensaje y dato por pantalla.
End
123
[Link] 133/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
6.11.- Proyecto #17: Realice el montaje para el circuito la figura 6.17, con el
cual estudiaremos la instrucción “POT” a través de un ejemplo de
programación, con el cual se pretende tomar lectura de un elemento resistivo,
el cual en este caso será un potenciómetro de 10Kohm.
Figura 6.17.
124
[Link] 134/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 17
Componente Cantidad
PIC16F877A 1
Cristal de 4cerámico
Capacitor Mhz de 33 pF 12
Pantalla LCD 16x2 1
Potenciómetro de 5K Ohm 1
Potenciómetro de 10K Ohm 1
Capacitor cerámico de 0,1 uF 1
Fuente regulada de 5 Vdc 1
Tabla 6.6.
POT
125
[Link] 135/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
126
[Link] 136/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
C5 C4 C3 C2 C1 C5 C4 C3 C2 C1 C5 C4 C3 C2 C1 C5 C4 C3 C2 C1 C5 C4 C3 C2 C1
Fila 1
Fila 2
Fila 3
Fila 4 .............
Fila 5
Fila 6
Fila 7
Fila 8
Figura 6.18.
* Nota: Los 3 bits más significativos de cada byte (3 bits más significativos de
cada fila), son tomados como ceros.
En cada posición de la CGRAM se almacenan los 8 bytes que forman un
caracter. Las direcciones correspondientes a cada posición son:
Posición en
la CGRAM Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
Posición 0 $40 $41 $42 $43 $44 $45 $46 $47
Posición 1 $48 $49 $4A $4B $4C $4D $4E $4F
Posición 2 $50 $51 $52 $53 $54 $55 $56 $57
Posición 3 $58 $59 $5A $5B $5C $5D $5E $5F
Posición 4 $60 $61 $62 $63 $64 $65 $66 $67
Posición 5 $68 $69 $6A $6B $6C $6D $6E $6F
Posición 6 $70 $71 $72 $73 $74 $75 $76 $77
Posición 7 $78 $79 $7A $7B $7C $7D $7E $7F
Tabla 6.7.
127
[Link] 137/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 6.8.
Note que cada cuadro representa un bit el cual corresponde a un “1” o un “0”
según sea el caso o la figura que deseamos realizar, donde “1” es encendido
y “0” es apagado.
La instrucción para desplegar este símbolo en la pantalla sería la siguiente:
LCDOUT $fe,$40,$02,$06,$1A,$1A,$1A,$06,$02,$00
128
[Link] 138/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
129
[Link] 139/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.19.
Proyecto # 18
Componente Cantidad
PIC16F877A 1
Cristal de 8 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x2 1
Resistencia de 10K Ohm 2
Potenciómetro de 5K Ohm 1
Pulsador Normalmente Abierto 2
Fuente regulada de 5 Vdc 1
Tabla 6.9.
130
[Link] 140/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Las pantallas que veremos representadas en este ejemplo son las mostradas
en las figuras 6.20, 6.21, 6.22 y 6.23. Se puede observar en ellas la
representación de un pequeño parlante y cuatro rectángulos, encargados de
indicar el nivel de volumen.
Figura 6.20.
Figura 6.21.
Figura 6.22.
Figura 6.23.
131
[Link] 141/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 1:
Dato Dato Bytes en la
HEX Símbolo Binario CGRAM
Figura 2:
132
[Link] 142/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3:
Figura 4:
133
[Link] 143/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5:
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
134
[Link] 144/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
SubeVol:
Return
Nivel1:
135
[Link] 145/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Nivel2:
Nivel3:
BajaVol:
Return
Borra1:
Borra2:
Borra3:
End
136
[Link] 146/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.24.
Proyecto # 19
Componente Cantidad
PIC16F877A 1
Cristal de 8 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x4 1
Potenciómetro de 5K Ohm 1
Fuente regulada de 5 Vdc 1
Tabla 6.10.
137
[Link] 147/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.25.
138
[Link] 148/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.26.
139
[Link] 149/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 6.27.
140
[Link] 150/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Los datos a ser almacenados en las ocho posiciones de la CGRAM son los
siguientes:
Figura 1:
Palabra 0: $00,$00,$10,$0F,$0F,$0D,$18,$10
Figura 2:
Palabra 1: $04,$0E,$1F,$1C,$1C,$1C,$06,$05
141
[Link] 151/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 3:
Palabra 2: $00,$00,$10,$0F,$0F,$0D,$04,$06
Figura 4:
Palabra 3: $04,$0E,$1F,$1C,$1C,$1C,$08,$18
142
[Link] 152/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 5:
Palabra 4: $04,$0E,$1F,$07,$07,$07,$02,$03
Figura 6:
Palabra 5: $00,$00,$01,$1E,$1E,$16,$04,$0C
143
[Link] 153/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 154/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Línea 1 $80 $81 $82 $83 $84 $85 $86 $87 $88 $89 $8A $8B $8C $8D $8E $8F
Línea 2 $C0 $C1 $C2 $C3 $C4 $C5 $C6 $C7 $C8 $C9 $CA $CB $CC $CD $CE $CF
Línea 3 $90 $91 $92 $93 $94 $95 $96 $97 $98 $99 $9A $9B $9C $9D $9E $9F
Línea 4 $D0 $D1 $D2 $D3 $D4 $D5 $D6 $D7 $D8 $D9 $DA $DB $DC $DD $DE $DF
Figura 6.28.
145
[Link] 155/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto en el uC para el
' bus de datos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto D
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RD2
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto D
DEFINE LCD_EBIT 3 ' "E" estará conectado en RD3
inicio:
146
[Link] 156/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
POS1 = POS1 + 3
POS2 = POS2 + 3
POS3 = POS3 + 3
POS4 = POS4 + 3
If POS4 > $CF Then RETRO ' Pregunta si llega al tope derecho de la LCD
' si POS4 = $CF salta a la etiqueta "RETRO"
GoTo inicio ' Salta a la etiqueta "inicio"
' Antes de retroceder nos aseguramos de que las figuras E,F,G y H tengan una
' posición inicial en la pantalla LCD:
RETRO:
POS1 = $CF
POS2 = $CE
POS3 = $CD
POS4 = $CC
RETROCEDE:
POS1 = POS1 - 3
POS2 = POS2 - 3
POS3 = POS3 - 3
POS4 = POS4 - 3
If POS4 < $C0 Then REINICIA ' Pregunta si llega al tope Izquierdo de la LCD
GoTo RETROCEDE
' Nos aseguramos de que las figuras A,B,C y D tengan una posición inicial en la
' pantalla LCD:
147
[Link] 157/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
REINICIA:
POS1 = $C0
POS2 = $C1
POS3 = $C2
POS4 = $C3
148
[Link] 158/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 7.1.
Figura 7.2.
149
[Link] 159/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 7.1.
Observe en el diagrama esquemático que los pines RB3, RB4, RB5 y RB6
tienen una resistencia “Pull-up”, lo cual significa que si leemos cualquiera de
estas entradas, asumiendo que ninguna tecla ha sido presionada, entonces
siempre habrá un uno lógico presente en cada una de ellas.
150
[Link] 160/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 7.3.
151
[Link] 161/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
152
[Link] 162/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
Teclado:
Return
End
153
[Link] 163/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 7.4.
Proyecto # 20 - 21 - 22 - 23
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x2 1
Resistencia de 1K Ohm 4
Potenciómetro de 5K Ohm 1
Teclado Matricial 3x4 1
Fuente regulada de 5 Vdc 1
Tabla 7.2.
154
[Link] 164/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
Call Teclado
Teclado:
155
[Link] 165/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
156
[Link] 166/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
157
[Link] 167/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
00E8:
00F0: E8
F0 E9
F1 EA
F2 EB
F3 EC
F4 ED
F5 EE
F6 EF
F7
00F8: F8 F9 FA FB FC FD FE FF
Tabla 8.2.
158
[Link] 168/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
WRITE
Ejemplo:
Write $00,1 ' graba el dato o valor “1” en la dirección $00
READ
159
[Link] 169/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Ejemplo:
Como se 3x4
matricial puede
paraobservar en ladefigura
el ingreso datos8.1, se pantalla
y una requiere LCD,
el usocon
de un teclado
la cual se
podrá visualizar toda la información a ser consultada.
Figura 8.1.
160
[Link] 170/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Basados
programa en el diagrama
asegurando que esquemático
los puertos A,de Bla yfigura 8.1, configurados
D están empezamos deel
acuerdo a los dispositivos conectados a él:
' Programa en Pic Basic Pro
TRISA = %00000000
TRISB = %00000000
TRISD = %01111000
161
[Link] 171/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Read $00,VAR1
Pause 3000
Read $01,VAR1
Lcdout $fe, 2 ' Posiciona el cursor en el inicio
Lcdout "Dirección 01: "
Lcdout $fe,$C0, "Dato: ",#VAR1," "
Pause 3000
Read $02,VAR1
Lcdout $fe, 2 ' Posiciona el cursor en el inicio
Lcdout "Dirección 02: "
Lcdout $fe,$C0, "Dato: ",#VAR1," "
Pause 3000
GoTo inicio
End
Para comprobar que estos datos están en la memoria de datos EEPROM del
microcontrolador, también es posible utilizar el programador P16Pro para este
fin, desde el cual podemos extraer el contenido completo de la memoria de
datos sin problemas, debido a que el software del programador cuenta con
una pequeña ventana llamada “Data Memory”, en la cual se pueden ver los
datos almacenados como se muestra en la figura 8.2:
162
[Link] 172/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 8.2.
TRISA = %00000000
TRISB = %00000000
TRISD = %01111000
163
[Link] 173/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
DIRECCION = $00
End
Figura 8.3.
164
[Link] 174/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
TRISA = %00000000
TRISB = %00000000
TRISD = %01111000
Inicio:
espera1:
Call Teclado
If VAR1 = 0 Then espera1 ' Si ninguna tecla fue pulsada salta a “espera1”
If VAR1 = 10 Then espera1 ' Si pulsamos la tecla asterisco salta a “espera1”
If VAR1 = 11 Then VAR1 = 0 ' Si pulsamos la tecla “0”, entonces VAR1 = 0
If VAR1 = 12 Then espera1 ' Si pulsamos la tecla numeral salta a “espera1”
165
[Link] 175/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
If DIRECCION = $0F Then Aviso ' Revisa si llegamos al límite asignado por
' el programador en la memoria de datos
GoTo inicio
Aviso:
Parada:
GoTo Parada
Teclado:
VAR1 = 0
End
166
[Link] 176/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 177/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 8.4.
168
[Link] 178/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 24
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x2 1
Resistencia de 1K Ohm 4
Potenciómetro de 5K Ohm 1
Teclado Matricial 3x4 1
Transistor 2N3904 1
Buzzer 5 Vdc 1
Fuente regulada de 5 Vdc 1
Tabla 8.3.
169
[Link] 179/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
0028:
0030: 28
30 29
21 2A
32 2B
33 2C
34 2D
35 2E
36 2F
37
0038: 38 39 3A 3B 3C 3D 3E 3F
0040: 40 41 42 43 44 45 46 47
0048: 48 49 4A 4B 4C 4D 4E 4F
0050: 50 51 52 53 54 55 56 57
0058: 58 59 5A 5B 5C 5D 5E 5F
0060: 60 61 62 63 64 65 66 67
0068: 68 69 6A 6B 6C 6D 6E 6F
0070: 70 71 72 73 74 75 76 77
0078: 78 79 7A 7B 7C 7D 7E 7F
0080: 80 81 82 83 84 85 86 87
0088: 88 89 8A 8B 8C 8D 8E 8F
0090: 90 91 92 93 94 95 96 97
0098:
00A0: 98
A0 99
A1 9A
A2 9B
A3 9C
A4 9D
A5 9E
A6 9F
A7
00A8: A8 A9 AA AB AC AD AE AF
00B0: B0 B1 B2 B3 B4 B5 B6 B7
00B8: B8 B9 BA BB BC BD BE BF
00C0: C0 C1 C2 C3 C4 C5 C6 C7
00C8: C8 C9 CA CB CC CD CE CF
00D0: D0 D1 D2 D3 D4 D5 D6 D7
00D8: D8 D9 DA DB DC DD DE DF
00E0: E0 E1 E2 E3 E4 E5 E6 E7
00E8: E8 E9 EA EB EC ED EE EF
00F0: F0 F1 F2 F3 F4 F5 F6 F7
00F8: F8 F9 FA FB FC FD FE FF
Tabla 8.4.
170
[Link] 180/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
TRISA = %00000000
TRISB = %00000000
TRISD = %01111000
X VAR Byte
VAR1 VAR Byte
DIGITO VAR Byte[7]
CLV VAR Byte[7]
Inicio:
Clave:
171
[Link] 181/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Consulta:
If VAR1 = 0 Then consulta ' Si no hay una tecla pulsada vuelve a consultar
' Si VAR1 es diferente de cero, significa que pulsamos una tecla, por lo
' tanto generamos un sonido y continuamos…
Call Beep ' Generamos un sonido
X = X + 1
Comprobar:
172
[Link] 182/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Correcto:
Pause 500
GoTo inicio
Error:
Pause 500
Beep:
Teclado:
VAR1 = 0
173
[Link] 183/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
End
174
[Link] 184/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Interrupciones Capitulo IX
Figura 9.1.
175
[Link] 185/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
GIE:
1 = habilita todas las interrupciones.
0 = deshabilita las interrupciones.
EEIE:
10 =
= habilita la interrupción
deshabilita por por
la interrupción escritura de la
escritura deEEPROM.
la EEPROM.
TOIE:
1 = habilita la interrupción por temporizador TMR0.
0 = deshabilita la interrupción por temporizador TMR0.
INTE:
1 = habilita la interrupción por RB0/INT.
0 = deshabilita la interrupción por RB0/INT.
RBIE:
1 = habilita la interrupción por puerto B (RB4-RB7).
0 = deshabilita la interrupción por puerto B.
TOIF: (Bandera de interrupción por desborde del TMR0)
1 = cuando TMR0 pasa de FFh a 00h.
Este bit debe ponerse a cero por software.
INTF: (Bandera de interrupción por RB0/INT)
1 = cuando ocurre una interrupción en RB0/INT.
Este bit debe ponerse a cero por software.
RBIF: (Bandera de interrupción por puerto B)
1 = cuando las entradas RB7 a RB4 cambian de estado.
Este bit debe ponerse a cero por software.
176
[Link] 186/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 9.2.
177
[Link] 187/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 25
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
LED 2
Resistencia de 220 Ohm 2
Resistencia de 10K Ohm 1
Pulsador Normalmente Abierto 1
Fuente regulada de 5 Vdc 1
Tabla 9.1.
Figura 9.3.
178
[Link] 188/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
I VAR Byte
Interrup:
179
[Link] 189/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 9.4.
180
[Link] 190/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
El Bit “TOSE” del registro OPTION, elige el tipo de flanco activo cuando el
contador TMR0 es incrementado a través del pin RA4/TOCKI, es decir,
determina si el incremento se hará con el flanco de bajada o con el flanco de
subida de la señal aplicada.
“TOCKI”
RA4/[Link] Auna señal
través de generada poresunposible
esta entrada circuito externo
contar aplicada
el número al pin
de pulsos
que lleguen a ella, y producir una interrupción por desborde cuando el
contador pasa de 255 ($FF) a 0 ($00). Se utiliza cuando deseamos que el
registro TMR0 se comporte como contador, y esto es posible configurando el
Bit “TOCS” del registro OPTION (TOCS = 1).
“FOSC/4” es una señal de reloj interna que genera pulsos que tienen una
frecuencia conocida y la cual depende del oscilador principal. FOSC/4 se
utiliza cuando queremos que el registro TMR0 se comporte como
temporizador, y esto se logra configurando el Bit “TOCS” del registro OPTION
(TOCS = 0).
“PRESCALER” el un divisor programable de frecuencia el cual se configura
seleccionando los bits PS2, PS1 y PS0 (bits menos significativos del Registro
OPTION). Para programar el PRESCALER, contamos con una tabla que
define los valores del Divisor (ver tabla 9.2).
“PSA” asigna el divisor de frecuencias y también puede ser programado a
través del bit 3 del registro OPTION.
Figura 9.5.
RBP0#:
1 = resistencias Pull-Up del puerto B activadas.
0 = resistencias Pull-Up del puerto B desactivadas.
181
[Link] 191/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
TOCS:
1 = señal de reloj introducida a través de RA4/TOCKI
0 = señal de reloj interno FOSC/4
TOSE:
1 = incrementa TMR0 con flanco descendente de RA4/TOCKI
0 = incrementa TMR0 con flanco ascendente de RA4/TOCKI
PSA:
1 = asigna el divisor de frecuencia a WDT
0 = asigna el divisor de frecuencia a TMR0
PS2,PS1,PS0:
Divisor de Divisor de
PS2 PS1 PS0
TMR0 WDT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 0 1:32 1:16
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128
Tabla 9.2.
182
[Link] 192/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
9.8.- Proyecto #26. Para dar un ejemplo de aplicación del Registro TMR0
como temporizador, crearemos un programa que haga destellar un Led con
una frecuencia de 1 Hz. Este proceso se debe cumplir de la siguiente manera:
1. Encender el Led.
2.
3. Esperar
Apagar elunLed.
segundo (1000 milisegundos).
4. Esperar un segundo (1000 milisegundos).
5. Repetir todo el proceso.
En este punto resulta importante saber cuanto es la temporización máxima
que se puede lograr con TMR0. Para esto, será necesario aplicar una fórmula
sencilla:
Temporización TMR0 = 4 / Fosc x (256 - Valor a cargar en TMR0) x Prescaler
Fosc:
cristal Depende
de 4 Mhz, del
por Oscilador que=usemos,
lo tanto Fosc 4000000.y en este ejemplo utilizamos un
Valor a cargar en TMR0: es el valor desde el cual se inicia el conteo para
generar el desborde. En este caso cargaremos cero, para garantizar que
cuente los 256 ciclos completos.
Prescaler: según la tabla 9.2, el valor máximo para el divisor del TMR0 es
256.
Entonces;
Temporización TMR0 = (4 / 4000000) x (256 - 0) x (256)
Temporización TMR0 = 0,065536 Segundos 65,536 milisegundos
Obviamente este tiempo no es suficiente para generar el retardo deseado de
1000 milisegundos, por lo cual proponemos entonces calcular el valor a
cargar en el registro TMR0, para un tiempo de desborde de 50 milisegundos,
el cual repetiremos 20 veces, dando como resultado un retardo de 1000
milisegundos, es decir, 1 segundo.
183
[Link] 193/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 9.6.
184
[Link] 194/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 26
Componente Cantidad
PIC16F84A
Cristal de 4 Mhz 11
Capacitor cerámico de 33 pF 2
LED 1
Resistencia de 220 Ohm 1
Fuente regulada de 5 Vdc 1
Tabla 9.3.
Symbol TOIF = INTCON.2 ' Alias para el bit 2 del registro INTCON.
Symbol GIE = INTCON.7 ' Alias para el bit 7 del registro INTCON.
Symbol LED = PORTA.0 ' Alias para el pin RA0
Disable
Inicio:
High LED ' Enciende el Led
Call Retardo
Low LED '
' Llama
Apaga a
ella rutina de retardo
Led
Call Retardo ' Llama a la rutina de retardo
GoTo Inicio ' Salta a la etiqueta “inicio”.
Retardo:
For I = 1 To 20 ' Repetimos la interrupción 20 veces para
' obtener un retardo de 1 segundo.
Call Retardo1
Next I
Return
185
[Link] 195/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Espera:
If TOIF = 1 Then Reseteo ' pregunta si TOIF es igual a 1, es decir,
' pregunta si TMR0 se desbordo.
GoTo Espera ' Salta a la etiqueta “Espera”.
Reseteo:
End
Activar la interrupción por cambio de estado en los pines RB4, RB5, RB6 y
RB7 es muy sencillo, y lo podemos hacer a través del registro INTCON,
donde contamos con un bit llamado RBIE, que activa o desactiva este tipo de
interrupción, es decir, podemos configurar este registro de la siguiente
manera:
Figura 9.7.
INTCON = %10001000
GIE = 1, con este bit en estado lógico “1”, habilitamos las interrupciones.
RBIE = 1, con este bit en estado lógico “1”, habilitamos las interrupciones por
cambio de estado en el puerto B.
186
[Link] 196/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 9.8.
187
[Link] 197/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 27
Componente Cantidad
PIC16F84A
Cristal de 4 Mhz 11
Capacitor cerámico de 33 pF 2
LED 2
Resistencia de 220 Ohm 2
Resistencia de 10K Ohm 4
Pulsador Normalmente Abierto 4
Fuente regulada de 5 Vdc 1
Tabla 9.4.
En este circuito las entradas RB4, RB5, RB6 y RB7 están normalmente en “0”;
para producir una interrupción bastará con activar cualquiera de los
pulsadores, para poner un “1” en la entrada correspondiente.
Inicio:
188
[Link] 198/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Interrup:
Disable
For I = 1 To 6
End
189
[Link] 199/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
190
[Link] 200/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 10.1.
Figura 10.2.
Figura 10.3.
El Pin WP
escribir (Write
datos en laProtection)
memoria. debemos conectarlo a tierra (Gnd) si deseamos
El Pin SDA (Serial Data) es bi-direccional y es utilizado para transferir
direcciones y datos a un dispositivo I2C.
El Pin SCL (Serial Clock) se utiliza para sincronizar la transferencia de datos y
los dispositivos conectados al bus I2C.
Las instrucciones de programa en PicBasic para el control del bus I2C son
“I2Cread” e “I2CWrite”, con las cuales realizaremos los siguientes proyectos, y
191
[Link] 201/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 10.4.
192
[Link] 202/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 28 - 29
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
Pantalla LCD 16x2 1
Resistencia de 4,7K Ohm 2
Potenciómetro de 5K Ohm 1
Memoria EEPROM 24LC256 1
Fuente regulada de 5 Vdc 1
Tabla 10.1.
I2CWRITE
Sintaxis:
193
[Link] 203/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
Control = $A0 ' Dato de Control
Direc = $10 ' Dirección en la memoria externa
Dato = $23 ' Dato a ser cargado en la dirección
' especificada ($23 = 35 Decimal)
A
El partir
dato de la etiqueta
control, “Inicio”,
el cual asignamos
contiene valoresde
la dirección a las variables24LC256
la memoria declaradas.
es
“$A0”; la dirección en la cual vamos a almacenar un dato en este ejemplo será
“$10”; y por último el dato a ser almacenado será “$23”.
Si se pregunta porqué el dato de control es $A0, podrá obtener la respuesta
verificando la conexión de la memoria en el circuito de la figura 10.4. Observe
que los pines A2, A1 y A0, los hemos conectado a tierra.
Recuerde que estos tres pines definen la dirección del dispositivo; entonces,
debemos tomar en cuenta que para una memoria serial, los cuatro bits más
significativos estána configurados
están conectados tierra en este como “1010xxxx”;
proyecto; los debe
y el bit R/W tres bits
estarA2,
enA1
“0” ypara
A0
poder escribir un dato en la memoria (ver figura 10.5).
Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 (A2) Bit 2 (A1) Bit 1 (A0) Bit 0 (R/W)
1 0 1 0 0 0 0 0
A 0
Figura 10.5.
194
[Link] 204/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
I2CREAD
Sintaxis:
195
[Link] 205/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Escribir:
196
[Link] 206/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Leer:
LCDOUT $fe, 2,"Dato ",#I,": ",#A1," " ' Muestra el dato leido
Pause 1000 ' Pausa de 1 segundo
If I = 50 Then final ' Condicional
Direc = Direc + 1 ' Suma 1 a la variable "Direc"
Next I
Final:
End
197
[Link] 207/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 10.6.
Proyecto # 30
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
Pantalla LCD 16x2 1
Resistencia de 4,7K Ohm 2
Potenciómetro de 5K Ohm 1
Memoria EEPROM 24LC256 2
Fuente regulada de 5 Vdc 1
Tabla 10.2.
198
[Link] 208/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
memoria1:
' xxxxAAAx
' xxxx210x
Control = %10100000 ' Dato de Control
confirma1:
memoria2:
' xxxxAAAx
' xxxx210x
Control = %10100010 ' Dato de Control
199
[Link] 209/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
confirma2:
lectura1:
' xxxxAAAx
' xxxx210x
Control = %10100000 ' Dato de Control
Direc = $00 ' Dirección en la memoria externa
LCDOUT $fe, 2,"Dato ",#I,": ",#A1," " ' Muestra el dato leido
Pause 1000 ' Pausa de 1 segundo
If I = 20 Then lectura2 ' Condicional
Direc = Direc + 1 ' Suma 1 a la variable "Direc"
Next I
lectura2:
' xxxxAAAx
' xxxx210x
Control = %10100010 ' Dato de Control
Direc = $00 ' Dirección en la memoria externa
200
[Link] 210/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LCDOUT $fe, 2,"Dato ",#I,": ",#A1," " ' Muestra el dato leido
Pause 1000 ' Pausa de 1 segundo
If I = 20 Then final ' Condicional
Direc = Direc + 1 ' Suma 1 a la variable "Direc"
Next I
final:
201
[Link] 211/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 11.1.
202
[Link] 212/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 11.1.
203
[Link] 213/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
1020
1021 1
1 1
1 1
1 1
1 1
1 1
1 1
1 1
1 0
0 0
1
1022 1 1 1 1 1 1 1 1 1 0
1023 1 1 1 1 1 1 1 1 1 1
Tabla 11.2.
Vimax
Resolución =
2n
5V
Resolución =
28
204
[Link] 214/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
5V
Resolución =
256
Vimax
Resolución =
2n
Resolución = 25V10
5V
Resolución =
1024
205
[Link] 215/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 11.2.
Vimax
Resolución =
2n
206
[Link] 216/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
2.5V
Resolución =
210
2.5V
Resolución = 1024
Resolución = 0.00244 ≈ 0.0025 V
La resolución del conversor A/D sería de 2.5 mV por cada paso entre 0 y
1023. Hay una serie de pasos que debemos tomar en cuenta para llevar a
cabo una conversión A/D, basados en el diagrama de bloques de la figura
11.2:
Lo primero, será configurar los canales de entrada que utilizaremos para
introducir la señal analógica al conversor A/D y los canales para voltajes de
referencia, en el caso de ser necesario. Esto se hace seleccionando la
combinación correspondiente en los bits PCFG3, PCFG2 PCFG1 y PCFG0
del registro de control ADCON1 (figura 11.3).
Figura 11.3.
207
[Link] 217/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PCFG3 PCFG2 PCFG1 PCFG0 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 Vref+ Vref-
0 0 0 0 A A A A A A A A Vdd Vss
0 0 0 1 A A A A Vref+ A A A RA3 Vss
0 0 1 0 D D D A A A A A Vdd Vss
0 0 1 1 D D D A Vref+ A A A RA3 Vss
0 1 0 0 D D D D A D A A Vdd Vss
0 1 0 1 D D D D Vref+ D A A RA3 Vss
0 1 1 x D D D D D D D D Vdd Vss
1 0 0 0 A A A A Vref+ Vref- A A RA3 RA2
1 0 0 1 D D A A A A A A Vdd Vss
1 0 1 0 D D A A Vref+ A A A RA3 Vss
1 0 1 1 D D A A Vref+ Vref- A A RA3 RA2
1 1 0 0 D D D A Vref+ Vref- A A RA3 RA2
1 1 0 1 D D D D Vref+ Vref- A A RA3 RA2
1 1 1 0 D D D D D D D A Vdd Vss
1 1 1 1 D D D D Vref+ Vref- D A RA3 RA2
Tabla 11.3.
El segundo
señal pasopara
analógica seráque
activar
paseela canal en de
la etapa el cual se encuentra
muestreo. presente
La selección la
de las
entradas analógicas se realiza configurando los bits CHS2 (bit 5), CHS1 (bit 4)
y CHS0 (bit 3) del registro ADCON0 (figura 11.4):
Figura 11.4.
Tabla 11.4.
208
[Link] 218/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 11.5.
Tabla 11.5.
209
[Link] 219/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 11.6.
Figura 11.6.
210
[Link] 220/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
1 = Justifica a la derecha.
0 = Justifica a la Izquierda.
PCFG3 PCFG2 PCFG1 PCFG0 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0 Vref+ Vref-
0 0 0 0 A A A A A A A A Vdd Vss
0 0 0 1 A A A A Vref+ A A A RA3 Vss
0 0 1 0 D D D A A A A A Vdd Vss
0 0 1 1 D D D A Vref+ A A A RA3 Vss
0 1 0 0 D D D D A D A A Vdd Vss
0 1 0 1 D D D D Vref+ D A A RA3 Vss
0 1 1 x D D D D D D D D Vdd Vss
1 0 0 0 A A A A Vref+ Vref- A A RA3 RA2
1 0 0 1 D D A A A A A A Vdd Vss
1 0 1 0 D D A A Vref+ A A A RA3 Vss
1 0 1 1 D D A A Vref+ Vref- A A RA3 RA2
1 1 0 0 D D D A Vref+ Vref- A A RA3 RA2
1 1 0 1 D D D D Vref+ Vref- A A RA3 RA2
1 1 1 0 D D D D D D D A Vdd Vss
1 1 1 1 D D D D Vref+ Vref- D A RA3 RA2
Tabla 11.7.
A
D == Entrada Analógica
I/O Digital
Define ADC_BITS 8
211
[Link] 221/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 11.7.
Conversión a 10 Bits:
Define ADC_BITS 10
Figura 11.8.
212
[Link] 222/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 11.9.
Figura 11.10.
Ejemplo:
Define ADC_SAMPLEUS 50
213
[Link] 223/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 11.11.
214
[Link] 224/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 31
Componente Cantidad
PIC16F877A 1
Cristal de 10 Mhz 1
Capacitor cerámico de 22 pF 2
Pantalla LCD 16x2 1
Resistencia de 220 Ohm 2
Potenciómetro de 5K Ohm 2
Fuente regulada de 5 Vdc 1
Tabla 11.8.
ADCin
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 1 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTB ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 0 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
215
[Link] 225/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
End
216
[Link] 226/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Esto significa que podemos configurar el conversor A/D a 10 Bits, lo cual nos
lleva a considerar los siguientes cambios:
1. Debemos definir ADC_BITS = 10.
2. La variable
Word en layacual
(16 Bits), queserá
una almacenado el resultado,
vez que se desborde debe ser
el registro del tipo
ADRESL,
se requerirá disponer de más bits, debido a que el resultado para una
conversión de 10 bits varía entre 0 y 1023.
3. Debemos recordar justificar el resultado de la conversión A/D a la
derecha, configurando el bit 7 del registro ADCON1, es decir, ADFM =
1.
4. El mensaje mostrado en la primera línea de la pantalla LCD deberá ser:
“C-AD a 10 Bit:”.
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTB ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 1 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTB ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 0 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
A VAR Word ' Declaración de una variable tipo word (16 bits)
Inicio:
217
[Link] 227/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
End
218
[Link] 228/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Comunicación Serial
Transmisión y Recepción de Datos Capitulo XII
[Link] 229/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
tener una transferencia de datos segura con otros osciladores de mayor valor,
será necesario utilizar la directiva “Define Osc” al inicio del programa.
Ejemplo: Define Osc 20 (para un oscilador de 20 Mhz).
43 T300
N2400 300
2400
5 N1200 1200
6 N9600 9600
7 N300 300
Tabla 12.1.
Ejemplo:
Serin PortC.1, 0, variable Velocidad de transmisión: 2400 bps
220
[Link] 230/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
221
[Link] 231/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.1.
222
[Link] 232/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 32
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
Pantalla LCD 16x2 1
Resistencia de 220 Ohm 1
Capacitor Electrolítico de uF 5
Conector DB-9M 1
IC MAX232 1
Fuente regulada de 5 Vdc 1
Tabla 12.2.
Figura 12.2.
223
[Link] 233/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
inicio:
Como velocidad de transmisión, hemos elegido utilizar 9600 bps, por lo cual
debemos definir este valor en nuestro programa.
Las señales con las que actúa el puerto del PC son digitales y la tensión con
la cual trabaja es +12V y -12V; adicionalmente resulta importante saber que la
lógica es invertida, es decir:
+12 V Lógica = “0”
-12 V Lógica = “1”
224
[Link] 234/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.3.
Figura 12.4.
225
[Link] 235/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.5.
Una vez creado un nuevo proyecto, será importante activar el componente
para manejar la comunicación serial “Microsoft Comm Control 6.0”. Esto se
realiza haciendo clic en el menú Proyectos Componentes Controles.
Figura 12.6.
226
[Link] 236/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.7.
Figura 12.8.
227
[Link] 237/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.11.
228
[Link] 238/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.12.
Figura 12.13.
229
[Link] 239/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.14.
Figura 12.15.
230
[Link] 240/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Por último, haga clic en el botón “Iniciar” (ver figura 12.16), para hacer
funcionar el teclado 3x4 desde el cual se enviarán datos hacia el
microcontrolador.
231
[Link] 241/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.16.
232
[Link] 242/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Pin: en este campo definiremos cual será el pin de salida entre los puertos
disponibles del microcontrolador. Ejemplo: PortB.5
Modo: define la velocidad de transmisión en baudios y emplea la misma tabla
de la instrucción Serin (Tabla 12.1).
Variable: En este campo se especifica la variable que contiene los datos que
serán enviados a través de pin especificado. Ejemplo:
inicio:
SerOut PORTC.6, T9600, [#I] ' Envía los datos a través del pin RC6
Next I
233
[Link] 243/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.17.
234
[Link] 244/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 33
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
Capacitor Electrolítico de uF 5
Conector DB-9M 1
IC MAX232 1
Fuente regulada de 5 Vdc 1
Tabla 12.3.
Figura 12.18.
235
[Link] 245/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
SerOut PORTC.6, N9600, [#I] ' envía los datos a través del pin RC6
Next I
236
[Link] 246/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.19.
237
[Link] 247/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.20.
Figura 12.21.
238
[Link] 248/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.22.
239
[Link] 249/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.23.
240
[Link] 250/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.24.
241
[Link] 251/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 34
Componente Cantidad
PIC16F877A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 33 pF 2
Pantalla LCD 16x2 1
Resistencia de 220 Ohm 1
Capacitor Electrolítico de uF 5
Conector DB-9M 1
IC MAX232 1
Potenciómetro de 5K Ohm 1
Fuente regulada de 5 Vdc 1
Tabla 12.4.
Programa en Pic Basic Pro:
'****************************************
'* Nombre : [Link] *
'* Autor : Nombre del Autor *
'* Copyright : Copyright (Año) *
'* Fecha : Fecha *
'* Versión : 1.0 *
'****************************************
DEFINE LCD_DREG PORTD ' Indica que el Bus estará conectado en el Puerto D
DEFINE LCD_BITS 4 ' El bus será de cuatro bits.
DEFINE LCD_DBIT 4 ' Selección del Bit de inicio del puerto (0 o 4) en caso
' de utilizar los cuatro Bits mas significativos de la LCD
DEFINE LCD_RSREG PORTD ' Indica al uC que el pin "RS" estará en el Puerto B
DEFINE LCD_RSBIT 2 ' "RS" estará conectado en RB1
DEFINE LCD_EREG PORTD ' Indica al uC que el pin "E" estará en el Puerto B
DEFINE LCD_EBIT 3 ' "E" estará conectado en RB0
DEFINE LCD_LINES 2 ' Define el número de líneas de la pantalla
A VAR Word ' Declaración de una variable tipo word (16 bits)
242
[Link] 252/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
inicio:
End
243
[Link] 253/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Para esto debemos conectar el cable serial entre el circuito y el PC, desde la
cual realizaremos una nueva conexión con el HyperTerminal, como se
muestra en figura 12.25:
Figura 12.25.
244
[Link] 254/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 255/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.28.
Después de verificar
se debe asegurar delacerrar
correcta
estarecepción
ventana de datos12.28)
(Figura desde para
el HyperTerminal,
garantizar la
disponibilidad del puerto serial.
La idea principal de esta práctica, será llevar estos datos a una hoja de Excel,
en la cual podamos realizar los cálculos para expresar estos valores en sus
equivalentes en voltios para luego tomar una muestra significativa y
graficarlos como se observa en la figura 12.29.
246
[Link] 256/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.29.
El primer paso para configurar la hoja de Excel, será ubicar las herramientas
de Visual Basic y agregar a la hoja de cálculo el control “ Microsoft
communications control, Version 6.0”. Para esto debemos seguir los
siguientes pasos:
247
[Link] 257/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.30.
248
[Link] 258/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.31.
249
[Link] 259/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.32.
250
[Link] 260/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.33.
251
[Link] 261/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.34.
252
[Link] 262/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.35.
253
[Link] 263/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.36.
Al hacer doble clic sobre el nuevo botón, estamos entrando al editor de Visual
Basic, en el cual podemos agregar las siguientes líneas de programa, las
cuales permitirán abrir el puerto al hacer clic sobre el botón que hemos
agregado para tal fin:
254
[Link] 264/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.37.
255
[Link] 265/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.38.
Figura 12.39.
256
[Link] 266/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.40.
257
[Link] 267/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Ejemplo:
Si datainput = 643645650681701718745776
Para extraer los tres primeros caracteres y llevarlos por ejemplo a la celda
(40,2) debemos hacer el siguiente arreglo:
258
[Link] 268/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 269/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link] 270/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.42.
En la columna
expresar C de la
los valores hoja de en
obtenidos cálculo, haremos
Voltios. la conversión
Para esto deladatos
aplicaremos para
siguiente
formula en las celdas C40, C39, C38, C37, C36, C35, C34, C33, C32, C31 y
C30:
261
[Link] 271/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.43.
262
[Link] 272/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.44.
Para graficar esta serie de datos, seleccionamos las diez celdas (desde la
celda C30 hasta la celda C40) y hacemos clic en el icono “Asistente para
Gráficos” (Figura 12.45), donde aparecerá una ventana en la cual podremos
elegir el tipo de gráfico que deseamos utilizar. Seleccione la ficha “Tipos
personalizados” y haga clic en la opción “Líneas suavizadas” de la lista
(Figura 12.46).
263
[Link] 273/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.45.
Figura 12.46.
264
[Link] 274/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.47.
265
[Link] 275/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.48.
Figura 12.49.
266
[Link] 276/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 12.50.
267
[Link] 277/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
268
[Link] 278/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
C
Corriente (6.0V): 7.4mA
orriente (4.8V):
7.7mA activo
activo yy 160mA
180mA al
al aplicar
aplicar fuerza.
fuerza.
Figura 13.1.
Para controlar la posición del eje de un servomotor, hace falta enviar un tren
de pulsos, donde el ancho de cada pulso determina el punto en el cual el eje
mantiene su posición, siempre y cuando esté presente el tren de pulsos. El
recorrido será en la mayoría de los modelos de 180º y los tiempos
correspondientes al pulso en la señal para las posiciones principales (0º, 90º y
269
[Link] 279/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tabla 13.1.
Figura 13.3.
270
[Link] 280/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.4.
Figura 13.5.
271
[Link] 281/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.6.
Proyecto # 35
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
Servomotor 1
Fuente regulada de 5 Vdc 1
Tabla 13.2.
272
[Link] 282/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PAUSEUS
La
en instrucción
Pause realiza un pausa en el programa por un periodo definido
microsegundos. Esta instrucción no pone al microcontrolador en modo de
bajo consumo de energía.
Inicio:
End
273
[Link] 283/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.7.
Volt/Div: 2V
Time/Div: 5ms
Período: 21,55 ms
T1: 1,55 ms (Ancho de pulso positivo).
T2: 20 ms
Vpp: 5,44 Voltios.
Ciclo de trabajo: 8,16%
Tiempo de subida: 160,0 us
Tiempo de bajada: 160,0 us
Al aplicar el tren de pulsos al servomotor, su eje rotará hasta una posición en
el punto medio de su recorrido total.
Si analizamos el programa, podremos observar que la instrucción “ PauseUs”
realiza una parada durante un tiempo definido por la variable “Pulso”, cuyo
valor es de 1550, es decir, se está generando una pausa de 1550
microsegundos, o lo que es igual, 1,55 milisegundos.
Seguidamente hacemos una pausa de 20 milisegundos antes de enviar
nuevamente el pulso al Pin RB0.
274
[Link] 284/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Una
seríaforma aún más
haciendo uso práctica
de la para generar“PulsOut”,
instrucción el tren de pulsos
comodesela figura
muestra13.7,
a
continuación:
Inicio:
End
275
[Link] 285/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.8.
276
[Link] 286/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 36
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
Pantalla LCD 16x2 1
Resistencia de 10K Ohm 3
Potenciómetro de 5K Ohm 1
Servomotor 1
Pulsador Normalmente Abierto 2
Fuente regulada de 5 Vdc 1
Tabla 13.3.
Programa en PBP:
DEFINE OSC 4 ' Define el oscilador en 4 Mhz
TRISB = %11110110 ' Configuración del puerto B
Inicio:
277
[Link] 287/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
SUMA:
PULSO = PULSO + 100 ' Suma 100 a la variable "Pulso"
Pause 40 ' Pausa de 40 milisegundos
Return ' Retorno
RESTA:
End
Inicio:
278
[Link] 288/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
SUMA:
PULSO = PULSO + 10 ' Suma 10 a la variable "Pulso"
Pause 40 ' Pausa de 40 milisegundos
Return ' Retorno
RESTA:
PULSO = PULSO - 10 ' Resta 10 a la variable "Pulso"
Pause 40 ' Pausa de 40 milisegundos
Return ' Retorno
End
279
[Link] 289/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.9.
280
[Link] 290/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 37
Componente Cantidad
PIC16F84A 2
Cristal de 4 Mhz 2
Capacitor cerámico de 22 pF 4
Pantalla LCD 16x2 1
Resistencia de 10K Ohm 3
Potenciómetro de 5K Ohm 1
Pulsador Normalmente Abierto 2
Fuente regulada de 5 Vdc 1
Tabla 13.4.
Inicio:
End
281
[Link] 291/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
DEFINE OSC 4
inicio:
suma:
SerOut PORTA.2, T9600, [PULSO] ' Envía dato serial por RA2
PAUSE 40 ' Pausa de 40 milisegundos
Return ' Retorno
resta:
End
282
[Link] 292/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.10.
283
[Link] 293/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 38
Componente Cantidad
PIC16F84A 1
Cristal de 4 Mhz 1
Capacitor cerámico de 22 pF 2
IC MAX232 1
Capacitor electrolítico de 0,1 uF 5
Potenciómetro de 5K Ohm 1
Conector DB-9M 1
Fuente regulada de 5 Vdc 1
Tabla 13.5.
inicio:
SerIn PORTB.7, T9600, 18, sigue, PULSO ' Espera dato
' durante 18 ms
sigue:
End
284
[Link] 294/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.11.
285
[Link] 295/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.12.
Paso 2: Identificamos el formulario en las propiedades del mismo, ingresando
un nombre que identifique nuestra aplicación:
Figura 13.13.
286
[Link] 296/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.14.
Figura 13.15.
287
[Link] 297/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
288
[Link] 298/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.20.
289
[Link] 299/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 13.21.
End Sub
______________________________________________________________________________
290
[Link] 300/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
291
[Link] 301/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Nota Importante:
Esto significa que el tiempo del pulso generado será de 100 decenas de
microsegundos:
10 microsegundos x 100 = 1000 microsegundos ó 1 milisegundo.
Por lo tanto, los datos que enviamos al microcontrolador a través del puerto
serial desde la aplicación que hemos creado en Visual Basic, deben ser
considerados como la cantidad de decenas de microsegundos que deseamos
que dure cada pulso enviado al servomotor.
Esta es la razón por la cual hemos multiplicado por diez el dato a ser
mostrado en la caja de texto, especificando además la unidad de tiempo
correspondiente, que en este caso se expresa con la palabra
“Microsegundos”.
292
[Link] 302/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 14.1.
El voltaje de alimentación no debe exceder los 3.3 Vdc, por lo cual se debe
considerar el uso de una regulador de voltaje para el transmisor y receptor,
considerando que el voltaje estándar en nuestros circuitos ha sido de 5 Vdc.
293
[Link] 303/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Transmisor: TXM-418-LR-S
Figura 14.2.
Receptor: RXM-418-LR-S
Figura 14.3.
294
[Link] 304/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 14.4.
295
[Link] 305/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 14.5.
296
[Link] 306/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Circuito Receptor:
Figura 14.6.
297
[Link] 307/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 39
Componente Cantidad
PIC16F877A 1
PIC16F84A 1
Cristal de 4 Mhz 2
Capacitor cerámico de 22 pF 4
TXM-418-LR-S con antena 1
RXM-418-LR-S con antena 1
Pantalla LCD 16x2 2
Potenciómetro de 5K Ohm 2
Resistencia de 390 Ohm 2
Resistencia de 750 Ohm 1
Resistencia de 10K Ohm 1
Fuente regulada de 3.3 Vdc / 5 Vdc 2
Tabla 14.1.
inicio:
298
[Link] 308/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
SerOut PORTB.0, T9600, [I] ' Envía los datos por RB0
Next I
End
inicio:
End
Como podemos observar en los diagramas de los circuitos, los módulos TXM-
418-LR-S y RXM-418-LR-S conforman el medio a través del cual viajan los
datos, sustituyendo al cable, cuyas limitaciones son de apenas unos pocos
metros cuando se requiere de comunicación serial RS-232.
299
[Link] 309/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 14.7.
300
[Link] 310/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Circuito Receptor:
Figura 14.8.
301
[Link] 311/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Proyecto # 40
Componente Cantidad
PIC16F877A 1
PIC16F84A 1
Cristal de 4 Mhz 2
Capacitor cerámico de 22 pF 4
Pantalla LCD 16x2 2
TXM-418-LR-S con antena 1
RXM-418-LR-S con antena 1
Resistencia de 1K Ohm 4
Resistencia de 390 Ohm 2
Resistencia de 750 Ohm 1
Resistencia de 10K Ohm 1
Potenciómetro de 5K Ohm 2
Tabla 14.2.
302
[Link] 312/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
teclado:
PORTD.1
PORTD.2 =
= 1
1 '
' Columna
Columna 2
3 =
= 1
1
303
[Link] 313/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
inicio:
End
304
[Link] 314/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 14.9.
305
[Link] 315/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 14.10.
306
[Link] 316/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
inicio:
LCDOUT $fe, 2,"Dato: ",#TECLA," " ' Muestra dato por la LCD
GoTo inicio ' Salto a inicio
teclado:
tecla = 0
307
[Link] 317/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Return
End
inicio:
308
[Link] 318/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
sigue:
End
309
[Link] 319/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Sintaxis:
Esta instrucción es utilizada para insertar dentro del código PicBasic, líneas
de programa en lenguaje ensamblador. En este caso, cada línea en lenguaje
ensamblador debe llevar el símbolo @ al inicio.
Ejemplo:
Led Var Byte ' Declaración de Variable Led
Inicio:
End
310
[Link] 320/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
ADCin
Sintaxis:
Asm… EndAsm
Sintaxis:
Asm
*
*
Instrucciones en lenguaje ensamblador
*
*
EndAsm
311
[Link] 321/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Branch
Sintaxis:
inicio:
Branch I,[Led1,Led2,Led3]
Led1:
PORTB = %00000001 ' enciende el led en RB0
pause 1000 ' pause de 1 segundo
PORTB = %00000000 ' apaga el led
I = I + 1 ' suma 1 a la variable I
GoTo inicio ' salta a inicio
Led2:
PORTB = %00000010 ' enciende el led en RB1
pause 1000 ' pause de 1 segundo
PORTB = %00000000 ' apaga el Led
I = I + 1 ' suma 1 a la variable I
GoTo inicio ' salta a inicio
Led3:
PORTB = %00000100 ' enciende el led en RB2
pause 1000 ' pause de 1 segundo
PORTB = %00000000 ' apaga el Led
I = 0 ' Inicializa la variable I
GoTo inicio ' salta a inicio
End
312
[Link] 322/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Button
Estado: indica cual es estado lógico que debe ocurrir cuando el pulsador es
presionado (0 o 1). Si es 0, el pulsador deberá ser activo-bajo y si es 1, el
pulsador deberá ser activo-alto (Ver figura 15.1).
+5V +5V
R1
10 Kohm S1
Pulsador
Al Pin
Al Pin
S1
Pulsador R1
10 Kohm
Activo-Bajo Activo-Alto
Figura 15.1.
313
[Link] 323/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Variable: es una variable auxiliar tipo Byte, definida también al inicio del
programa para uso exclusivo de la instrucción Button, por lo cual no deberá
ser utilizada con otro fin en el programa. Siempre debe ser inicializada antes
del comando Button.
Lcdout $fe,1
A0 = 0 ' inicializa la variable A0
inicio:
Button PORTB.0,1,2,2,A0,0,NoPres
PulsOut PORTB.1,150
NoPres:
Pause 10
GoTo inicio ' Salta a inicio
End
314
[Link] 324/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Call
Sintaxis:
Call etiqueta
La instrucción “Call”, llama a una subrutina la cual está identificada con una
etiqueta, y una vez culminada la subrutina la cual contiene al final la
instrucción “Return”, vuelve a la siguiente línea después del llamado.
Ejemplo:
inicio:
Call Teclado
If A0 = 1 Then led1
.
.
.
Teclado:
.
.
.
.
Return
End
Clear
Sintaxis:
Clear
315
[Link] 325/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
ClearWDT
Sintaxis:
ClearWDT
Count
Sintaxis:
316
[Link] 326/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Data
Sintaxis:
Ejemplo:
Data @10,1,3,5,7,9
DTMFout
Sintaxis:
[Link] 327/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tono: puede
tono que debeser
seruna variable o constante (entre 0 – 15), que especifica el
generado.
Dígito en la Dígito en un
Frecuencias Frecuencias
Instrucción Teclado
Bajas Altas
DTMFout Telefónico
1 1 697 HZ 1209 HZ
2 2 697 HZ 1336 HZ
3 3 697 HZ 1477 HZ
4 4 770 HZ 1209 HZ
5 5 770 HZ 1336 HZ
6 6 770 HZ 1477 HZ
7 7 852 HZ 1209 HZ
8 8 852 HZ 1336 HZ
9 9 852 HZ 1477 HZ
10 0 941 HZ 1209 HZ
11 * 941 HZ 1336 HZ
12 # 941 HZ 1477 HZ
13 A 697 HZ 1633 HZ
14 B 770 HZ 1633 HZ
15 C 852 HZ 1633 HZ
0 D 941 HZ 1633 HZ
Tabla 15.1.
318
[Link] 328/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura 15.2.
Ejemplo:
DTMFout PortC.0, [0,1,2,3,4,5,6,7,8,9]
Ejemplo:
DTMFout PortC.0,400,150, [6,4,3,8,7,1,0]
319
[Link] 329/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Los tonos tendrán una duración de 400 milisegundos cada uno y un tiempo en
silencio entre ellos de 150 milisegundos.
R1 R2
1K 1K
Al Pin Al amplif icador de Audio
C1 C2
0.1 uF 0.1 uF
GND GND
C1
Al Pin
10 uF
C2
10 uF
Parlante
GND
Figura 15.3.
320
[Link] 330/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
EEPROM
Sintaxis:
END
Sintaxis:
End
FREQOUT
Sintaxis:
321
[Link] 331/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
322
[Link] 332/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
FOR… NEXT
Sintaxis:
Inicio:
For Z = 0 To 10
Next Z
End
323
[Link] 333/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Gosub
Sintaxis:
Gosub etiqueta
GOTO
Sintaxis:
GOTO etiqueta
HIGH
Sintaxis:
HIGH pin
Ejemplo:
Inicio:
324
[Link] 334/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
GoTo inicio
End
I2CREAD
Sintaxis:
A1 VAR Byte
Direc VAR Word
Control VAR Byte
inicio:
' memoria
325
[Link] 335/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
I2CWRITE
Sintaxis:
inicio:
Direc = $10 ' Dirección en la memoria externa
Control = $A0 ' Dato de Control
IF – THEM – ELSE
Sintaxis:
Con la instrucción “If – Them” podemos seleccionar uno, dos o mas posibles
comportamientos de programa, tomando decisiones en una estructura de
programación sencilla y la cual será considerada casi en la totalidad de los
programas.
326
[Link] 336/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Espera:
GoTo Espera
End
Ejemplo 2:
inicio:
Espera:
GoTo Espera
End
Solo se utiliza “EndIf” cuando deseamos tener más de una condición o toma
de decisión.
327
[Link] 337/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Ejemplo 3:
A VAR Byte
inicio:
If PORTA.0 = 1 Then
A = A + 1
EndIf
GoTo inicio ' Salta a "inicio"
Espera:
GoTo Espera
End
INPUT
Sintaxis:
INPUT PIN
Espera:
GoTo Espera
End
328
[Link] 338/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LCDIN
Sintaxis:
Ejemplo:
A VAR Byte
inicio:
Espera:
GoTo Espera
End
329
[Link] 339/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LCDout
Sintaxis:
Comando Acción
$FE, 1 Limpia la pantalla
$FE, 2 Retorna al inicio de la primera línea
$FE, $0C Apaga el Cursor
$FE, $0E Cursor bajo (Underline "_") activo
$FE, $0F Cursor intermitente activo
$FE, $10 Mueve el cursor un espacio a la izquierda
$FE, $14 Mueve el cursor un espacio a la derecha
$FE, $C0 Mueve el cursor al inicio de la segunda línea
$FE, $90 Mueve el cursor al inicio de la tercera línea
$FE, $D0 Mueve el cursor al inicio de la cuarta línea
Tabla 15.2.
Ejemplo:
Pause 200
Inicio:
GoTo Inicio
End
330
[Link] 340/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LOW
Sintaxis:
LOW pin
La instrucción “LOW” coloca en cero lógico un pin específico.
Ejemplo:
inicio:
espera:
GoTo espera
End
NAP
Sintaxis:
NAP periodo
La instrucción “NAP” pone el microcontrolador en modo de bajo consumo de
energía por periodos de tiempo definidos en la siguiente tabla:
331
[Link] 341/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Ejemplo:
inicio:
espera:
GoTo espera
End
OUTPUT
Sintaxis:
OUTPUT pin
espera:
GoTo espera
End
332
[Link] 342/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PAUSE
Sintaxis:
PAUSE periodo
End
PAUSEUS
Sintaxis:
PAUSEUS periodo
Ejemplo:
333
[Link] 343/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
inicio:
End
POT
Sintaxis:
334
[Link] 344/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PULSIN
Sintaxis:
Inicio:
PulsIn PORTB.0,1,LECTURA
335
[Link] 345/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
PULSOUT
Sintaxis:
Inicio:
PWM
Sintaxis:
336
[Link] 346/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Ejemplo:
DEFINE OSC 4 ' Define el oscilador en 4 Mhz
Inicio:
End
RANDOM
Sintaxis:
RANDOM variable
Ejemplo:
A0 VAR Word ' Declaración de variable "A0" Word (16 Bits)
Inicio:
337
[Link] 347/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
READ
Sintaxis:
I VAR Byte
DIRECCION VAR Byte
DATO VAR Byte
Inicio:
338
[Link] 348/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
LCDOut "Direccion:
LCDOut $fe,$C0, ",#DIRECCION,"
"Dato: ",#DATO," "" ' Muestra el
' Muestra dirección
dato leído
RETURN
Sintaxis:
RETURN
Retorno de una subrutina desde donde se ha generado un salto del tipo Call o
Gosub.
Ejemplo:
inicio:
Call Teclado
If A0 = 1 Then led1
.
.
.
Teclado:
.
.
.
.
Return
End
339
[Link] 349/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
REVERSE
Sintaxis:
REVERSE pin
SELECT CASE
Sintaxis:
I VAR Byte
Z VAR Byte
340
[Link] 350/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Inicio:
Case 1
Case 2
Case 3
End Select
Final:
GoTo Final
End
341
[Link] 351/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
SERIN
Sintaxis:
Inicio:
342
[Link] 352/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
End
SEROUT
Sintaxis:
SEROUT pin, modo, [variable]
Inicio:
SerOut PORTC.6, T9600, [#I] ' “#” envía los datos en ASCII
Next I
343
[Link] 353/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
End
SLEEP
Sintaxis:
SLEEP período
Inicio:
Espera:
End
SWAP
Sintaxis:
SWAP variable, variable
Ejemplo:
A1 VAR Byte ' Define la variable "A1" como Byte
B1 VAR Byte ' Define la variable "B1" como Byte
344
[Link] 354/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
A1 = 10
B1 = 15
Espera:
GoTo Espera ' Salta a la etiqueta "Espera"
End
TOGGLE
Sintaxis:
TOGGLE pin
Ejemplo:
Inicio:
345
[Link] 355/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
End
WHILE-WEND
Sintaxis:
WHILE condición
...instrucciones...
WEND
Inicio:
Wend
346
[Link] 356/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Espera:
GoTo Espera ' Salta a la etiqueta "espera"
End
WRITE
Sintaxis:
WRITE dirección, variable
Inicio:
espera:
GoTo espera
End
347
[Link] 357/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Apéndice A
Existe
cuales una granadquirir
puede diversidad de programadores
en tiendas paraOnLine
de electrónica microcontroladores PIC los
o en su proveedor
local de componentes electrónicos. Sin embargo, consideramos una
excelente experiencia llevar a cabo la construcción de su propio programador
por lo cual le proponemos uno de los más populares y prácticos, capaz de
programar una gran variedad de modelos de microcontroladores PIC, de muy
bajo costo y fácil construcción. Recomendamos P16Pro, programador de
microcontroladores desarrollado por Bojan Dobaj de Slovenia, cuyo sitio oficial
en la red es [Link]
Figura A.1.
348
[Link] 358/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Software:
Figura A.2.
349
[Link] 359/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.3.
Figura A.4.
350
[Link] 360/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.5.
Figura A.6.
351
[Link] 361/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.7.
Figura A.8.
352
[Link] 362/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.9.
353
[Link] 363/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Tipo de programador:
Figura A.10.
354
[Link] 364/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.11.
355
[Link] 365/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.12.
El software también cuenta con ayuda visual para saber la posición exacta del
microcontrolador en la base del programador, como se muestra en la figura
A.13. Notará que al cambiar el modelo de microcontrolador a ser programado,
la figura cambia indicando la posición adecuada para evitar daños
irreversibles en el dispositivo.
356
[Link] 366/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Figura A.13.
357
[Link] 367/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
8 8 BS (backspace) Ctrl-H
Tabla B.1.
Fuente: [Link]
358
[Link] 368/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
Decimal Hex Display / Key Decimal Hex Display / Key Decimal Hex Display / Key
32 20 Space 64 40 @ 96 60 `
33 21 ! 65 41 A 97 61 a
34 22 " 66 42 B 98 62 b
35 23 # 67 43 C 99 63 c
36 24 $ 68 44 D 100 64 d
37 25 % 69 45 E 101 65 e
38 26 & 70 46 F 102 66 f
39 27 ' 71 47 G 103 67 g
40 28 ( 72 48 H 104 68 h
41 29 ) 73 49 I 105 69 i
42 2A * 74 4A J 106 6A j
43 2B + 75 4B K 107 6B k
44 2C , 76 4C L 108 6C l
45 2D - 77 4D M 109 6D m
46 2E . 78 4E N 110 6E n
47 2F / 79 4F O 111 6F o
48 30 0 80 50 P 112 70 p
49 31 1 81 51 Q 113 71 q
50 32 2 82 52 R 114 72 r
51 33 3 83 53 S 115 73 s
52 34 4 84 54 T 116 74 t
53 35 5 85 55 U 117 75 u
54 36 6 86 56 V 118 76 v
55 37 7 87 57 W 119 77 w
56 38 8 88 58 X 120 78 x
57 39 9 89 59 Y 121 79 y
58 3A : 90 5A Z 122 7A z
59 3B ; 91 5B [ 123 7B {
60 3C < 92 5C \ 124 7C |
61 3D = 93 5D ] 125 7D }
62 3E > 94 5E ^ 126 7E ~
63 3F ? 95 5F _ 127 7F DEL
Tabla B.2.
Fuente: [Link]
359
[Link] 369/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
360
[Link] 370/371
8/17/2019 BASIC PARA MICROCONTROLADORES PIC Christian Bodington [Link]
[Link]
361
[Link] 371/371