domingo, 15 de septiembre de 2013

Prógramacion Escencial

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.

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’
         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

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)
EJEMPLO
Delay_200ms_1
decfsz   cont1,F     
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).
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

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.

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