Este documento presenta 7 ejercicios prácticos para utilizar los puertos de entrada y salida de un microcontrolador PIC. Los ejercicios incluyen escribir valores binarios en diferentes puertos, leer valores de entrada y mostrarlos en un puerto de salida, y usar operadores lógicos booleanos con los puertos. El documento también proporciona el código necesario en MikroBasic para implementar cada ejercicio.
1. 2010CARLOS OCAMPOFERNANDO ITAS2010-03-12UNIVERSIDAD POLITECNICA SALESIANAPRACTICA #1SISTEMAS MICROPROCESADOS I<br />22288503543300<br />TEMA Entrada y Salida en el micro controlador PIC.<br />OBJETIVO<br />Utilizar los puertos del micro controlador PIC, como interface digital al<br /> mundo exterior.<br />MARCO TEORICO<br />MIKROBASIC<br />Este compilador es traído gracias a la empresa mikroElectronika, misma que distribuye una serie de compiladores entre los que destacan el ya antes mencionado mikroBasic y mikroC. <br />Probablemente, mikroBasic sea el compilador que soporte más modelos de PICs, ya Que dependiendo del PIC que vayamos a programar existe una versión creada para abarcar la mayoría de PICs de la misma familia.<br />mikroBasic dispone de un extenso grupo de librerías, que están distribuidas en comunicaciones RS-232, RS-485 e I2C; así también como teclados PS/2, conexiones<br />USB, interfaz para LCD, y muchas más.<br />ESCRIBIR EN EL PUERTO B EL VALOR 55H<br />Entradas Número 55h<br />Salidas Código binario del número 55h en el PortB del microcontrolador.<br />Procesos Escribir el valor 55h en el PortB.<br /> Retardo de 1 segundo.<br />DIAGRAMA DE FLUJO<br />INICIO<br /> <br />RATORDO 1SPORTB= 555CODIGO:<br />program PRACTICA1<br />TRISB=0 'HABILITA EL PUERTO B COMO SALIDA<br />MAIN: 'Parte principal del programa<br />PORTB=$55 'ESCRIBE EN EL PURTO B EL VALOR 55H= 01010101<br />DELAY_MS (1000) 'retardo 1 segundo<br />END.<br />SIMULACION<br />FIGURA #1<br />Ejercicio de aplicación. Escribir en el puerto B el valor AA<br />EntradasNúmero AA<br />SalidasCódigo binario del número AAh en el PortB del microcontrolador.<br />ProcesosEscribir el valor AAh en el PortB.<br /> Retardo de 1 segundo.<br />CODIGO<br />program practica1_2<br />trisb=0<br />main:<br />portb=$AA 'Escribe en el puerto B el valor AAh=10101010<br />delay_ms(1000)<br />end.<br />SIMULACION<br />DIAGRAMA DE FLUJO<br />INICIO<br /> <br />RATORDO 1SPORTB= $AA<br />Ejercicio de aplicación. Escribir en el puerto C el valor F0<br />EntradasNúmero F0<br />SalidasCódigo binario del número F0 en el PortC del microcontrolador.<br />ProcesosEscribir el valor F0 en el PortC.<br /> Retardo de 1 segundo.<br />CODIGO<br />program EJERCICIO1_3<br />TRISC=0 'HABILITA EL PUERTO C COMO SALIDA<br />MAIN: 'Parte principal del programa<br />PORTC=$F0 'ESCRIBE EN EL PURTO C EL VALOR $F0<br />DELAY_MS(1000) 'retardo 1 segundo<br />END.<br />DIAGRAMA DE FLUJO<br />INICIO<br /> <br />RATORDO 1SPORTB= $F0<br />1.4 Leer en el puerto C y escribir en el puerto B<br />EntradasValores de entrada en el PortC.<br />SalidasBits que ingresan por el PortC salen en las patitas del PortB.<br />ProcesosDefinir variable para almacenar los datos ingresados por el PortC.<br /> Habilitar el PortC como entrada y el PortB como salida.<br />Leer bits con el PortC.<br />Guardar los bits que ingresan por el PortC en la variable.<br />Escribir el valor de la variable en el PortB.<br />DIAGRAMA DE FLUJO<br />INICIO<br />DEFINIR VARIABLE<br />trisC=$ff<br />trisB=0<br />portB=valorvalor=portC<br />CODIGO<br />program EJERCICIO1_4<br />dim valor as byte<br />main:<br />lazo:<br />trisC=$ff<br />trisB=0<br />valor=portC<br />portB=valor<br />goto lazo<br />end.<br />SIMULACION<br />1.5 Escribir en un display de 7 segmentos sin utilizar decodificador, un valor ascendente<br />entre 0 y F.<br />EntradasValores de 0 a F<br />SalidasCódigo binario entre 0 y F en el PortB del micro controlador.<br />ProcesosDefinir código binario para cada valor.<br />Escribir el código binario establecido para cada valor en el PortB<br />Retardo 2 segundos.<br />Repetir los tres pasos anteriores hasta llegar a l<br />DIAGRAMA DE FLUJO<br />INICIO<br />PORTB=%00111111<br /> RETARDO 2S <br /> ……………………<br />portb=%01110001<br /> RETARDO 2S<br />CODIGO<br />program practica1_5<br />trisb=$0<br />'a=portb.0, b=portb.1, c=portb.2,'d=portb.3, e=portb.4, f=portb.5, g=portb.6<br />'el display debe ser cátodo común<br />main:<br />lazo:<br />portb=%00111111 'formato para trabajar en binario<br />delay_ms(2000)<br />portb=%00000110<br />delay_ms(2000)<br />portb=%01011011<br />delay_ms(2000)<br />portb=%01001111<br />delay_ms(2000)<br />portb=%01100110<br />delay_ms(2000)<br />portb=%01101101<br />delay_ms(2000)<br />portb=%01111101<br />delay_ms(2000)<br />portb=%00000111<br />delay_ms(2000)<br />portb=%01111111<br />delay_ms(2000)<br />portb=%01100111<br />delay_ms(2000)<br />portb=%01110111<br />delay_ms(2000)<br />portb=%01111100<br />delay_ms(2000)<br />portb=%01011000<br />delay_ms(2000)<br />portb=%01011110<br />delay_ms(2000)<br />portb=%01111001<br />delay_ms(2000)<br />portb=%01110001<br />delay_ms(2000)<br />goto lazo<br />end.<br />SIMULACION<br />1.6 Ejercicio de aplicación. Mediante un display alfanumérico mostrar en orden descendentes las letras del alfabeto de la Z a la A<br />EntradasValores alfanuméricos de la Z a la A<br />SalidasCódigo binario desde la Z a la A en el PortB del microcontrolador.<br />ProcesosDefinir código binario para cada valor.<br />Escribir los 8 primeros bits (a-h) del código binario establecido para cada valor en el PortB.<br />Escribir los últimos bits (i-n) del código binario establecido para cada valor en el PortC.<br />Retardo 1 segundo<br />Repetir los cuatro pasos anteriores hasta llegar a la A<br />DIAGRAMA DE FLUJOINICIO<br />portb=%00001001portc=%00010001<br /> RETARDO 2S <br /> ……………………<br />portb=%00110111portc=%00100010<br /> RETARDO 2S<br />Los leds del display están distribuidos de la siguiente manera:<br />1416050top<br />Los pines del display están distribuidos de la siguiente manera:<br />Los pines del PIC se distribuyen de la siguiente manera:<br />CODIGO<br />program practica1_7<br />trisb=$0<br />trisc=$0<br />main:<br />lazo:<br />portb=%00001001<br />portc=%00010001<br />delay_ms(1000)<br />portb=%01000000<br />portc=%00001001<br />delay_ms(1000)<br />portb=%01000000<br />portc=%00010101<br />delay_ms(1000)<br />portb=%00110110<br />portc=%00010100<br />delay_ms(1000)<br />portb=%00110000<br />portc=%00010001<br />delay_ms(1000)<br />portb=%00111110<br />portc=%00000000<br />delay_ms(1000)<br />portb=%10000001<br />portc=%00001000<br />delay_ms(1000)<br />portb=%00101101<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00110011<br />portc=%00100110<br />delay_ms(1000)<br />portb=%00100111<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00110011<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00111111<br />portc=%00000000<br />delay_ms(1000)<br />portb=%01110110<br />portc=%00000100<br />delay_ms(1000)<br />portb=%01110110<br />portc=%00000001<br />delay_ms(1000)<br />portb=%00111000<br />portc=%00000000<br />delay_ms(1000)<br />portb=%00110000<br />portc=%00100101<br />delay_ms(1000)<br />portb=%00011110<br />portc=%00000000<br />delay_ms(1000)<br />portb=%10001001<br />portc=%00001000<br />delay_ms(1000)<br />portb=%00110110<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00111101<br />portc=%00000010<br />delay_ms(1000)<br />portb=%00110001<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00111001<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00011110<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00111001<br />portc=%00000000<br />delay_ms(1000)<br />portb=%00111100<br />portc=%00100010<br />delay_ms(1000)<br />portb=%00110111<br />portc=%00100010<br />delay_ms(1000)<br />goto lazo<br />end.<br />SIMULACION<br />1.7 Lógica booleana con micro controlador<br />EntradasValores en el PortC<br />SalidasCódigo binario en el PortB del micro controlador.<br />ProcesosDefinir código binario para cada valor.<br />Escribir en el PortB.0 PortC.0 and PortC.1<br />Escribir en el PortB.1 PortC.2 or PortC.3<br />Escribir en el PortB.2 PortC.4 xor PortC.5<br />DIAGRAMA DE FLUJO<br />INICIO<br />PORTB.0=PORTC.0 AND PORTC.1<br /> PORTB.1=PORTC.2 OR PORTC.3<br />PORTB.2=PORTC.4 XOR PORTC.51<br />CODIGO<br />program practica1_8<br />trisc=$FF 'Puerto C como entradas<br />trisb=$0 'Puerto B como salidas<br />main:<br />portb.0=portc.0 and portc.1<br />portb.1=portc.2 or portc.3<br />portb.2=portc.4 xor portc.5<br />goto main<br />end.<br />SIMULACION<br />CONCLUSIONES<br />La programación en mikrobasic maneja un lenguaje secillo de entender lo cual permite realizar diversas aplicacione.<br />Los puertos del pic pueden ser utilizados como entradas o como salidas dependiendo el uso que se le quiera dar.<br />La forma de carga el programa hecho en mikrobasic se lo hace con el archivo .hex y utilizando la programadora de PIC que se tenga.<br />RECOMENDACIONES<br />Para que funcione el PIC es indispensable colocar el cristal de lo contrario asi este cargado el programa en el PIC no se visualizara ningún resultado.<br />Se debe tener el manual del PIC que se utilice para saber la conexión adecuada de los pines, el manual se lo puede bajar de internet.<br />BIBLIOGRAFIA<br />Hoja de practicas de microcontroladores PIC<br />Manual de microcontrolador PIC 16f877a<br />