Practica 12
Practica 12
Practica 12
ESIME AZCAPOTZALCO
Práctica 12
Materiales utilizados
-Potenciómetro de 1k
-Protoboard
-pic16F887
-programador para PIC
-Resistencias
-Display 7 segmentos
-Programa/código
Definiciones básicas
Comentarios
Sirve para documentar códigos, no se codifican en lenguaje máquina facilitando correcciones.
Dirección
Es cualquier dirección que permita identificar y/o comunicar entre sí los dispositivos informáticos o
las personas dentro de una red (por ejemplo, una red como Internet). No obstante, una dirección
electrónica puede tener varios contextos.
Etiquetas
Identifican una posición exacta en el programa.
Escritura
Estilo de escritura orientado
MPLab 8.92
Es una plataforma de desarrollo integrada por Windows con múltiples prestaciones que permite
escribir el programa para los pic en lenguaje ensamblado.
Lectura/Salida
Los datos deben introducirse en serie, es decir, bit a bit
por una única línea. La salida se obtendrá de la misma manera.
Display
Dispositivo de ciertos aparatos electrónicos que permite mostrar información al usuario de manera
visual o táctil. Un visualizador de una señal de vídeo se lo llama más comúnmente pantalla; los dos
ejemplos más comunes son el televisor y el Monitor de computadora.
Descripción de Funcionamiento
Se creará y utilizará un código en mplab que podrá realizar la función medidor de voltaje en un
pic16F887 a través de un programador.
Código utilizado
list p=16F887
#include<P16F887.inc>
__CONFIG 0x2007,23E4
__CONFIG 0x2008,3FFF
NUM EQU 20h
NUM2 EQU 21h
REGISTRO1 EQU 22h
REGISTRO2 EQU 23h
REGISTRO3 EQU 24h
UNI EQU 25h
DEC EQU 26h
CEN EQU 27h
conta EQU 28h
contb EQU 29h
NUM3 EQU 2AH
NUM4 EQU 2BH
org 0x00;
goto inicio; inicio de nuestro programa por etiqueta
org 0x05; posicion origen de memoria de nuestro programa inicio
inicio
CALL RETARDO
bsf STATUS,RP0; Por medio del registro estatus, colocando un "1" en el bit rp0 accedemos al
banco 1
bcf STATUS,RP1; Pone un "0" en el RP1, accediendo al banco 1
movlw 0x00
movwf TRISB;
bsf STATUS,RP1; Accedemos al banco 3
movlw B'00000001' ; AN0 COMO ENTRADA ANALOGICA
movwf ANSEL
clrf ANSELH; Limpiamos a ponemos en "0" estos registros para especificar que los usaremos
de manera Digital
bcf STATUS,RP1; Regresamos a nuestro banco 1
movlw B'00000000'; V de referencia del pic
movwf ADCON1
bcf STATUS,RP0; REGRESAMOS AL BANCO 1
movlw B'11000001'; RC INT, AN7,ADCON ACT
movwf ADCON0
clrf PORTB
LOOP
MAIN
CALL R1
CLRF NUM
BSF ADCON0,1
BTFSC ADCON0,1
goto $-1
movf ADRESH,W
movwf NUM
CALL BI_DC
;CINCO
MOVF CEN,W
MOVWF NUM2
MOVF DEC,W
MOVWF NUM3
MOVF UNI,W
MOVWF NUM4
MOVLW .2
SUBWF NUM2,F
BTFSS STATUS,C
GOTO TRES
MOVLW .5
SUBWF NUM3,F
BTFSS STATUS,C
GOTO CUATRO
MOVLW 0x6D
MOVWF PORTB
GOTO LOOP
CUATRO
MOVLW 0x66
MOVWF PORTB
GOTO LOOP
TRES
MOVF CEN,W
MOVWF NUM2
MOVF DEC,W
MOVWF NUM3
MOVF UNI,W
MOVWF NUM4
MOVLW .1
SUBWF NUM2,F
BTFSS STATUS,C
GOTO UNO
MOVLW .5
SUBWF NUM3,F
BTFSS STATUS,C
GOTO DOS
MOVLW 0x4F
MOVWF PORTB
GOTO LOOP
DOS
MOVLW 0x5B
MOVWF PORTB
GOTO LOOP
UNO
MOVF CEN,W
MOVWF NUM2
MOVF DEC,W
MOVWF NUM3
MOVF UNI,W
MOVWF NUM4
MOVLW .5
SUBWF NUM3,F
BTFSS STATUS,C
GOTO CERO
MOVLW 0x06
MOVWF PORTB
GOTO LOOP
CERO
MOVLW 0x3F
MOVWF PORTB
GOTO LOOP
;++++++++++++++++++BINARIO A DECIMAL
BI_DC:
CLRF UNI
CLRF DEC
CLRF CEN
R100: MOVLW .100
SUBWF NUM,F
BTFSS STATUS,C
GOTO S100
INCF CEN,F
GOTO R100
S100: MOVLW .100
ADDWF NUM,F
R10: MOVLW .10
SUBWF NUM,F
BTFSS STATUS,C
GOTO S10
INCF DEC,F
GOTO R10
S10: MOVLW .10
ADDWF NUM,F
MOVF NUM,W
MOVWF UNI
RETURN
;++++++++R
RETARDO
MOVLW 0x0E
ANDLW 0x0F
MOVWF REGISTRO1
INCF REGISTRO1
CICLO1
MOVLW .89
MOVWF REGISTRO2
CICLO2
MOVLW .126
MOVWF REGISTRO3
CICLO3
DECFSZ REGISTRO3, F
GOTO CICLO3
DECFSZ REGISTRO2, F
GOTO CICLO2
DECFSZ REGISTRO1, F
GOTO CICLO1
RETURN
;+++++++ R1
R1 ; RUTINA DE
CLRF conta
CLRF contb
movlw 0xE7
movwf conta
movlw 0x02
movwf contb
waitA
decfsz conta,F
goto waitA
decfsz contb,F
goto waitA
return
END;
Instrucciones de código
Registros
Simulación en Proteus
Conclusiones
Se logró realizar el circuito, esto fue de ayuda para la comprensión de la suma dentro del PIC, de las
entradas y salidas, así como se pudo adquirir la experiencia en esta materia, útil para otros proyectos
y en la programación en lenguaje ensamblador, es decir, esta práctica se completó de excelente
manera y fue muy satisfactoria.