1. UNIVERSIDAD POLITECNICA SALESIANA <br />INTEGRANTES<br />OSCAR AYALA<br />CHRISTIAN IBARRA<br />ANDRES VALDIVIESO<br />Tema: PROGRAMACION EN dsPIC 30F4013<br />Objetivo: Aprender a utilizar correctamente los puertos del microcontrolador dsPIC<br />Desarrollo<br />Para la practica utilizamos la placa programadora “PICTrainer” de dsPIC y el software Microbasic ds.<br />ProcedimientO<br />EJERCICIO 1<br />Problema<br />Escribir en el puerto B el valor 55h<br />Algoritmo<br />Entrada: Ingresar el valor 55h<br />Proceso: Habilitar en el puerto B<br />Salida: Visualizar en los pines del puerto B el valor 55h en su equivalente binario.<br />Código<br />program practica1<br />main:<br />trisb=0 'habilita el puerto B como salida<br />portb= $55 'escribe en el puerto B el valor 55h<br />delay_ms(1000) 'retardo de 1 seg<br />end.<br />Diagrama de Flujos<br />INICIO<br />Habilitar el puerto B como salida y escribir el valor 55h<br />Retardo de 1 seg<br />Salida de Datos en puerto B<br />Esquemático: <br />GRAFICO ANEXO<br />EJERCICIO 2<br />Problema<br />Escribir en el puerto B el valor AAh<br />Algoritmo<br />Entrada: Habilito en el puerto B.<br />Proceso: Ingresar el valor AAh en binario<br />Salida: Visualizar en el puerto B el valor binario.<br />Código<br />program practica1_2<br />main:<br />trisb=0<br /> portb= $AA<br /> delay_ms(100)<br /> portb= $55<br /> end.<br />Diagrama de Flujos<br />INICIO<br />Habilitar el puerto B como salida y escribir el valor AAh<br />Retardo de 1 seg<br />Salida de Datos en puerto B<br />Esquemático: <br />GRAFICO ANEXO<br />EJERCICIO 3<br />Problema<br />Escribir en el puerto C el valor F0h<br />Algoritmo<br />Entrada: Habilitar en el puerto F<br />Proceso: Ingresar el valor F0h en binario.<br />Salida: Salida en el puerto F en valor binario.<br />Código<br />program practica1_3<br />main:<br />trisf=0<br /> portf= $F0<br /> delay_ms(1000)<br /> end.<br />Diagrama de Flujos<br />INICIO<br />Habilitar el puerto F como salida y escribir el valor F0h<br />Retardo de 1 seg<br />Salida de Datos en puerto F<br />Esquemático:<br />GRAFICO ANEXO<br />EJERCICIO 4<br />Problema<br />Leer en el Puerto B y Escribir en el Puerto F<br />Algoritmo<br />Entrada: Habilitar el puerto F como entrada y el puerto b como salida.<br />Proceso: Utilizar una variable “valor” para guardar los datos del puerto F para luego escribir estos datos en el puerto B. <br />Salida: Salida en los pines del puerto B las entradas del puerto F.<br />Código<br />program practica1_4<br />dim valor as byte<br />main:<br /> lazo:<br /> trisf = $ff 'entrada<br /> trisb = 0 'salida<br /> valor = portf<br /> portb = valor<br /> goto lazo<br /> end.<br />Diagrama de Flujos<br />INICIO<br />Habilitar el puerto F como entrada<br />Habilitar el puerto B como salida<br />Definir la variable valor para guardar datos<br />Salida en el puerto B los datos de entrada del puerto F<br />Esquemático: Simulación en proteus utilizando dspic30f4013<br />GRAFICO ANEXO<br />EJERCICIO 5<br />Problema<br />Leer en el Puerto F y Escribir en el Puerto D<br />Algoritmo<br />Entrada: Habilitar el puerto D como entrada y el puerto F como salida.<br />Proceso: Utilizar una variable “valor” para guardar los datos del puerto D para luego escribir estos datos en el puerto F. <br />Salida: Visualizar en los pines del puerto F las entradas del puerto D.<br />Código<br />program practica1_5<br />dim valor as byte<br />main:<br /> lazo:<br /> trisd = $ff 'entrada<br /> trisf = 0 'salida<br /> valor = portd<br /> portf = valor<br /> goto lazo<br /> end.<br />Diagrama de Flujos<br />Definir la variable valor para guardar datosHabilitar el puerto F como salidaHabilitar el puerto D como entradaINICIO<br />Salida en el puerto F los datos de entrada del puerto D<br />Esquemático: Simulación en proteus utilizando dspic30f4013<br />GRAFICO ANEXO<br />EJERCICIO 6<br />Problema<br />Escribir en un display de 7 segmentos sin utilizar decodificador, un valor ascendente entre 0 y F.<br />Algoritmo<br />Entrada: Habilito en el puerto B.<br />Proceso: Ingresar los valores que irán al puerto con un retardo para visualizar el cambio ascendente<br />Salida: Salida en el display los valores de 0 a F<br />Código<br />program practica1_6<br />main:<br />trisb = $0<br />'conectar a=portb0................e=portb.4.....<br /> lazo:<br /> portb = %00111111 ' formato para binario 0<br /> delay_ms(1000)<br /> portb = %00000110 ' 1<br /> delay_ms(1000)<br /> portb = %01011011 '2<br /> delay_ms(1000)<br /> portb = %01001111 '3<br /> delay_ms(1000)<br /> portb = %01100110 '4<br /> delay_ms(1000)<br /> portb = %01101101 '5<br /> delay_ms(1000)<br /> portb = %01111101 '6<br /> delay_ms(1000)<br /> portb = %00000111 '7<br /> delay_ms(1000)<br /> portb = %01111111 '8<br /> delay_ms(1000)<br /> portb = %01100111 '9<br /> delay_ms(1000)<br /> portb = %01110111 'A<br /> delay_ms(1000)<br /> portb = %01111100 'b<br /> delay_ms(1000)<br /> portb = %01011000 'C<br /> delay_ms(1000)<br /> portb = %01011110 'd<br /> delay_ms(1000)<br /> portb = %01111001 'E<br /> delay_ms(1000)<br /> portb = %01110001 'F<br /> delay_ms(1000)<br /> goto lazo<br /> end.<br />Diagrama de Flujos<br />INICIO<br />Habilitar el puerto B como salida <br />Enviar los datos correspondientes al puerto B<br />Retardo entre cada envió <br />Visualización en Display<br />Esquemático: En Proteus utilizamos en DSPIC30F4013<br />GRAFICO ANEXO<br />EJERCICIO 7<br />Problema<br />Mediante un display visualizar mostrar en forma descendente todas letras del alfabeto de la Z a la A.<br />Algoritmo<br />Entrada: Habilitar los puertos B y F como salidas.<br />Proceso: Escribir el código binario para cada letra del alfabeto y declarar el respectivo retardo para cada letra.<br />Salida: Visualizar en el display alfa numérico las letras de la Z a la A en código binario de los puertos B y F.<br />Código<br />program practica1_7<br />main:<br />trisb = $0<br />trisf = $0<br />'conectar a=portb0................e=portb.4.....<br /> lazo:<br /> portb = %011001100 ' z<br /> portf = %00100010<br /> delay_ms(3000)<br /> portb = %100000000 'y<br /> portf = %00100100<br /> delay_ms(3000)<br /> portb = %100000000<br /> portf = %00101010 'x<br /> delay_ms(3000)<br /> portb = %000110011 'w<br /> portf = %0001010<br /> delay_ms(3000)<br /> portb = %000000011 'v<br /> portf = %00100010<br /> delay_ms(3000)<br /> portb = %000111111<br /> portf = %00000000 'u<br /> delay_ms(3000)<br /> portb = %011000000 't<br /> portf = %01000100<br /> delay_ms(3000)<br /> portb = %011011101 's<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %011100011 'r<br /> portf = %00011000<br /> delay_ms(3000)<br /> portb = %011111111 'q<br /> portf = %00001000<br /> delay_ms(3000)<br /> portb = %011100011 'p<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %011111111 '0<br /> portf = %00000000<br /> delay_ms(3000)<br /> portb = %100110011 'n<br /> portf = %00001000<br /> delay_ms(3000)<br /> portb = %100110011 'm<br /> portf = %00100000<br /> delay_ms(3000)<br /> portb = %000001111 'l<br /> portf = %00000000<br /> delay_ms(3000)<br /> portb = %000000011 'k<br /> portf = %00101001<br /> delay_ms(3000)<br /> portb = %011000100 'j<br /> portf = %01000100<br /> delay_ms(3000)<br /> portb = %000000000 'i<br /> portf = %01000100<br /> delay_ms(3000)<br /> portb = %000110011 'h<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %011011111 'g<br /> portf = %00010000<br /> delay_ms(3000)<br /> portb = %011000011 'f<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %011001111 'e<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %000111110 'd<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %011001111 'c<br /> portf = %0000000<br /> delay_ms(3000)<br /> portb = %000011111 'b<br /> portf = %00010001<br /> delay_ms(3000)<br /> portb = %011110011 'a<br /> portf = %00010001<br /> delay_ms(3000)<br /> goto lazo<br /> end.<br />Diagrama de Flujos<br />Habilitar el puerto B y F como salida INICIO<br />Enviar los datos para las letras al puerto B y F<br />Retardo respectivo para cada dato<br />Visualizar<br />Esquemático: En Proteus utilizamos el DSPIC30F4013<br />GRAFICO ANEXO<br />EJERCICIO 8 <br />Problema<br />Utilizar el microcontrolador en la lógica boleana.<br />Algoritmo<br />Entrada: Habilitar el puerto F como entrad y el puerto B como salida.<br />Proceso: Realizar las operaciones lógicas con AND (multiplicación) entre el puerto FO y puerto F1.<br /> El escribir el resultado de en el puerto BO la operación lógica OR (suma) entre el puerto F2 y F3 y escribo el resultado en el puerto B1 y la operación XOR entre el puerto F4 y F5 y escribo en el puerto B2.<br />Salida: Visualizo en el puerto B0 el resultado de las entradas del puerto F0 y F1.<br /> Visualizo en el puerto B1 el resultado de las entradas del puerto F2 y F3.<br /> Visualizo en el puerto B2 el resultado de las entradas del puerto F4 y F5.<br />Código<br />program practica1_8<br /> main:<br />trisf = $ff 'f como entrada<br />trisb = $0 ' b como salida<br /> portb.0= portf.0 and portf.1<br /> portb.1= portf.2 or portf.3<br /> portb.2= portf.4 xor portf.5<br /> goto main<br />end.<br />Diagrama de Flujos<br />INICIO<br />Habilitar el puerto F como entrada<br />Habilitar el puerto B como salida<br />Realizar la operación AND entre PF0 y PF1<br />Realizar la operación OR entre PF2 y PF3<br />Realizar la operación XOR entre PF4 y PF5<br />Visualizar en el puerto PB0, PB1, PB2<br />Esquemático: En Proteus utilizamos el DSPIC30F4013<br />GRAFICO ANEXO<br />CONCLUCIONES<br />Los ejercicios realizados en el laboratorio fueron de mucha ayuda porque nos permitieron tener conocimientos sobre el manejo de los puertos del PIC.<br />El cambio del PIC16F877A al dsPIC30F4013 no nos produjo muchos problemas al momento de utilizar los puertos para habilitar los LEDs y los Display respectivamente.<br />Podemos concluir que la primera práctica de laboratorio fue realizada con mucho éxito aprendimos un poco más sobre el mundo de la familia de los PICs y de su programación.<br />Bibliografía<br />Hojas de prácticas para Laboratorio Sistemas Microprocesados I.<br />http://ww1.microchip.com/downloads/en/devicedoc/70138c.pdf<br />http://www.mikroe.com/en/books/dspicbook/mikropascal/ch9/images/fig9-13a.gif<br />