En esta práctica se
resolverán los problemas a continuación, estos problemas están resueltos de una manera, y
no es la única posible, ya que cada persona programa a su manera.
PROBLEMAS RESUELTOS:
Se realizaron 20
ejercicios, en los cuales cada ejercicio tiene un objetivo distinto.
Ejercicio1: Manejo de
PORTS
Ejercicios2y 3: Funciones matemáticas
Ejercicios 4,5 y 6: Mascaras
Ejercicios 7, 8, 9 y 10: Funciones lógicas
Ejercicio 11: Funciones especiales
Ejercicio 12: Comparaciones
Ejercicio 13: BCD
Ejercicio 14: Salto Indexado
Ejercicio 15: Tablas
Ejercicios 16, 17, 18, 19 y 20: Retardos
Además se realizó los ejercicios 19 y 20 en un Display LCD para mostrar las funciones del mismo.
Ejercicios2y 3: Funciones matemáticas
Ejercicios 4,5 y 6: Mascaras
Ejercicios 7, 8, 9 y 10: Funciones lógicas
Ejercicio 11: Funciones especiales
Ejercicio 12: Comparaciones
Ejercicio 13: BCD
Ejercicio 14: Salto Indexado
Ejercicio 15: Tablas
Ejercicios 16, 17, 18, 19 y 20: Retardos
Además se realizó los ejercicios 19 y 20 en un Display LCD para mostrar las funciones del mismo.
Estos ejercicios se
pueden encontrar en la página donde realizamos las actividades anteriores
RESOLUCION:
Los ejercicios se
pueden debuggear de varias maneras, nosotros utilizamos 3 maneras:
MPLAB:
1)
IR A DEBUGGER ->
Select Tools -> MPLAB SIM -> Ahí en configuración seleccionaremos el
Clock con que deseamos funcionar el PIC, en nuestro caso es 4MHZ.
En Debugger podremos:
Dar estimulos
(stimulus), esto lo utilizaremos para poner en 1 o en 0 las entradas de PORTA
Ver el tiempo máquina
del PIC (StopWatch), esto sirve para hacer delays y para ver cuánto tiempo
tarda en realizar una instrucción.
Para hacer delays se
deberá utilizar el Breakpoints conjuntamente con Run que sirve para correr el
programa, este se frenará en el breakpoint
Si queremos ir
instrucción por instrucción utilizaremos Step Into, para resetear el programa
utilizaremos RESET.
CON ISIS
2) CON MPLAB e ISIS
IR A DEBUGGER
->Select Tools -> PROTEUS VSM -> Donde aparecerá dos botones UNO VERDE
y UNO ROJO, el verde abrirá una pantalla donde podremos abrir una plantilla
hecha en ISIS anteriormente.
3) CON ISIS
ABRIR EL ISIS, y
poner el microcontrolador con “PICK DEVICES” [P] conectado con Vdd, si
seleccionamos este, podremos cambiar la frecuencia del clock y cargarle el
programa desde adentro.
Para probar si
funciona, en las salidas podremos conectar LOGICS PROPES, que indicarán si hay
un 0 o un 1 en la salida.
Para la entrada
conectaremos LOGIC STATE o LOGIC TOGGLE, que funcionaran como una llave o un
pulsador respectivamente.
CONCLUSIONES
En esta práctica
vimos muy a fondo la programación en asembler, utilizamos muchas instrucciones
para realizar varios ejercicios, vimos FUNCIONES MATEMÁTICAS, LOGICAS,
MASCARAS, SALTOS INDEXADOS TABLAS, COMPARACIONES, ALGUNAS FUNCIONES ESPECIALES,
RETARDOS Y TIMERS.
FUNCIONES MATEMÁTICAS: addlw, addwf, sublw, subwf
Addlw/sublw: sumara/restara
un número a w
Addwf/subwf: sumara/restara
w con un file
FUNCIONES LOGICAS: comf, swapf, rlf, rrf
Comf complementa el file por ejemplo si A= b´10101010´
Al complementarlo
quedara A=´01010101´
Swapf cambiara los estados bajos y altos por ejemplo
A=b’00111100’
Quedará A=b’11000011’
Rlf y rrf rotan un número a la derecha o izquierda desde el
carry al file que le decimos, si el carry es 1 rotara el 1, si es 0 rotara un 0
MASCARAS: iorlw, andlw, xorlw
Estas funciones
realizan las mismas funciones lógicas que la and la or y la xor, además de
guardarlas en W se podrán guardar en un file
SALTOS INDEXADOS: movwf PORTB
Addwf PCL,PORTA
TABLA movwf
PORTB
addwf PLC,PORTA
retlw b’00000000’
retlw b’00000001’
addwf PLC,PORTA
retlw b’00000000’
retlw b’00000001’
retlw
b’00000010’
……
Dependiendo de el
valor de PORTA, saltara a las distintas posiciones
COMPARACIONES: Para hacer comparaciones se utilizara
sublw que hace una resta y lo guarda en W y luego utilizaremos la instrucciones
de preguntar btfss o btfsc al STATUS, preguntando al C y a Z
SI Z es 0 y C es 1
entonces A > B
SI Z es 0 y C es 0 entonces A < B
Si Z es 1 y C es 1 entonces A = B
SI Z es 0 y C es 0 entonces A < B
Si Z es 1 y C es 1 entonces A = B
FUNCIONES ESPECIALES: sleep, lo que hace es poner al uC en
bajo consumo donde el clock estará apagado, para volver a su modo normal se
podrá realizar a través de interrupciones
RETARDOS: No es
conveniente usarlos ya que utiliza la potencia del uC
se utilizan contadores y la instrucciones de salto
decfsz (decrementa f y salta en 0)
se utilizan contadores y la instrucciones de salto
decfsz (decrementa f y salta en 0)
EJEMPLO
Delay_200ms_1
decfsz cont1,F
goto Delay_200ms_1
decfsz cont2,F
goto Delay_200ms_1
return
goto Delay_200ms_1
decfsz cont2,F
goto Delay_200ms_1
return
TMR0 como
Temporizador: Se utiliza para realizar la misma función que el delay pero
utiliza el TMR0, realizando la misma operación pero preguntando cuando el T0IF
desborda.
Para ello se
utilizara una carga al TMR0 para que desbode antes, y un contador que cuando
llegue a 0 volvera con return, y si es uno se quedará preguntando si T0IF
desbordó, al desbordar, seteara en 0 T0IF y decrementará el contador realizando
todo de nuevo.
LCD
EL display LCD es un
dispositivo microcontrolado, para la visualización de caracteres y símbolos. En
modelos más actuales hasta dibujos (realizados con pixeles)
Existen LCD de varios tamaños, nosotros vamos a utilizar un LCD de 2X16, es decir 2 lineas por 16 caracteres.
Cada carácter tiene 7x5 pixeles, este LCD tiene un microcontrolador Hitachi interno que regula el proceso de visualización.
CARACTERISTICAS
Consumo reducido del orden de 7,5mW
Pantalla de caracteres ASCII, además del Kanji (japonés),caracteres griegos y símbolos matemáticos.
Posee 8 caracteres programables
Puede ser gobernado mediante una conexión de bus de 8 bits y una conexión de bus de 4 bits (conexión un poco más lenta).
Existen LCD de varios tamaños, nosotros vamos a utilizar un LCD de 2X16, es decir 2 lineas por 16 caracteres.
Cada carácter tiene 7x5 pixeles, este LCD tiene un microcontrolador Hitachi interno que regula el proceso de visualización.
CARACTERISTICAS
Consumo reducido del orden de 7,5mW
Pantalla de caracteres ASCII, además del Kanji (japonés),caracteres griegos y símbolos matemáticos.
Posee 8 caracteres programables
Puede ser gobernado mediante una conexión de bus de 8 bits y una conexión de bus de 4 bits (conexión un poco más lenta).
POSEE
8 pines de Datos DB0…DB7
3 pines de control Enable, Read/Write, Register Select
2 pines de alimentación VDD, VSS
1 pin de backlight VLC
3 pines de control Enable, Read/Write, Register Select
2 pines de alimentación VDD, VSS
1 pin de backlight VLC
El pin enable
cuando E=0, el LCD esta deshabilitado;
cuando E=1, el LCD esta habilitado
El pin Read/Write
cuando R/W=0, escribe el LCD; cuando R/W=1 , lee el LCD
El pin Register
Select cuando R/S=0, se pone en MODO COMANDO, cuando R/S=1, se pone en MODO
CARÁCTER.
Si ponemos conexión
de 8 bits, PORTB se ocupa todo y PORTA 3 pines.
Si ponemos conexión de 4 bits, tenes 4 bits de PORTB para usar, el PORTA se utilizan también 3 pines, pero envía dos veces la información por lo que es más lento. Esto se indicara en la inicialización. Esta debe respetar los tiempos dados para que funcione correctamente.
Si ponemos conexión de 4 bits, tenes 4 bits de PORTB para usar, el PORTA se utilizan también 3 pines, pero envía dos veces la información por lo que es más lento. Esto se indicara en la inicialización. Esta debe respetar los tiempos dados para que funcione correctamente.
CONCLUSIONES
En esta práctica se
realizó la conexión del LCD y su simulación con el ISIS. La inicialización del
LCD se realizó con con 2 librerías sacadas del libro Microcontrolador
PIC16F84A, donde en el programa tuvimos que cargar las 2 librerias y fijarse
que subrutinas utilizar, donde luego realizamos 2 contadores de 0 a 9,
ascendentes y descendentes.
No hay comentarios:
Publicar un comentario