Académique Documents
Professionnel Documents
Culture Documents
PREFACIO.........................................................................................................................3
PRÁCTICA # 1.- INTRODUCCIÓN AL MPLAB..................................................................4
PRÁCTICA # 2.- USO DEL PROGRAMADOR DE MICROCONTROLADORES............11
PRÁCTICA # 3.- MANEJO DE PUERTOS DIGITALES...................................................16
PRÁCTICA # 4.- CONVERTIDOR ANALÓGICO DIGITAL..............................................21
PRÁCTICA # 5.- COMUNICACIÓN SERIE ASÍNCRONA...............................................25
PRÁCTICA # 6.- MANEJO DE TEMPORIZADORES......................................................32
PRÁCTICA # 7.- MANEJO DE MÓDULOS CAPTURE/COMPARE/PWM......................36
PRÁCTICA # 8.- MANEJO DE INTERRUPCIONES........................................................43
PRÁCTICA # 9.- PROGRAMACIÓN DE MEMORIA EEPROM.......................................48
PREFACIO
En las tres prácticas que siguen, en alumno se familiarizará con los Sistemas que
basan su funcionalidad en el uso del sistema de Reloj del Microcontrolador, que son
Temporizadores, Contadores, Entradas por Captura, Salidas por Comparación, PWM,
así como el sistema de Interrupciones.
OBJETIVOS:
INTRODUCCIÓN:
El MPLAB está diseñado para ser ejecutado bajo Windows 3.11, y puede operar con
Windows 95 y 98. Asume que el usuario ya conoce el entorno de Windows y sabe
manejarlo.
DESARROLLO
1. Para iniciar MPLAB IDE, dar doble clic al icono instalado en el Escritorio o
seleccionar Inicio>Programas>Microchip>MPLAB IDE vx.xx>MPLAB IDE.
a. Desplegándose la ventana de trabajo de MPLAB. (Figura 1).
6. En el paso siguiente se les pide que agreguen al proyecto los archivos codificados
en ensamblador (si es que ya cuentan con ellos), aquí daremos clic en Next>.
Mostrándose un resumen de la configuración del Asistente, donde daremos clic en
Finalizar>
__CONFIG 0x3F39
CLRW
MOVWF PORTB
CLRF TRISB
CALL RETARDO
MOVLW 0x00
MOVWF PORTB
CALL RETARDO
GOTO PPAL
DECFSZ REG2, F
GOTO DEM2
DECFSZ REG1, F
GOTO DEM3
RETLW 0
END
10. Si usamos el PIC16F887A, escribiremos:
LIST P=16F887
#INCLUDE <P16F887.INC>
CLRW
MOVWF PORTB
CLRF TRISB
CALL RETARDO
MOVLW 0x00
MOVWF PORTB
CALL RETARDO
GOTO PPAL
DECFSZ REG2, F
GOTO DEM2
DECFSZ REG1, F
GOTO DEM3
RETLW 0
END
11. Se agrega el archivo del código del programa (PRACT01.ASM) al administrador de
proyectos, posicionando el cursor en la carpeta SORCE FILES, se da clic al botón
derecho y del menú emergente seleccionamos ADD FILES. Buscando el código del
programa que acabamos de crear.
13. Del menú Project, podemos ensamblar y ligar los archivos del proyecto. Todavía no
tiene código propio en ellos, pero con esto se asegura de que el proyecto esté
configurado correctamente. Para construir el proyecto se debe seleccionar:
a. Project>Build All
b. Dar clic al botón derecho del ratón y seleccionar Build All en la ventana
emergente.
c. Dar clic en el botón Build All en la barra de herramientas de Proyectos.
14. La ventana de salida muestra los resultados del proceso de construcción. Donde no
debería presentarse ningún error. De presentarse algún error, se abre un archivo de
bitácora, indicando la línea donde se presenta el error y una breve descripción del
error que se presento. Se debe corregir y volver a ensamblar hasta que no se
presenten mensajes de ERROR o de WARNING.
15. Observar la carpeta donde se creó el proyecto. Observe los archivos que se han
creado. Abra y analice los archivos con extensión *.LST y *.HEX
SIMULACIÓN
3. Para ejecutar una instrucción del programa se selecciona Debugger>Step Into. Esto
ejecuta la línea de código actual y mueve la flecha a la siguiente línea de código a
ser ejecutada. Para seguir ejecutando el código del programa se sigue
seleccionando la función Step Into.
5. Existen una serie de opciones rápidas para las funciones de las herramientas de
depuración:
Figura 3. Ventana Watch, para verificar los valores de los Registros y variables.
9. Ejecute el programa paso a paso presionando la tecla F7, verificando los valores
arrojados en cada variable en la ventana de visualización al ejecutarse cada
instrucción. Los registros y variables que son modificadas con la ejecución de cada
instrucción, se ven de color rojo). Si presiona la tecla F8 las subrutinas se ejecutan
como si fueran instrucciones simples.
PRÁCTICA # 2.- USO DEL PROGRAMADOR DE
MICROCONTROLADORES
OBJETIVOS:
INTRODUCCIÓN:
DESARROLLO
1. Para esta práctica es necesario contar con un programa funcional, que se encuentre
ya Ensamblado y Ligado, y de preferencia haber hecho una simulación de la
funcionalidad del mismo (el archivo PRAC01.HEX de la práctica anterior).
2. Conectar el Programador Universal al puerto serie, paralelo o USB, según sea el
caso.
3. Ejecutar el Software con el que opera el Programador Universal empleado:
PROGRAMADOR CHIPMAX
VC C
U 1
2
M C LR 1 R A0 3
O SC 1 13 M C L R /V P P R A1 4
O S C 1 /C L K R A2 5
11 R A3 6
32 VD D R A 4 /T 0 C L K 7
VD D R A 5 /S S 33
R B 0 /IN T 34
R B1 35
R B2 36
R B3 37 R 3
R B4 38 470
R B5 39
R B6 40
R B7 15
R C 0 /T 1 O S I/T 1 C L K 16
R C 1 /T 1 O S O 17
R C 2 /C C P 1 18 D 1
R C 3 /S C K /S C L 23
R C 4 /S D I/S D A 24 LED
R C 5 /S D O 25
R C 6 26
R C 7 19
R D 0 /P S P 0 20
R D 1 /P S P 1 21
R D 2 /P S P 2 22
R D 3 /P S P 3 27
R D 4 /P S P 4 28
R D 5 /P S P 5 29
R D 6 /P S P 6 30
R D 7 /P S P 7 8
R E 0 /R D 9
R E 1 /W R 10
R E 2 /C S
G N D
G N D
14 O SC 2
O S C 2 /C L K O U T
P IC 1 6 F 8 7 7
12
31
VC C
C 1
O SC 1
R 2
47k
22pF Y 1
SW 1
C 2 8 MH z M C LR
O SC 2
S W P U S H B U TTO N
22pF
OBJETIVOS:
INTRODUCCIÓN:
El PIC16F877 contiene 5 puertos que pueden ser configurados como entrada o salida
digitales (A, B, C, D, E). El puerto A contiene 6 bits (RA0-5). El puerto B (RB0-7), el
puerto C (RC0-7) y el puerto D (RD0-7) tienen cada uno 8 líneas. El puerto E solo
cuenta con 3 líneas (RE0-2)
DESARROLLO
1 4 O SC 2
O S C 2 /C L K O U T R A 5
R A 4
P IC 1 6 F 8 7 7 R A 3
12
31
R A 2
R A 1
R A 0
VC C
6
5
4
3
2
1
0
1
1
1
1
1
1
1
9
C 1 SW 2
O SC 1
R 1 S W D IP -8
47k
22pF Y 1
SW 1
1
2
3
4
5
6
7
8
C 2 8 M H z M C LR
O SC 2
SW P U SH B U TTO N
22pF
Actividad Complementaria:
Escriba un programa en el que se configure el puerto A como entrada y el puerto B
como salida, el algoritmo debe leer el valor binario del puerto A (4 microswitch en la
parte baja del puerto) y desplegarlo en el puerto B donde se tendrá un display de 7
segmentos de Ánodo Común, si consigues un display de Cátodo Común, la terminal
común del diagrama deberá conectarse a GND. Ensamblar, depurar, simular el
programa y probar el funcionamiento en un circuito Microcontrolador.
VC C VC C
U 1
R 2 470
2 R A 0 R B0 a
M C LR 1 R A0 3 R A 1
O SC 1 13 M C L R /V P P R A1 4 R A 2 R 3 470
O S C 1 /C L K R A2 5 R A 3 R B1 b
11 R A3 6 R A 4
32 VD D R A 4 /T 0 C L K 7 R A 5 R 4 470
VD D R A 5 /S S 3 3 R B 0 R B2 c
R B 0 /IN T 3 4 R B 1
R B1 3 5 R B 2 R 5 470
R B2 3 6 R B 3 R B3 d
R B3 3 7 R B 4
R B4 3 8 R B 5 R 6 470
R B5 3 9 R B 6 R B4 e
R B6 4 0 R B 7
R B7 1 5 R 7 470
R C 0 /T 1 O S I/T 1 C L K 1 6 R B5 f
R C 1 /T1 O S O 1 7
R C 2 /C C P 1 1 8 R 8 470
R C 3 /S C K /S C L 2 3 R B6 g
R C 4 /S D I/S D A 2 4
R C 5 /S D O 2 5
R C 6 2 6
R C 7 1 9
R D 0 /P S P 0 2 0 VC C
R D 1 /P S P 1 2 1
R D 2 /P S P 2 2 2
R D 3 /P S P 3 2 7
R D 4 /P S P 4 2 8
R D 5 /P S P 5 2 9
R D 6 /P S P 6 3 0
R D 7 /P S P 7 8 R 10 R 11 R 12 R 13
R E 0 /R D 9 47k 47k 47k 47k
R E 1 /W R 1 0
R E 2 /C S
G N D
G N D
1 4 O SC 2
O S C 2 /C L K O U T
P IC 1 6 F 8 7 7 R A 3
12
31
R A 2
R A 1
R A 0
VC C
3
2
6
5
4
1
0
1
1
1
1
1
1
1
9
C 1 SW 2
O SC 1
R 1 S W D IP -8
47k
22pF Y 1
SW 1
1
2
3
4
5
6
7
8
C 2 8 M H z M C LR
O SC 2
S W PU SH B U TTO N
22pF
Escriba un programa que configure el puerto B parte baja (RB0-RB3) como entrada
y la parte alta (RB4-RB7) como salida y el puerto C como salida, en el puerto B se
tendrá conectado un teclado matricial de 4x4 y en el puerto C se tendrán conectado
un LCD de 16x2, en la parte baja (bits del 0 al 3) se tendrá conectado el bus de
datos parte alta (D4 a D7) y en la parte alta los bits de control (E y RS). El programa
checará la tecla presionada en el teclado matricial conectado al puerto B y lo
desplegara en el puerto C, haciendo un corrimiento hacia la derecha del valor
anterior, ejemplo: si se presiona la tecla ‘1’ se tiene desplegado “1_ _ _” y se
presiona la tecla “3”, se debe desplegar “1 3 _ _ ”. Ensamblar, depurar, simular el
programa y probar el funcionamiento en un circuito Microcontrolador. Omitir el
oscilador si usa un PIC 16F887.
VC C
VC C SW 2 SW 3 SW 4 SW 5
U 1 1 2 1 2 1 2 1 2
[0 ] [1 ] [2 ] [3 ]
2 [0 ] [1 ] [2 ] [3 ]
M C LR 1 R A0 3 R 10 R 11 R 12 R 13
O SC 1 13 M C L R /V P P R A1 4 47k 47k 47k 47k SW 6 SW 8
SW 7 SW 9
O S C 1 /C L K R A2 5
11 R A3 6 1 2 1 2 1 2 1 2
32 VD D R A 4 /T 0 C L K 7 [4 ] [5 ] [6 ] [7 ]
VD D R A 5 /S S 33 R B 0
R B 0 /IN T 34 R B 1 R B 0 R B 0 [4 ] [5 ] [6 ] [7 ]
R B1 R B 1
35 R B 2 R B 1 R B 2
S W 10 SW 11 SW 12 SW 13
R B2 36 R B 3 R B 2
R B3 R B 3
37 R B 4 R B 3 1 2 1 2 1 2 1 2
R B4 38 R B 5 [8 ] [9 ] [A ] [B ]
R B5 39 R B 6
R B6 40 R B 7 [8 ] [9 ] [A ] [B ]
R B7 15 R C 0 S W 14 SW 17
SW 15 SW 16
R C 0 /T 1 O S I/T 1 C L K 16 R C 1
R C 1 /T 1 O S O 17 R C 2
R C 2 /C C P 1 1 2 1 2 1 2 1 2
18 R C 3 [C ] [D ] [E ] [F ]
R C 3 /S C K /S C L 23 R C 4
R C 4 /S D I/S D A 24 R C 5 [C ] [D ] [E ] [F ]
R C 5 /S D O 25 R C 6 R B 4
R C 6 26 R C 7 R B 5
R C 7 19 R B 6 R B 4
R D 0 /P S P 0 20 R B 7 R B 5
R D 1 /P S P 1 21 R B 6
R D 2 /P S P 2 22 R B 7
VC C VC C VC C VC C
R D 3 /P S P 3 27
R D 4 /P S P 4 28 R C 4
R D 5 /P S P 5 29 R C 5 47 k
R D 6 /P S P 6 30 R C 6 3 3 3 3
R D 7 /P S P 7 8 R C 7 2 Q 1 2 Q 1 2 Q 1 2 Q 1
R E 0 /R D 9 12 N 2 2 2 2 12 N 2 2 2 2 12 N 2 2 2 2 12 N 2 2 2 2
R E 1 /W R 10
R E 2 /C S
G N D
G N D
14 O SC 2
O S C 2 /C L K O U T
VC C P IC 1 6 F 8 7 7 LC D 16x2
12
31
VC C
R 1
47k
0
1
2
3
4
5
6
1
2
3
4
5
6
7
8
9
1
1
1
1
1
1
1
SW 1
D D
EE
SS
/W
MC LR
S
0
1
2
3
4
5
6
7
R
R
D
D
D
D
D
D
D
D
V
V
V
R C 3
S W P U S H B U TTO N VC C R 2 470
R 5 R C 2
A R C 1
R 3 470 PO T
U 2 R C 0
1
R C 0 7 1 3 B
C 1 R C 1 1 1 A 1 2 R 4 470
2 B 2 R C 5
O SC 1 R C 2 2 1 1 C R C 4
R C 3 6 4 C 1 0 R 5 470
4 8 D 9 D
22pF Y 1 5 B I/R B O E 1 5 R 6 470
3 R BI F 1 4 E
C 2 8 M H z LT G R 7 470
3
O SC 2 74LS48 F
R 8 470
G
22pF
OBJETIVOS:
INTRODUCCIÓN:
Uno de los parámetros que definen al A/D es la resolución definida como la mínima
variación de voltaje en la entrada que produce cambio del valor digital en la salida. Por
ejemplo: un convertidor de 10 bits tiene un total de 2 10 valores (1024 valores de 0 a
1023).
DESARROLLO
_espera
btfsc ADCON0,GO
goto _espera
U 1 R 2 470 D 1 LED
R C 0
2 R A0
M C LR 1 R A0 3 R 3 470 D 2 LED
O SC 1 13 M C L R /V P P R A1 4 R C 1
O S C 1/C L K R A2 5 R B0 R 2 330 D 1
11 R A3 6 R 4 470 D 3 LED
32 VD D R A 4 /T 0 C L K 7 R C 2R B 1
VD D R A 5 /S S R 3 330 D 2
3 3
R B 0 /IN T 3 4 R 5 470 D 4 LED
R B1 3 5 R C 3R B 2
R B2 R 4 330 D 3
3 6
R B3 3 7 R 6 470 D 5 LED
R B4 3 8 R C 4R B 3 R 5 330 D 4
R B5 3 9
R B6 4 0 R 7 470 D 6 LED
R B7 1 5 R C 0 R C 5R B 4 R 6 330 D 5
R C 0 /T 1 O S I/T 1 C L K 1 6 R C 1
R C 1 /T 1 O S O 1 7 R C 2 R 8 470 D 7 LED
R C 2 /C C P 1 1 8 R C 3 R C 6R B 5 R 7 330 D 6
R C 3 /S C K /S C L 2 3 R C 4
R C 4 /S D I/S D A 2 4 R C 5 R 9 470 D 8 LED
R C 5/S D O 2 5 R C 6 R C 7R B 6 R 8 330 D 7
R C 6 2 6 R C 7
R C 7 1 9
R D 0 /P S P 0 R B7 R 9 330 D 8
2 0
R D 1 /P S P 1 2 1
R D 2 /P S P 2 2 2
R D 3 /P S P 3 2 7
R D 4 /P S P 4 2 8
R D 5 /P S P 5 2 9 VC C
R D 6 /P S P 6 3 0
R D 7 /P S P 7 8
R E 0 /R D 9
R E 1 /W R 1 0
R E 2 /C S
G N D
G N D
1 4 O SC 2
O S C 2 /C L K O U T
3
R 17
P IC 1 6 F 8 7 7 R 16
31
12
R A0 2 10K
470
1
VC C
C 1
O SC 1
R 1
22pF Y 1 47k
C 2 8 M H z SW 1
O SC 2 M C LR
SW P U SH B U TTO N
22pF
OBJETIVOS:
INTRODUCCIÓN:
Entre las herramientas que disponen los PIC16F87x se encuentra el USART, llamado
SCI (Serial Comunications Interface), puede funcionar como un sistema de
comunicación bidireccional, adaptándose a multitud de periféricos y dispositivos que
transfieren información de forma serial, tales como una computadora. También puede
trabajar en modo unidireccional para soportar periféricos como memorias,
convertidores, etc.
El USART (Transmisor/Receptor Síncrono/Asíncrono Serie) puede trabajar de dos
formas:
o Asíncrono (Bidireccional)
o Síncrono (Unidireccional)
En esta forma de comunicación serie, se usa la norma RS-232-C, donde cada palabra
de información o dato se envía independientemente de los demás. Cada dato está
formado de 8 ó 9 bits y van precedidos por un bit de START (inicio) y detrás de ellos se
coloca un bit de STOP (parada), de acuerdo con las normas del formato estándar NRZ
(Non Return-to-Zero), los bits se transfieren a una frecuencia fija y normalizada. La
USART transmite y recibe primero el bit menos significativo.
DESARROLLO
; TX DATO ADC
LIST P=16F887 CONF_TXD:
INCLUDE "P16F887.INC" BANKSEL BAUDCTL
__CONFIG _CONFIG1, 0x20D5 CLRF BAUDCTL
__CONFIG _CONFIG2, 0X3FFF BANKSEL SPBRG
MOVLW D'25'
DATO EQU 0X21 MOVWF SPBRG
CONT EQU 0X22 MOVLW B'00100100'
ORG 0x00 MOVWF TXSTA
NOP BANKSEL RCSTA
NOP BSF RCSTA, SPEN
CALL CONF_PTOS RETURN
CALL CONF_ADC ;----------------------
CALL CONF_TXD TOMA_MUESTRA:
CICLO: CALL RETARDO
CALL TOMA_MUESTRA BSF ADCON0, GO
CALL TX_DATO _ESPERA
GOTO CICLO BTFSC ADCON0,GO
;---------------------- GOTO _ESPERA
CONF_PTOS: MOVF ADRESH,W
BANKSEL ANSEL MOVWF DATO
CLRF ANSELH RETURN
CLRF ANSEL ;----------------------
BANKSEL TRISA TX_DATO:
BSF TRISA,0 MOVF DATO,W
BCF TRISC, 6 MOVWF TXREG
BSF TRISC, 7 _ESPERATX
BANKSEL PORTA BTFSS PIR1, TXIF
RETURN GOTO _ESPERATX
;---------------------- RETURN
CONF_ADC: ;----------------------
BANKSEL ANSEL RETARDO:
BSF ANSEL,0 MOVLW D'10'
BANKSEL ADCON1 MOVWF TEMP
CLRF ADCON1 CIX:
BANKSEL ADCON0 DECFSZ TEMP,F
MOVLW 0X01 GOTO CIX
MOVWF ADCON0 RETURN
RETURN ;----------------------
;---------------------- END
El siguiente código es para implementar la Recepción serial en un PIC16F887:
M C LR 1 2
M C LR 1 2 M C LR R A 0 3
M C LR R A 0 3 R A0 O SC 1 13 R A 1 4
O SC 1 13 R A 1 4 O S C 1 /C L K IN R A 2 5
O S C 1 /C L K IN R A 2 5 O SC 2 14 R A 3
O SC 2 14 R A 3 O S C 2 /C L K O U T 3 3 R B 0
O S C 2 /C L K O U T 3 3 R B 0 /IN T 3 4 R B 1
R B 0 /IN T 3 4 R B 1 3 5 R B 2
R B 1 3 5 R B 2 3 6 R B 3
R B 2 3 6 VC C R B 3 3 7 R B 4
VC C R B 3 3 7 R B 4 3 8 R B 5
R B 4 3 8 11 R B 5 3 9 R B 6
11 R B 5 3 9 VD D R B 6 4 0 R B 7
VD D R B 6 4 0 12 R B 7
12 R B 7 G N D 25
G N D 25 TXD R C 6 26 R XD
R C 6 26 R C 7
R C 7
P IC 1 6 F 8 8 7 (R X )
P IC 1 6 F 8 8 7 (T X )
VC C R B0 R 2 330 D 1
C 1
O SC 1
R B1 R 3 330 D 2
3
R 11
22pF Y 1 R 10 10K
R A0 2 R B2 R 4 330 D 3
C 2 4 M H Z
O SC 2 470
R B3 R 5 330 D 4
VC C
1
22pF
R B4 R 6 330 D 5
R 12
R B5 R 7 330 D 6
SW 1 470
1 2 M C LR R B6 R 8 330 D 7
S W P U SH BU TTO N R B7 R 9 330 D 8
Nota: El ejercicio considera que se tiene un cable de comunicación serial que será
conectado al puerto de la Computadora y a la terminal del circuito de esta práctica.
De no ser así, se recomienda checar las conexiones del puerto de comunicaciones,
para establecer una comunicación apropiada; la termina de TX (3) del equipo de
cómputo deberá conectarse con la terminal de Recepción del circuito y la terminal de
RX (2) del equipo de cómputo, deberá conectarse a la terminal de Transmisión del
circuito.
R 2 470 D 1 LED
VC C R B0
R 3 470 L C D 1D6 2x 2 LED
U 1 R B1
2 R 4 470 D 3 LED
M C LR 1 R A0 3 R B2
O SC 1 13 M C L R /V P P R A1 4
O S C 1 /C L K R A2 5 R 5 470 D 4 LED
11
12
14
16
10
13
15
VC C
1
2
3
4
5
6
7
8
9
11 R A3 6 R B3
VD D R A 4 /T0 C L K
VD D
VSS
VEE
32 7
R W
R C 3
D 0
D 1
D 2
D 3
D 4
D 5
D 6
D 7
VD D R A 5 /S S R 6 D 5
R S
33 R B 0 470 LED
E
R B 0 /IN T 34 R B 1 R B4 R C 2
R B1 35 R B 2 R C 1
R B2 36 R B 3 R 7 470 D 6 LED R C 0
R B3 37 R B 4 R B5
1
R B4 38 R B 5 VC C
R B5 R C 5
39 R B 6 R 8 470 D 7 LED
R B6 R 13 2 R C 4
40 R B 7 R B6
R B7 15
R C 0 /T 1 O S I/T 1 C L K 16
10K R 9 470 D 8 LED
R C 1 /T 1 O S O 17 R B7
3
R C 2 /C C P 1 18 R 11
R C 3 /S C K /S C L 23 R 10 10K
3
R C 4 /S D I/S D A 24
R C 5 /S D O R A0 2
25 TXD
R C 6 26 R XD
R C 7 470
19
R D 0 /P S P 0 20
R D 1 /P S P 1 21 VC C
1
R D 2 /P S P 2 22
R D 3 /P S P 3 27
R D 4 /P S P 4 28
R D 5 /P S P 5 U 3
29
16
R D 6 /P S P 6 30
R D 7 /P S P 7 M A X232
8 12 13
R E 0 /R D R 1O U T R 1 IN
VC C
9 R XD R 18 330 9 8 R 20 330 R XD B 9
R E 1 /W R 10 14 R 2O U T R 2 IN 11
R E 2 /C S T1O U T T1 IN
G N D
G N D
2 3 C 3 1uF
V+ C 1- 4
C 5 1uF 6 C 2+
V-
G N D
5 C 4 1uF
C 2-
VC C C 6
15
C 1 1uF
O SC 1
R 1
22pF Y 1 47k P1
5
C 2 8 MH z SW 1 9
O SC 2 M C LR 4
8
S W P U S H B U TTO N TXD B 9 3
22pF 7
R XD B 9 2
6
1
C O N N E C TO R D B 9
11. Para Configurar Hyper terminal, debemos realizar los pasos siguientes:
Una vez que se abra el hyper terminal observará una ventana como la que se muestra.
Elija el ícono para crear una conexión. A continuación le aparecerá una ventana de
mensajes:
Necesita instalar un modem antes de poder hacer una conexión Desea hacerlo
ahora? Elija el botón “No”
Figura 15. Programa HyperTerminal.
Si todo ha terminado sin novedad aparecerá una ventana como la que se muestra en
este momento podrá usted conectarse con algún dispositivo que tenga conectado al
COM2 y que transmita bajo parámetros establecidos (2400:8:0:1:Ninguna)
OBJETIVOS:
INTRODUCCIÓN:
Un sistema temporizador está definido como “Un sistema de control de tiempo que se
utiliza para abrir o cerrar un circuito en uno o más momentos determinados, y que
conectado a un dispositivo lo pone en acción”.
DESARROLLO
VC C
U 1 R 2 470 D 1 LED
R C 0
2
M C LR 1 R A0 3 R 3 470 D 2 LED
O SC 1 13 M C L R /V P P R A1 4 R C 1
O S C 1 /C L K R A2 5
11 R A3 6 R A4 R 4 470 D 3 LED
32 VD D R A 4 /T 0 C L K 7 R C 2
VD D R A 5 /S S 33 R B0
R B 0 /IN T 34 R 5 470 D 4 LED
R B1 35 R C 3
R B2 36
R B3 37 R 6 470 D 5 LED
R B4 38 R C 4
R B5 39
R B6 40 R 7 470 D 6 LED
R B7 15 R C 0 R C 5
R C 0 /T 1 O S I/T 1 C L K 16 R C 1
R C 1 /T1 O S O 17 R C 2 R 8 470 D 7 LED
R C 2 /C C P 1 18 R C 3 R C 6
R C 3 /S C K /S C L 23 R C 4
R C 4 /S D I/S D A 24 R C 5 R 9 470 D 8 LED
R C 5 /S D O 25 R C 6 R C 7
R C 6 26 R C 7
R C 7 19
R D 0 /P S P 0 20
R D 1 /P S P 1 21
R D 2 /P S P 2 22
R D 3 /P S P 3 27 VC C
R D 4 /P S P 4 28
R D 5 /P S P 5 29
R D 6 /P S P 6 30
R D 7 /P S P 7 8
R E 0 /R D 9 R 1
R E 1 /W R 10 47k
R E 2 /C S
G N D
G N D
14 O SC 2
O S C 2 /C L K O U T
SW 1
R B0
P IC 1 6 F 8 7 7
12
31
S W P U S H B U TTO N
VC C
VC C
C 1
O SC 1 R 1
47k
R 1
22pF Y 1 47k SW 1
R A4
C 2 8 M H z SW 1
O SC 2 M C LR S W P U S H B U TTO N
S W P U S H B U TTO N
22pF
OBJETIVOS:
INTRODUCCIÓN:
Figura 21. Diagrama a bloques del funcionamiento del sistema de Entradas por Captura
La salida PWM tiene una base de tiempo (periodo) y un tiempo en el que la salida se
mantiene en alto (ciclo de operación). La frecuencia de PWM es el inverso del periodo
(1/periodo).
Figura 24. Ciclo de trabajo de un periodo PWM
DESARROLLO
; *************************************************************************
ORG 0x00
REINICIO:
GOTO INICIO
; *************************************************************************
ORG 0x06
INICIO
CALL CONFIGURA_PUERTOS
CALL PWM1_15MS
CICLO:
BTFSS PORTB, RB0 ; SI EL PUERTOB<0>
GOTO GRADOS_90
GRADOS_00:
CALL PWM1_05MS_B
GOTO CICLO
GRADOS_90:
CALL PWM1_15MS_B
GOTO CICLO
GRADOS_180:
CALL PWM1_25MS_B
GOTO CICLO
; *************************************************************************
CONFIGURA_PUERTOS:
CALL BANCO_0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CALL BANCO_1
MOVLW B'10000000'
MOVWF TRISC
MOVLW B'00001111'
MOVWF TRISB
CALL BANCO_0
RETURN
; *************************************************************************
PWM1_15MS:
;PASO1:
CALL BANCO_1
MOVLW 0xF9 ; PR2= 249 = 0XF9
MOVWF PR2
CALL BANCO_0
;PASO2:
MOVLW 0X5D ;CCPR1L:CCP1CON=375=0X177=[0X5D:<11>]
MOVWF CCPR1L
;PASO3:
CALL BANCO_1
BCF TRISC, 2
CALL BANCO_0
;PASO4:
MOVLW B'00000110' ;
MOVWF T2CON
CLRF TMR2
;PASO5:
BSF CCP1CON, 2 ;
BSF CCP1CON,3
RETURN
; *************************************************************************
PWM1_05MS_B:
;PASO2:
MOVLW 0X1F ;CCPR1L:CCP1CON=62.5=0X3E=[0X0F:<10>]
MOVWF CCPR1L
RETURN
; *************************************************************************
PWM1_15MS_B:
;PASO2:
MOVLW 0X5D ;CCPR1L:CCP1CON=187.5=0XBB=[0X2E:<11>]
MOVWF CCPR1L
RETURN
; *************************************************************************
PWM1_25MS_B:
;PASO2:
MOVLW 0X9C ;CCPR1L:CCP1CON=312.5=0X138=[0X4E:<00>]
MOVWF CCPR1L
RETURN
; *************************************************************************
BANCO_0:
BCF STATUS, RP0
BCF STATUS, RP1
RETURN
BANCO_1:
BSF STATUS, RP0
BCF STATUS, RP1
RETURN
BANCO_2:
BCF STATUS, RP0
BSF STATUS, RP1
RETURN
BANCO_3:
BSF STATUS, RP0
BSF STATUS, RP1
RETURN
; *************************************************************************
; FIN DEL PROGRAMA
; *************************************************************************
END
R E 0 /R D 9 SW 18
R E 1 /W R 1 0
R E 2 /C S S W D IP -4
G N D
G N D
1 4 O SC 2
O S C 2 /C L K O U T
P IC 1 6 F 8 7 7
31
12
1
2
3
4
OBJETIVOS:
INTRODUCCIÓN:
ORG 0x04 ;
MOVWF _INT_SAVE_W ;
SWAPF STATUS, W ;
MOVWF _INT_SAVE_STATUS
SWAPF FSR, W ;
MOVWF _INT_SAVE_FSR
SWAPF PCLATH, W ;
MOVWF _INT_SAVE_PCLATH
SWAPF OPTION_REG, W ;
MOVWF _INT_SAVE_OPTION_REG
_INICIO
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
MOVLW b'01000001' ;A/D conversion Fosc/8
MOVWF ADCON0
BSF STATUS, RP0 ;Ir banco 1
BCF STATUS, RP1
_BUCLE
BSF ADCON0, GO ;Start A/D conversion
_ESPERA
BTFSC ADCON0, GO ;ADCON0 es 0? (la conversion esta completa?)
GOTO _espera ;No, ir _espera
MOVF ADRESH, W ;Si, W=ADRESH
MOVWF PORTC ;Muestra el resultado en PORTC
GOTO _BUCLE ;Ir bucle
_ESPERATX
BTFSS PIR1, TXIF ;Espera hasta que transmisión culminó
GOTO _ESPERATX ;No, ir _esperatx
MOVF RCREG, W ;Limpia el flag de interrupcion RCIF =0
BSF INTCON, PEIE ;Habilita INTR perifericos
SWAPF _INT_SAVE_OPTION_REG, W ;Restaurar valor de OPTIO_REG
MOVWF OPTION_REG
SWAPF _INT_SAVE_PCLATH, W ;Restaurar valor de PCLATH
MOVWF PCLATH
SWAPF _INT_SAVE_FSR, W ;Restaurar valor de FSR
MOVWF FSR
SWAPF _INT_SAVE_STATUS, W ;Restaurar valor de STATUS
MOVWF STATUS
SWAPF _INT_SAVE_W, W
RETFIE
END
2 R A0 R 4 470 D 3 LED
M C LR 1 R A0 3 R B2
O SC 1 13 M C L R /V P P R A1 4
O S C 1 /C L K R A2 5 R 5 470 D 4 LED
11 R A3 6 R B3
32 VD D R A 4 /T 0 C L K 7
VD D R A 5 /S S 33 R B 0 R 6 470 D 5 LED
R B 0 /IN T 34 R B 1 R B4
R B1 35 R B 2
R B2 36 R B 3 R 7 470 D 6 LED
R B3 37 R B 4 R B5
R B4 38 R B 5
R B5 39 R B 6 R 8 470 D 7 LED
R B6 40 R B 7 R B6
R B7 15
R C 0 /T 1 O S I/T 1 C L K 16 R 9 470 D 8 LED
R C 1 /T1 O S O 17 R B7
R C 2 /C C P 1 18
R C 3 /S C K /S C L 23
R C 4 /S D I/S D A 24
R C 5 /S D O 25 TXD
R C 6 26 R XD
R C 7 19
R D 0 /P S P 0 20
R D 1 /P S P 1 21 VC C
R D 2 /P S P 2 22
R D 3 /P S P 3 27
R D 4 /P S P 4 28
R D 5 /P S P 5 U 3
29
16
R D 6 /P S P 6 30
R D 7 /P S P 7 M A X232
8 12 13
R E 0 /R D R 1O U T R 1 IN
VC C
9 R XD R 18 330 9 8 R 20 330 R XD B 9
R E 1 /W R 10 14 R 2O U T R 2 IN 11
R E 2 /C S T1O U T T 1 IN
G N D
G N D
2 3 C 3 1uF
V+ C 1- 4
C 5 1uF 6 C 2+
V-
G N D
5 C 4 1uF
C 2-
C 6
VC C
15
C 1 1uF VC C
O SC 1
22pF Y 1 R 1 P1
47k 5
C 2 8 M H z 9
3
O SC 2 SW 1 4 R 17
M C LR 8 R 16
TXD B 9 3 R A0 2 10K
22pF S W P U S H B U TTO N 7
R XD B 9 2
6 470
1
1
C O N N EC TO R D B9
OBJETIVOS:
INTRODUCCIÓN:
_INICIO
BSF STATUS, RP0 ;Ir banco 1
BCF STATUS, RP1
CLRF TRISA ;PORTA salida
CLRF TRISB ;PORTB salida
CLRF TRISC ;PORTC salida
CLRF TRISD ;PORTD salida
CLRF TRISE
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
CLRF PORTC ;Limpiar PORTC
CLRF ADDR_L ;ADDR_L = 0x00 (Variables en banco2)
CALL LEER_EEPROM ;Llamar rutina de lectura
MOVF DATA_L, W ;W = DATA_L
MOVWF PORTC ;PORTC = W
INCF DATA_L, F ;incremento del dato leído de la EEPROM
CALL ESCRIBIR_EEPROM ;Llamar rutina de grabación
_BUCLE
GOTO _BUCLE ;Ir _bucle
ESCRIBIR_EEPROM:
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
MOVF ADDR_L, W ;EEADR = ADDR_L
BCF STATUS, RP0 ;Ir banco 2
BSF STATUS, RP1
MOVWF EEADR
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
MOVF DATA_L, W ;EEDATA = DATA_L
BCF STATUS, RP0 ;Ir banco 2
BSF STATUS, RP1
MOVWF EEDATA
BSF STATUS, RP0 ;Ir banco 3
BSF STATUS, RP1
BCF EECON1, EEPGD ;Apuntar a la memoria EEPROM
BSF EECON1, WREN ;Habilitar escritura
BCF INTCON, GIE ;Deshabilita interrupciones
MOVLW 55h
MOVWF EECON2 ;Escribe 55 hexadecimal
MOVLW 0xAA
MOVWF EECON2 ;Escribe AA hexadecimal
BSF EECON1, WR ;Habilita el bit de escritura
; BSF INTCON, GIE ;Habilita interrupciones
_BUCLE1
BTFSC EECON1, WR ;Espera el final de grabación
GOTO _BUCLE1 ;Si no termina la grabación: Ir _bucle
BCF PIR2, EEIF ;Si termina Borra bandera interrupción
BCF EECON1, WREN ;Deshabilitar escritura
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
RETURN ;Retorno
LEER_EEPROM:
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
MOVF ADDR_L, W ;Cargar dirección a leer
BCF STATUS, RP0 ;Ir banco 2
BSF STATUS, RP1
MOVWF EEADR
BSF STATUS, RP0 ;Ir banco 3
BSF STATUS, RP1
BCF EECON1, EEPGD ;Apunta a la memoria EEPROM
BSF EECON1, RD ;Habilita ciclo de lectura
BCF STATUS, RP0 ;Ir banco 2
BSF STATUS, RP1
MOVF EEDATA, W ;W = EEDATA (leer dato de EEPROM)
BCF STATUS, RP0 ;Ir banco 0
BCF STATUS, RP1
MOVWF DATA_L ;DATA_L = W (almacena dato de EEPROM)
RETURN ;Retorno
END
3
R D 7 /P S P 7 8 R 17
R E 0 /R D 9 R 16
R E 1 /W R 10 R A0 2 10K
R E 2 /C S
G N D
G N D
14 O SC 2
O S C 2 /C L K O U T
470
P IC 1 6 F 8 7 7 VC C
12
31
1
R 1
C 1 47k
O SC 1
SW 1
MC LR
22pF Y 1
S W P U S H B U TTO N
C 2 8 MH z
O SC 2
22pF