Академический Документы
Профессиональный Документы
Культура Документы
En esta práctica se llevar a cabo una secuencia de prendido de manera consecutiva 8 leds por los
puertos RBO al RB7, después de prender 8 leds de manera consecutiva con un retardo de 500 ms,
estos volverán aprender de manera descendente con el mismo retardo establecido
Objetivos
Poder generar un programa que ejecute un retardo de 500 ms entre cada pulso de cada
led.
Cargar y hacer funcionar la programación generada.
Poder visualizar con ayuda del osciloscopio el retardo por lo menos entre dos leds.
Marco teórico
Osciloscopio
arquitectura RISC
El microcontrolador cuenta con solo 35 instrucciones diferentes
Todas las instrucciones son uni-ciclo excepto por las de ramificación
Frecuencia de operación 0-20 MHz
Oscilador interno de alta precisión
Calibrado de fábrica
Rango de frecuencia de 8MHz a 31KHz seleccionado por software
Voltaje de la fuente de alimentación de 2.0V a 5.5V
Consumo: 220uA (2.0V, 4MHz), 11uA (2.0 V, 32 KHz) 50nA (en modo de espera)
Ahorro de energía en el Modo de suspensión
Brown-out Reset (BOR) con opción para controlar por software
35 pines de entrada/salida
alta corriente de fuente y de drenador para manejo de LED
resistencias pull-up programables individualmente por software
interrupción al cambiar el estado del pin
memoria ROM de 8K con tecnología FLASH
El chip se puede re-programar hasta 100.000 veces
Opción de programación serial en el circuito
El chip se puede programar incluso incorporado en el dispositivo destino.
256 bytes de memoria EEPROM
Los datos se pueden grabar más de 1.000.000 veces
368 bytes de memoria RAM
Convertidor A/D:
14 canales
resolución de 10 bits
3 temporizadores/contadores independientes
Temporizador perro guardián
Módulo comparador analógico con
Dos comparadores analógicos
Referencia de voltaje fija (0.6V)
Referencia de voltaje programable en el chip
Módulo PWM incorporado
Módulo USART mejorado
Soporta las comunicaciones seriales RS-485, RS-232 y LIN2.0
Auto detección de baudios
Puerto Serie Síncrono Maestro (MSSP)
Soporta los modos SPI e I2C
Sistema mínimo:
Diagrama eléctrico:
Diagrama de flujo
Inicialización
MOVLW 0X00
Colocamos variables en RAM “Z1” MOVFW TrisB
Banco 3 “Movernos”
Banco 0 “Z1” BCF, RP0, BCF, RP1
MOVLW 0X00
Banco 1 “Z1” BSF, RP0, BCF, RP1
MOVFW ANSELH
Limpiar PortB
ORG 0X00 (Reinicio del pic)
Limpiar TMR0
MOVLW 0XF0
MOVFW TMR0
INICIO
MOVLW 0XA0
MOVFW INTCON
Banco 1 “movernos”
MOVLW 0X47
MOVWF OPTION_RES
Main
MOVLW 0X10
MOVLW 0X20 MOVFW PORTB
MOVFW PORTB
Subrutina TMR0
Subrutina TMR0
MOVLW 0X20
MOVLW 0X02 MOVFW PORTB
MOVFW PORTB
Subrutina TMR0
Subrutina TMR0
MOVLW 0X40
MOVFW PORTB
MOVLW 0X04
MOVFW PORTB
MOVLW 0X80
Subrutina TMR0 MOVFW PORTB
Regreso
MOVLW 0X08
MOVFW PORTB
Subrutina TMR0
Programación
;EQUIPO 2
;INTERMITENCIA DE LEDS
;FECHA: 25-09-2018 HORA:00:54
;INTERMITENCIA DE LEDS DE LA SIGUIENTE MANERA:1,2,3,4,5,6,7,8. Y
POSTERIORMENTE DE MANERA ACENDENTE CON DELAY DE 500MS.
;CORRECCIONES POSTERIORES A LA ELABORACION DEL PROGRAMA
__CONFIG _CONFIG1, _WDT_OFF & _CP_OFF &_BOR_OFF & _LVP_OFF & _XT_OSC &
_MCLRE_ON & _CPD_OFF & _BOR_OFF & _PWRTE_OFF
;INICIALIZACION
;---------------------------------------------------------
CBLOCK 0X20 ;COLOCAMOS LAS VARIABLES EN RAM
Z1
ENDC ;TERMINAMOS EL CBLOCK
BANK3 MACRO
BSF STATUS,RP0
BSF STATUS,RP1
ENDM
INICIO
END
Resultados
En esta grafica podemos observar como en el led del PORTB5 llega hasta un valor de
máximo casi 5v al prender el LED, en la primera parte del programa, es una gráfica del tipo
cuadrática con flanco ascendente, como podemos ver el tiempo se cumple son los 500 mls
que se tienen programados entre cada LED. Esto es un gráfico por el canal uno.
Esta grafica nos muestra el pulso del PORTB6 el cual también tiene un flanco ascendente,
su punto máximo también está un poco debajo de los 5v, esto de acuerdo al tipo de LED
que se utilicen. El pulso es correcto dura los 500 mls que se programó.
Resultado: como resultado general podemos decir que el programa está cumpliendo con
su propósito que es generar un retardo de 500 mls entre cada pulso positivo de cada LED,
sin embargo esta incorrecto el propósito de este programa es utilizar el timer0 de forma
que la ALU no trabaje en exceso como ahora.
Conclusión:
Este programa nos ayudó mucho para poder entender el funcionamiento del timer0,
aunque es erróneo el programa hace reforzar la parte del timer0 y el prescalamiento para
en la siguiente practica poder hacer que el tiempo de retardo sea de una rutina correcta.