Instituto Politécnico Nacional
“Unidad Profesional Interdisciplinaria
en Ingeniería y Tecnologías Avanzadas”
“Arquitectura de Computadoras”
Alumnos:
Zarate Angeles Miguel Angel
Fragoso Torres Jesus Eduardo
Rodriguez Perez Daniel
Profesor:
Sergio Garduza Gonzalez
Actividad 6
Grupo: 1TM9
19/12/22
Objetivo
El alumno identificará las reglas fundamentales del lenguaje ensamblador para
implementar rutinas de tiempo, subrutinas y visualización de dígitos binarios.
Palabras clave
• Microcontrolador
• puertos I/O
• PIC16F887
• Lenguaje ensamblador
• Contador
• Bits
• Máster Clear
Introduccion teorica
¿Qué es el Microcontrolador PIC16F887?
El Microcontrolador PIC16F887 cuenta con 8 Bits, 14KB, 368 RAM, 20MHz, 40
Pines. Cuenta con un oscilador interno de precisión con frecuencia seleccionable
entre 31 kHz y 8 MHz. Este MCU puede reemplaza al 16F877 y al 16F877A.
Compatible con el modo de reposo para ahorro de energía, reinicio a la conexión
(POR), reinicio a la caída de voltaje (BOR) con control por opcional.
¿Para qué sirve el Microcontrolador PIC16F887?
El Microcontrolador PIC16F887 se puede aplicar en áreas como diseño embebido
y desarrollo, automoción, industrial, electrónica de consumos. Puede ser
programado tanto en lenguaje ensamblador y principalmente en C, para el que
existen numerosos compiladores. Cuando se utilizan los compiladores Basic, es
posible desarrollar útiles aplicaciones en tiempo récord, especialmente dirigidas
al campo doméstico y educacional.
Desarrollo
1. Configure el puerto A como entrada y el puerto B como salida, realice la
lectura del puerto A (8 bits) y escribalos en puerto B (8 bits). Compile,
simule y llevelo a la práctica en Proteus e impleméntelo físicamente.
Codigo del porgrama y evidencias:
;******************************************
PROCESSOR 16F887
__CONFIG 0x2007,23E4
__CONFIG 0x2008,3FFF
INCLUDE <P16F887.INC> ; Incluimos los Registros del PIC18F887..
;******************************************
;2 ORIGEN DEL PROGRAMA
ORG 0X00
;3 CONFIGURACION DEL PIC
MOVLW D'96'
MOVWF STATUS
CLRF ANSEL
CLRF ANSELH
BCF STATUS,6
CLRF TRISB
MOVLW D'255'
MOVWF TRISA
BCF STATUS,5
;4 PROGRAMA PRINCIPAL
INICIO
MOVF PORTA,0
MOVWF PORTB
GOTO INICIO
;5 SUBRUTINAS
;6 FIN DE PROGRAMA
END
2. Programe una rutina de alternancia (toggle, entre 0 y 1) en las el puerto B,
unicamente entre de RA5:RA2, el perioro de oscilación deberá ser de 200ms.
Visualice en LEDs. Escriba su código, corrija errores, compile, simule y
programe su C. Polarice adecuadamente su C y los periféricos en Proteus.
Visualice en un osciloscopio las señales producidas por RA3:RA0, determine
su amplitud y frecuencia, empleando los instrumentos de Proteus y con los
instrumentos reales.
Codigo del porgrama y evidencias:
;******************************************
PROCESSOR 16F887
__CONFIG 0x2007,23E4
__CONFIG 0x2008,3FFF
INCLUDE <P16F887.INC> ; Incluimos los Registros
del PIC18F887..
;******************************************
;1 DECLARACION DE VARIABLES
NUM1 EQU 0X70
NUM2 EQU 0X71
NUM3 EQU 0X72
;2 ORIGEN DEL PROGRAMA
ORG 0X00
;3 CONFIGURACION DEL PIC
MOVLW D'96'
MOVWF STATUS
CLRF ANSEL
CLRF ANSELH
BCF STATUS,6
CLRF TRISB
BCF STATUS,5
;4 PROGRAMA PRINCIPAL
INICIO
CLRF PORTB
CALL RETARDO
MOVLW B'00111100'
MOVWF PORTB
CALL RETARDO
GOTO INICIO
;5 SUBRUTINAS
RETARDO
MOVLW D'10'
MOVWF NUM3
WAIT2
MOVLW D'200'
MOVWF NUM2
WAIT1
MOVLW D'166'
MOVWF NUM1
WAIT
DECFSZ NUM1,1
GOTO WAIT
DECFSZ NUM2,1
GOTO WAIT1
DECFSZ NUM3,1
GOTO WAIT2
RETURN
;6 FIN DE PROGRAMA
END
3. Diseño de un contador de 0 a 9, y entregue los números en LEDs en formato
binario por el puerto B, el conteo debe ser tal que el ojo humano lo pueda
visualizar (por ejemplo a 500ms). Incluya un SW (Switch) de stop, cuando
se oprima el conteo se dentendrá, si se libera continua el conteo. Escriba
su código, corrija errores, compile y programe su C. Polarice
adecuadamente su C y los periféricos.
Codigo del porgrama y evidencias:
;******************************************
PROCESSOR 16F887
__CONFIG 0x2007,23E4
__CONFIG 0x2008,3FFF
INCLUDE <P16F887.INC> ; Incluimos los Registros del PIC18F887..
;******************************************
;1 DECLARACION DE VARIABLES
NUMM1 EQU 0X022
NUM1 EQU 0X70
NUM2 EQU 0X71
NUM3 EQU 0X72
;2 ORIGEN DEL PROGRAMA
ORG 0X00
;3 CONFIGURACION DEL PIC
MOVLW D'96'
MOVWF STATUS
CLRF ANSEL
CLRF ANSELH
BCF STATUS,6
MOVLW B'00000001'
MOVWF TRISA
CLRF TRISB
BCF STATUS,5
;4 PROGRAMA PRINCIPAL
INICIO
MOVF NUMM1,W
SUBLW D'9'
BTFSC STATUS,2
GOTO CL
GOTO INICIO2
CL
CLRF NUMM1
CLRF PORTB
GOTO INICIO2
INICIO2
BTFSS PORTA,0
GOTO SI
GOTO INICIO2
SI
BTFSS PORTA,0
GOTO SII
GOTO SI
SII
MOVF NUMM1,W
INCF NUMM1,1
INCF PORTB
CALL RETARDO
GOTO INICIO
;5 SUBRUTINAS
RETARDO
MOVLW D'10'
MOVWF NUM3
WAIT2
MOVLW D'200'
MOVWF NUM2
WAIT1
MOVLW D'166'
MOVWF NUM1
WAIT
DECFSZ NUM1,1
GOTO WAIT
DECFSZ NUM2,1
GOTO WAIT1
DECFSZ NUM3,1
GOTO WAIT2
RETURN
;6 FIN DE PROGRAMA
END
4. Diseño de un contador de 0 a 9, y entregue los números y letras en display
de 7 segmentos ánodo común por el puerto B, el conteo debe ser tal que el
ojo humano lo pueda visualizar (por ejemplo a 500ms). Incluya un SW
(Switch) de stop, cuando se oprima el conteo se dentendrá, si se libera
continua el conteo. Escriba su código, corrija errores, compile y programe
su C. Polarice adecuadamente su C y los periféricos.
Codigo del porgrama y evidencias:
;******************************************
PROCESSOR 16F887
__CONFIG 0x2007,23E4
__CONFIG 0x2008,3FFF
INCLUDE <P16F887.INC> ; Incluimos los Registros del PIC18F887..
;******************************************
;1 DECLARACION DE VARIABLES
NUMM1 EQU 0X022
NUM1 EQU 0X70
NUM2 EQU 0X71
NUM3 EQU 0X72
;2 ORIGEN DEL PROGRAMA
ORG 0X00
;3 CONFIGURACION DEL PIC
MOVLW D'96'
MOVWF STATUS
CLRF ANSEL
CLRF ANSELH
BCF STATUS,6
MOVLW B'00000001'
MOVWF TRISA
CLRF TRISB
BCF STATUS,5
;4 PROGRAMA PRINCIPAL
INICIO
MOVF NUMM1,W
SUBLW D'10'
BTFSC STATUS,2
GOTO CL
GOTO INICIO2
CL
CLRF NUMM1
CLRF PORTB
GOTO INICIO2
INICIO2
BTFSS PORTA,0
GOTO SI
GOTO INICIO2
SI
BTFSS PORTA,0
GOTO SII
GOTO SI
SII
MOVF NUMM1,W
INCF NUMM1,1
CALL TABLA
MOVWF PORTB
CALL RETARDO
GOTO INICIO
;5 SUBRUTINAS
RETARDO
MOVLW D'10'
MOVWF NUM3
WAIT2
MOVLW D'200'
MOVWF NUM2
WAIT1
MOVLW D'166'
MOVWF NUM1
WAIT
DECFSZ NUM1,1
GOTO WAIT
DECFSZ NUM2,1
GOTO WAIT1
DECFSZ NUM3,1
GOTO WAIT2
RETURN
TABLA
addwf PCL,1
retlw b'00000011' ;0
retlw b'10011111' ;1
retlw b'00100101' ;2
retlw b'00001101' ;3
retlw b'10011001' ;4
retlw b'01001001' ;5
retlw b'01000001' ;6
retlw b'00011111' ;7
retlw b'00000001' ;8
retlw b'00001001' ;9
return
;6 FIN DE PROGRAMA
END
REFERENCIAS:
ELECTRONICS. (n.d.).
UNIOVIDEO. (n.d.). Retrieved from https://www.unioviedo.es/ate/alberto/TEMA4-puertos.pdf