Beruflich Dokumente
Kultur Dokumente
LAB. DE MICROCONTROLADORES
PRCTICA 6
30/10/2017
PRCTICA #6
Objetivo.
Introduccin
El microcontrolador PIC16F877 tiene 8 posibles canales de entrada por los cuales se pueden procesar
seales analgicas, de 8 o 10 bits de resolucin. Los registros involucrados para este perifrico son los
mostrados a continuacin, la direccin y banco donde estn ubicados se pueden consultar en la
informacin dada en la prctica uno.
Un algoritmo a emplear para el uso del convertidor A/D, con resolucin de 8 bits:
1. Estando en el banco cero, limpiar el puerto A, usando CLRF PORTA.
2. Cambiar al banco uno.
3. Configurar el puerto A como entradas analgicas, escribir 00H al registro ADCON1.
4. Realizar la configuracin de la fuente de reloj, el canal de entrada y prender al convertidor A/D, en el
registro ADCON0.
5. Iniciar la conversin colocando un 1 a la bandera GO/DONE#.
6. Generar un tiempo de retardo de 20 microsegundos.
7. Esperar a que GO/DONE# sea igual a cero, lo que indica que ha concluido el proceso de conversin.
8. Lee el resultado de la conversin del registro ADRESH.
Desarrollo.
Realizar los programas solicitados y comprobar su funcionamiento.
1.- Empleando el canal de su eleccin del convertido A/D, realizar un programa en el cul, de acuerdo a
una entrada analgica que se ingrese por este canal, se represente el resultado de la conversin en un
puerto paralelo utilizar el arreglo de leds para ver la salida.
processor 16f877
include <p16f877.inc>
J EQU 0X20; localidades para subrutina de retraso
K EQU 0X21;
org 0H; carga el vector de RESET LA DIRECCION DE INICIO
goto inicio
ORG 05H;Direccin de inicio del programa del usuario
inicio: CLRF PORTA
BSF STATUS,RP0;Cambia al banco 1
BCF STATUS,RP1;
MOVLW 00H; pone un 0 en el registro w
MOVWF ADCON1; lo pone en ADCON1
MOVLW 00H:mueve un 0 en el registro W
MOVWF TRISB; lo pone en el registro TRISB
BCF STATUS,RP0; Regresa al banco cero
MOVLW b'11001001'; Establecemos frecuencia de reloj, cnal, el convertidor a/d
MOVWF ADCON0;movemos los bits de conf. A ADCON0
CLRF PORTB; limpiamos el REGISTRO PORTB
INICIO
BSF ADCON0,2; INICIAMOS LA CONVERSIN A/D
CALL retardo; Damos tiempo para que realice la conversin
BCF ADCON0,2; Damos fin a la conversin
MOVFW ADRESH; Leemos el resultado de la conversion
MOVWF PORTB; Lo cargamos en el puerto B
GOTO INICIO; Volvemos al inicio
;rutina de retraso de 25 milisegundos
CONVERS
BSF ADCON0,2; INICIAMOS LA CONVERSIN A/D
CALL retardo; Damos tiempo para que realice la conversin
BCF ADCON0,2; Damos fin a la conversin
MOVFW ADRESH; Leemos el resultado de la conversin
SUBLW D'85; restamos el contenido de ADRESH con un 85
BTFSC STATUS, C; revisamos la bandera de CARRY y si es 1 brinca
GOTO OPC1; va a la etiqueta opc1
MOVFW ADRESH; Leemos el resultado de la conversin
SUBLW D'170'; restamos 170 al contenido de ADRESH
BTFSC STATUS,C; revisamos la bandera de CARRY y si es 1 brinca
GOTO OPC2; vamos a la opc2
MOVLW H'07'; mueve un 7 al registro W
MOVWF PORTB ; lo pasa a registro PORTB
GOTO CONVERS; va a la etiqueta CONVERS
;rutina de retraso de 20 milisegundos
processor 16f877
include <p16f877.inc>
J EQU 0X20; localidades para subrutina de retraso
K EQU 0X21; carga el vector de RESET LA DIRECCION DE INICIO
canal0 EQU 0x22; declara 3 variables que sern para guardar el contenido de
canal1 EQU 0x23; cada uno de los canales del convertidor analgico digital.
canal2 EQU 0x24
org 0H; vector reset
goto inicio; va a la etiqueta inicio
ORG 05H;Direccin de inicio del programa del usuario
inicio: CLRF PORTA; limpia el contenido de PORTA
BSF STATUS,RP0;Cambia al banco 1
BCF STATUS,RP1;
MOVLW 00H; pone un 0 en el registro W
MOVWF ADCON1; lo mueve al registro ADCON1
MOVLW 00H; pone un 0 en el registro W
MOVWF TRISB; lo mueve a TRISB
BCF STATUS,RP0; Regresa al banco cero
MOVLW b'11000001'; Establecemos frecuencia de reloj, cnal, el convertidor a/d
MOVWF ADCON0; vamos a escoger en esta ocasin el canal 0
CLRF PORTB; limpiamos PORTB
Conclusiones:
En esta prctica aprendimos a iniciar el convertidor analgico digital configurando el registro ADCON0
que nos permite elegir entre un oscilador externo o el interno del micro (bits 6 y 7), adems nos permite
elegir un y solo un canal con el que se va a trabajar (bits 3-5) a la vez, guardando su resultado en el
registro ADRESH y mostrando su salida en LEDS o en cualquier dispositivo digital.