Guias PIC Digital 2

download Guias PIC Digital 2

of 54

Transcript of Guias PIC Digital 2

11 ManualdeLaboratorio paraElectronicaDigital2 en base a PIC, ccs y Proteus Luis Alberto Vargas Tijerino Autor: Luis Alberto Vargas Tijerino.Pgina 1 Contenido Laboratorio 1:Introduccin a CCS y Proteus..................................................................................................... 5 1.1Objetivo. ................................................................................................................................................... 5 1.2Introduccin. ............................................................................................................................................ 5 1.3ISIS-PROTEUS VSM ................................................................................................................................... 5 1.4Compilador PIC-C de CCS. ........................................................................................................................ 5 1.5Estructura de un Programa ...................................................................................................................... 6 1.6Procedimiento. ......................................................................................................................................... 7 1.6.1Crear el Proyecto en CCS .................................................................................................................. 7 1.6.2Crear el circuito en Proteus .............................................................................................................. 9 1.6.3Cargar el Archivo fuente ................................................................................................................. 10 1.6.4Realizar la simulacin y depuracin. ............................................................................................... 10 1.6.5Abrir la ventana de observacin y Agregar los Registros ............................................................... 11 Laboratorio 2:Puertos de Entrada y Salida. .................................................................................................... 13 2.1Objetivo. ................................................................................................................................................. 13 2.2Trabajo Previo. ....................................................................................................................................... 13 2.3Introduccin. .......................................................................................................................................... 13 2.4Puertos de Entradas/Salidas. ................................................................................................................. 13 2.4.1Lectura del puerto........................................................................................................................... 13 2.4.2Lectura del pin de Entrada .............................................................................................................. 13 2.4.3Escritura del puerto. ....................................................................................................................... 14 2.4.4Escritura de un pin. ......................................................................................................................... 14 2.4.5Configuracin rpida de los pines I/O. ........................................................................................... 14 2.4.6Manejo a travs de la RAM ............................................................................................................. 15 2.5Procedimiento. ....................................................................................................................................... 15 2.6Trabajo Extra Clase ................................................................................................................................. 16 Laboratorio 3:Pantalla LCD. ............................................................................................................................ 17 3.1Objetivo. ................................................................................................................................................. 17 3.2Introduccin. .......................................................................................................................................... 17 3.3Pantalla LCD. ........................................................................................................................................... 17 3.3.1Configuracin del Puerto para el LCD. ............................................................................................ 17 3.3.2Fichero o Librera LCD.C .................................................................................................................. 18 3.3.3Inicializacin del LCD. ...................................................................................................................... 18 Autor: Luis Alberto Vargas Tijerino.Pgina 2 3.3.4Ubicacin del cursor en una posicin. ............................................................................................ 18 3.3.5Escribir caracteres en el LCD ........................................................................................................... 18 3.4Procedimiento ........................................................................................................................................ 20 3.5Trabajo Extra Clase ................................................................................................................................. 22 Laboratorio 4:Convertidor Analgico a Digital. .............................................................................................. 23 4.1Objetivo. ................................................................................................................................................. 23 4.2Introduccin. .......................................................................................................................................... 23 4.3Conversor Analgico Digital. .................................................................................................................. 23 4.3.1Formato del resultado de la conversin. ........................................................................................ 24 4.3.2Configuracin de las entradas analgicas del ADC. ........................................................................ 24 4.3.3Configuracin del ADC. ................................................................................................................... 25 4.3.4Lectura del Valor de la conversin ADC. ......................................................................................... 25 4.4Procedimiento. ....................................................................................................................................... 26 4.5Trabajo Extra clase ................................................................................................................................. 27 Laboratorio 5:Interrupcin por Lectura de Entradas. .................................................................................... 28 5.1Objetivo. ................................................................................................................................................. 28 5.2Introduccin. .......................................................................................................................................... 28 5.3Interrupciones. ....................................................................................................................................... 28 5.3.1Configuracin de las interrupciones. .............................................................................................. 28 5.4Interrupcin Externa INT. ....................................................................................................................... 28 5.4.1Configuracin de la interrupcin externa INT. ............................................................................... 28 5.5Interrupcin por cambio en PORTB. ...................................................................................................... 29 5.5.1Configuracin de la interrupcin por cambio en PORTB. ............................................................... 29 5.6Procedimiento. ....................................................................................................................................... 30 5.7Trabajo Extra Clase ................................................................................................................................. 31 Laboratorio 6:Interrupcin por Desbordamiento del TMR0. ......................................................................... 32 6.1Objetivo. ................................................................................................................................................. 32 6.2Introduccin. .......................................................................................................................................... 32 6.3Temporizadores...................................................................................................................................... 32 6.4Mdulo TIMER0. ..................................................................................................................................... 32 6.4.1Configuracin de la interrupcin por TIMER0. ............................................................................... 32 6.4.2Configuracin del TMR0.................................................................................................................. 33 6.4.3Modificacin y obtencin del valor de TIMER0. ............................................................................. 33 Autor: Luis Alberto Vargas Tijerino.Pgina 3 6.4.4Clculo de la temporizacin. ........................................................................................................... 33 6.5Procedimiento. ....................................................................................................................................... 34 6.6Trabajo Extra Clase ................................................................................................................................. 36 Laboratorio 7:Generador de seal PWM. ...................................................................................................... 37 7.1Objetivo. ................................................................................................................................................. 37 7.2Introduccin. .......................................................................................................................................... 37 7.3Modulacin por ancho de pulsos ........................................................................................................... 37 7.4Mdulo CCP. ........................................................................................................................................... 37 7.4.1Configuracin del Mdulo CCP en Modo PWM. ............................................................................ 38 7.4.2Configuracin del ciclo de trabajo. ................................................................................................. 38 7.5Mdulo TIMER2. ..................................................................................................................................... 38 7.5.1Configuracin de la frecuencia PWM. ............................................................................................ 38 7.5.2Calculo de la Frecuencia PWM........................................................................................................ 39 7.5.3Resolucin del Ciclo de Trabajo. ..................................................................................................... 40 7.6Procedimiento. ....................................................................................................................................... 41 7.7Trabajo Extra Clase. ................................................................................................................................ 43 Laboratorio 8:USART ...................................................................................................................................... 44 8.1Objetivo .................................................................................................................................................. 44 8.2Introduccin ........................................................................................................................................... 44 8.3Mdulo USART. ...................................................................................................................................... 44 8.4Modo Sncrono ....................................................................................................................................... 44 8.5Modo Asncrono ..................................................................................................................................... 45 8.6Niveles lgicos RS232 ............................................................................................................................. 45 8.7El mdulo USART en C. ........................................................................................................................... 46 8.7.1Configuracin del Mdulo USART. .................................................................................................. 46 8.7.2Transmisin de datos: ..................................................................................................................... 47 8.7.3Recepcin de datos: ........................................................................................................................ 47 8.8Procedimiento. ....................................................................................................................................... 47 8.9Configuracin del Hyperterminal de Windows ...................................................................................... 50 8.10Trabajo Extra Clase ............................................................................................................................. 53 Autor: Luis Alberto Vargas Tijerino.Pgina 4 Autor: Luis Alberto Vargas Tijerino.Pgina 5 Laboratorio 1:Introduccin a CCS y Proteus. 1.1Objetivo. Familiarizar al estudiante con el compilador CCS y el simulador de circuitos Proteus. 1.2Introduccin. A continuacin se mostrarn los pasos necesarios para crear un nuevo proyecto en CCS y luego se mostrarn los pasos necesarios para simular nuestro proyecto en Proteus. 1.3ISIS-PROTEUS VSM El entorno de diseo electrnico PROTEUS VSM de LABCENTER ELECTRONICS (www.labcenter.co.uk) ofrece la posibilidaddesimularcdigodealto(lenguajeC)ybajonivel(lenguajeensamblador)paralos microcontroladoresy,simultneamente,conlasimulacinenmodomixtodeSPICE.Estopermiteeldiseo tantoaniveldehardwarecomosoftwareyrealizarlasimulacinenunmismoynicoentorno.Paraellose suministra tres potentes entornos como son el ISIS para el diseo grfico, VSM (Virtual System Modelling) para la simulacin y el ARES para el diseo de circuitos impresos en tarjetas. Figura 1.1 Entorno de trabajo PROTEUS 1.4Compilador PIC-C de CCS. ElCompiladorCdeCCShasidodesarrolladoespecficamenteparaPICMCU,obteniendolamxima optimizacin del compilador con estos dispositivos. Dispone de una amplia librera de funciones predefinidas, comandosdepreprocesadoyejemplos.Ademsexistegrancantidaddeinformacinysoportetcnicoen espaol en los foros www.todopic.com.ar/foros y www.ucontrol.com.ar/foros.Autor: Luis Alberto Vargas Tijerino.Pgina 6 Tambin suministra los controladores (drivers) para diversos dispositivos como LCD, convertidores AD, relojes en tiempo real, EEPROM serie, etc.Otra caracterstica sumamente importante es que puede ser utilizado conjuntamente con ISIS-PROTEUS para depurarelcdigopasoapaso,loquepermitealosdiseadoresencontrarerroresdealgoritmizacinsinla necesidad de tener una herramienta fsica para probar el circuito. 1.5Estructura de un Programa Para escribir un programa en C se deben tener en cuenta una serie de elementos bsicos de su estructura. -LIBRERASAINCLUIR:Contienenfunciones,instrucciones,definiciones,variablesyconstantesque pueden ser utilizadas por el cdigo principal. -BITSDECONFIGURACINOFUSES:EstosseutilizanparaconfigurarciertosparmetrosdelPIC durante la primera vez que son quemados, por ejemplo: eltipo de oscilador que se utilizar, si elPIN MCLR puede ser utilizado como Entrada digital, si deseamos proteger el cdigo contra lectura, etc -DIRECTIVAS #USE: Se utilizan para configurar algunos perifricos y para controlar como el compilador generar los cdigos de retardos.-DEFINICIONES:Seutilizanparamodificarfcilmentealgunosvaloresqueseutilizanconmucha frecuencia en el cdigo. -DECLARACIONES DE VARIABLES Y CONSTANTES: indican los nombres y caractersticas de las variables y constantes que utilizaremos en el cdigo. -PROGRAMASoFUNCIONES:sonunconjuntodeinstruccionesquepuedenserllamadasparaevitar repetir el cdigo. Puede haber uno o varios, en cualquier caso siempre debe haber uno definido como principal mediante la inclusin de la llamada main(). -INSTRUCCIONES: Indican cmo debe comportarse el PIC en cada momento. -COMNTARIOS: permiten describir lo que significa cada lnea del programa ya sea para recordarlo ms tarde o para mostrar el cdigo a otras personas que trabajan en el grupo. Autor: Luis Alberto Vargas Tijerino.Pgina 7 Figura 1.2 Estructura de un programa 1.6Procedimiento. 1.6.1Crear el Proyecto en CCS 1.Abrir el Compilador PIC C de CCS 2.Presionar el botn close Projectpara cerrar todos los archivos anteriormente abiertos. 3.Dar click en el botn inicio. 4.Crear un nuevo archivo dando click en New Source File a como se muestra en la siguiente figura Bits de configuracin Librera Directiva #USE Instrucciones Funcin main Comentarios Autor: Luis Alberto Vargas Tijerino.Pgina 8 5.Crear una Nueva carpeta llamada Lab1 en la ubicacin que consideres necesaria (Ejemplo: Carpeta Mis Documentos). 6.Abrir la carpeta Lab1 y guardar el proyecto con el nombre de Led_Blink1. 7.Copiar el Cdigo 1.1 Led_blink Cdigo 1.1 Led_blink /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. //Fecha: 8-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz ///PROGRAMA void main(void){ setup_adc_ports(NO_ANALOGS|VSS_VDD); //Todas las entradas del PIC Seran Digitales. setup_comparator(NC_NC_NC_NC);//Los comparadores Analogicos estaran apagados. while(TRUE){ //bucle infinito output_low(PIN_B0); //led off delay_ms(500);//Retardo de 500ms = 0.5s output_high(PIN_B0);//led on delay_ms(500);//Retardo de 500ms = 0.5s } } 8.Dar clic en el botn Build All de la pestaa Compile o presionar la tecla F9. Autor: Luis Alberto Vargas Tijerino.Pgina 9 1.6.2Crear el circuito en Proteus 1.Abrir el simulador ISIS 7de Proteus . 2.Presionar la tecla P del teclado. 3.Escribir PIC16F887 en la caja de bsqueda y darle doble clic al dispositivo en la lista de resultados para que aparezca en la ventana de dispositivos seleccionados. 4.EscribirLOGICPROBEenlacajadebsquedaydarledobleclicaldispositivoenlalistaderesultados para que aparezca en la ventana de dispositivos seleccionados. 5.Escribir LOGICTOGGLE en la caja de bsqueda y darle doble clic al dispositivo en la lista de resultados para que aparezca en la ventana de dispositivos seleccionados. 6.Cerrar la ventana de Pick Devices. 7.En la ventana de dispositivos seleccionados darle un clic al dispositivo y luego dar un clic en la ventana detrabajoparaqueaparezcaeldispositivoyfinalmenteubicarlosdispositivoscomoapareceenla siguiente figura.a.Sisedesearotareldispositivoensentidohorariosedebepresionarlatecla+delteclado numrico. b. Sisedesearotareldispositivoensentidoanti-horariopresionarlatecla-delteclado numrico. c.Si se desea rotar el dispositivo en espejo s e debe presionar la combinacin de teclas ctrl+m.Ventana de dispositivos seleccionadoLista de Resultados Caja de Busqueda Autor: Luis Alberto Vargas Tijerino.Pgina 10 8.Conectar el Pin del LOGICPROBE con el pin RB0 del PIC16F887. 9.Guardar el Archivo. 1.6.3Cargar el Archivo fuente 1.Darle doble clic al PIC16F887 ubicado en la ventana de trabajo 2.Darle clic al botn de la caja de texto Program File y seleccionar el archivo fuente Led_Blink1.cof 3.Cambiar la frecuencia de reloj a 8MHz. 4.Luego presionar el botn Ok. 1.6.4Realizar la simulacin y depuracin. Con ayuda de la simulacin mixta podemos observar cmo se modifican las variables internas del PIC y cmo estasinteractanconvariablesexternasquepuedenseranalgicasodigitales.Porotrolado,ladepuracin nos permite ver paso a paso el desarrollo del cdigo que hemos cargado en el PIC con el objetivo de encontrar errores de lgica o de secuencia. Ventana de dispositivos seleccionados Ventana de Trabajo. PIC16F887 LOGICPROBE Barra de Simulacin Autor: Luis Alberto Vargas Tijerino.Pgina 11 1.DarclicenelbotnPlaydelabarradesimulacinyobservarla simulacin. 2.Dar clic en el botn stop de la barra de simulacin. 3.Darclicenelbotnstepdelabarradesimulacinparainiciarlasimulacinpasoapasoo presionar la combinacin de teclas Ctrl+F12. 4.A continuacin se mostraran la ventana del cdigo fuente y la ventana de variables. 5.En la ventana de Cdigo aparecen 4 botones . a.Step over o tecla F10: La simulacin se realiza paso a paso pero al encontrar la llamada a una funcin el depurador la realiza toda la funcin de una sola vez sin entrar a ella. b.Step into o tecla F11: La simulacin se realiza paso a paso y al encontrar la llamada a una funcin el depurador la realiza entra a la funcin realizndola paso a paso. c.Step out o combinacin Ctrl+F11: Si el depurador se encuentra en el cdigo interno de una funcinalpresionarestebotnsaldrdelcdigointernodelafuncinysemostrarlalnea siguiente a la llamada a la funcin. d.Run to Source Line o combinacin Ctrl+F10: Ubica al depurador en la lnea seleccionada por el usuario. 6.Una vez que se presione uno de los botones anteriores se puede observar el cambio en la ventana de cdigo y en la ventana de variables. 1.6.5Abrir la ventana de observacin y Agregar los Registros 1.Dar clic en men debug>watch window. Ventana de Cdigo Ventana de Variables Autor: Luis Alberto Vargas Tijerino.Pgina 12 2.Dar clic derecho en la ventana de observacin y seleccionar Add Items (By Name) 3.Luego dar doble clic a los registros TRISB y PORTB en la ventana Add Memory Item. Autor: Luis Alberto Vargas Tijerino.Pgina 13 Laboratorio 2:Puertos de Entrada y Salida. 2.1Objetivo. Familiarizarse con los Puertos de Entrada y Salida mediante la implementacin prctica del ejemplo. 2.2Trabajo Previo. Contestar las siguientes Preguntas: 1.Mencione los puertos de entrada/salida tiene el PIC16F887. 2.Cuntos pines de entrada/salida tiene el PIC16F887 en total? 3.Por qu es necesario utilizar resistencias para conectar resistencias a los LED? 4.Por qu es necesario utilizar resistencias de pull-up pull-down para conectar los interruptores? 5.Cmo se eliminan los rebotes de los botones? 2.3Introduccin. Encasitodoslosproyectosesnecesarioleeralgunaentradadetipodigitalconectadaapulsadores, interruptores,sensoresdigitalesosimilares;tambinesnecesarioescribirdatospormediodeunasalidade tipodigitalconectadaaLED,pantallasLCD,displaydesietesegmentososimilares.Estelaboratoriotratade explicar cmo realizar la configuracin de los puertos del PIC para utilizarlos como entradas o salidas digitales. 2.4Puertos de Entradas/Salidas. Los Microcontroladores PIC tienen terminales de entrada/salida (I/O, Input/Output) divididos en puertos, que se encuentras nombrados alfabticamente A, B, C, D, etc. Cada puerto puede tener hasta 8 terminales que se pueden comportar como una I/O digital. ElPIC16F887tienehasta35I/Odigitalesdepropsitogeneral,yendependenciadelaconfiguracindesus perifricospuedenestardisponiblescomoI/Odepropsitogeneral.Porejemplosiutilizamoselmdulo USART(TransmisinSerial)lospinescorrespondientesaesteperifricosernutilizadosparaatenderlas operaciones del mismo y no podrn ser utilizados como I/O de propsito general. 2.4.1Lectura del puerto. La siguiente funcin configura el puerto como entrada y realiza su lectura: input_x( ) Sintaxisvalue = input_x() Parametrosvalue es el valor booleano que se lee de la entrada x.2.4.2Lectura del pin de Entrada La siguiente funcin configura el PIN como entrada y realiza su lectura: input( ) Sintaxisvalue = input(pin) Parametrosvalue es el valor que se lee del pin x.Autor: Luis Alberto Vargas Tijerino.Pgina 14 2.4.3Escritura del puerto. La siguiente funcin configura el puerto como salida y realiza su escritura: output_x( ) Sintaxisoutput_x (value) Parametrosvalue es el valor de 8 bits que se escribe en la salida x.2.4.4Escritura de un pin. Las siguientes funciones configuran el pin como salida y realizan su escritura: output_low( ), output_high( ) y output_bit( ) Sintaxisoutput_low(pin )Pone a 0 el pin output_high(pin)Pone a 1 el pin output_bit(pin,value)Le da el valor de value al pin. 2.4.5Configuracin rpida de los pines I/O. Una configuracin rpida genera cdigo ms eficiente, ya que el compilador asume que los pines de I/O sern cambiados solo si es especificado por el usuario. A continuacin se muestra la funcin para decidir si los pines de un puerto son de entrada o salida: set_tris_x( ) Sintaxisset_tris_x(value) Parametrosvalue es un valor de 8 bits, cada bit determina si el pin correspondiente es de entrada o salida. Por ejemplo: si el bit 0 es igual a 0 entonces el pin 0 ser salida y si el bit 4 es 1 entonces el bit 4 ser una entrada. Al utilizar la funcin anterior siempre es necesario utilizar la siguiente directiva: #USE FAST_IO Sintaxis#use fast_io (port) Parametrosport puede ser: -Asolo el puerto A -B solo el puerto B -C solo el puerto C -D solo el puerto D -E solo el puerto E -F solo el puerto F -G solo el puerto G -H solo el puerto H -I solo el puerto I -J solo el puerto J -ALL.Todos los puertos Autor: Luis Alberto Vargas Tijerino.Pgina 15 2.4.6Manejo a travs de la RAM La siguiente etiqueta nos permite manipular los puertos directamente como un dato: #byte PORTx=getenv(SFR:PORTx) 2.5Procedimiento. 1.Repetir los pasos del 1 al 4 en Crear el Proyecto en CCS. 2.CrearunaNuevacarpetallamadaLab2yunasubcarpetallamadaLED_Botonesenlaubicacinque consideres necesaria (Ejemplo: Carpeta Mis Documentos). 3.Abrir la carpeta LED_Botones y guardar el proyecto con el nombre de LED_Botones. 4.Copiar el Cdigo 2.1 Led_botones Cdigo 2.1 Led_botones /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. //Fecha: 8-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz #use FAST_IO(D) #byte PORTD=getenv("SFR:PORTD") ///PROGRAMA void main(void){ setup_adc_ports(NO_ANALOGS|VSS_VDD); //Todas las entradas del PIC Seran Digitales. setup_comparator(NC_NC_NC_NC); //Los comparadores Analogicos estaran apagados. set_tris_d(0x0F);//Configura PORTD como salidas y PORTD como entradas. while(TRUE){ //bucle infinito output_b(input_a()); //El PORTB se configura como salida y es igual a PORTA output_low(PIN_C0);//El PIN_C0 se configura como salida y se pone en bajo output_high(PIN_C0); //El PIN_C0 se configura como salida y se pone en alto output_bit(PIN_C1,0);//El PIN_C1 se configura como salida y se pone en bajo output_bit(PIN_C1,1);//El PIN_C1 se configura como salida y se pone en alto output_bit(PIN_C2,input(PIN_A0));//El PIN_C2 se configura como salida y se le asigna el //valor del PIN_A0 configurado como entrada. PORTD=input_a(); //El valor del nibble superior de PORTA se transferira al de PORTD } } 5.Presionar F9 para compilar el proyecto. 6.Crear el circuito en Proteus. Para ello ser necesariobuscarmediantelacajadebsquedaenla ventana PICK DEVICE el PIC16F887, el LOGICSTATE y el LOGICPROBE. Autor: Luis Alberto Vargas Tijerino.Pgina 16 7.Cargar el Archivo fuente Led_Botones.cof, Realizar la simulacin y Abrir la ventana de observacin y Agregar los Registros TRISA, TRISB, TRISC, TRISD, PORTA, PORTB, PORC y PORTD. a.Cul es el valor del registro TRISD despus de la lnea 32? b.Cul es el valor de los registros TRISB, TRISA, PORTB y PORTA despus de la lnea 34? c.Cul es el valor de los registros TRISC y PORTC despus de las lneas 35, 36, 37, 38 y 39? d.Cul es el valor del registro PORTD despus de la lnea 41? e.Hacia dnde se realiza el salto despus de la lnea 42? f.Cambia los valores de los LOGICSTATES y contesta de nuevo las preguntas a hasta f. g.Cul es el valor de PORTD despus de la lnea 41 si PORTA es mayor a 0b00001111? h.Cul es el valor de PORTD despus de la lnea 41 si PORTA es menor a 0b00001111? 2.6Trabajo Extra Clase 1.Elabore un programa en CCS que encienda los LED conectados a PORTB (1 a la vez) cada 1 segundo. 2.Elabore un programa que muestre en PORTD el valor ingresado a PORTB. 3.Explique si es posible elaborar un programa que combine las dos tareas de los problemas 1 y 2. LOGICSTATE LOGICPROBE PIC16F887 Autor: Luis Alberto Vargas Tijerino.Pgina 17 Laboratorio 3:Pantalla LCD. 3.1Objetivo. FamiliarizarseconlaconexinyutilizacindelapantallaLCD16x2mediantelaimplementacinprcticadel ejemplo LCD_HolaMundo. 3.2Introduccin. Existe una gran cantidad de proyectos en las que es necesariovisualizar informacin a travs de una pantalla de bajo costo. En este laboratorio explicaremos cmo realizar la comunicacin y configuracin entre el PIC y el LCD de 16 caracteres por 2 lneas que posee un controlador del tipo HD44780. 3.3Pantalla LCD. LasPantallasLCDtienenlacapacidaddemostrarcualquiercarcteralfanumrico,permitiendopresentarla informacin que genera cualquier equipo electrnico de forma fcil y econmica. Cada carcter consta de una matrizdepuntos(generalmente5x7),quesedistribuyenenuna,dos,tresocuatrolneasde16hasta40 caracteres. Estas pantallas incorporan un microcontrolador HD44780 que gobierna su funcionamiento. Estas pantallas tienen la posibilidad de mostrar letras griegas y caracteres elaborados por el usuario. 3.3.1Configuracin del Puerto para el LCD. Existen dos maneras de configurar el puerto que se conectara al LCD, la primera realiza la conexin mediante el puerto completo para ello se realiza lo siguiente. #define use_portx_lcd TRUE O #define LCD_DATA_PORT getenv("SFR:PORTx") Dondexeselpuertoautilizar,estedebetener8bits.Ladesventajadeutilizarestainstruccinesquelos pines quedan configurados por defecto de la siguiente manera: PIN_X0ENABLE PIN_X1RS PIN_X2RWPIN_X4D4PIN_X5D5PIN_X6D5 PIN_X7D5 La segunda forma de configurar el puerto del LCD es ms flexible, ya que nos permite seleccionar la conexin de cada pin. A continuacin se muestra cmo hacerlo. Autor: Luis Alberto Vargas Tijerino.Pgina 18 ... #define LCD_ENABLE_PINPIN_X5 #define LCD_RS_PINPIN_X4 #define LCD_RW_PINPIN_X6 #define LCD_DATA4 PIN_X0 #define LCD_DATA5 PIN_X1 #define LCD_DATA6 PIN_X2 #define LCD_DATA7 PIN_X3 ... Nota: El usuario puede variar el orden de los pines que se muestra en la configuracin anterior.3.3.2Fichero o Librera LCD.C ElarchivoLCD.Cesunfichero(driver)propiodelcompiladorPIC-C,parautilizarloesnecesariorealizarla llamada de las siguiente manera. ... //Configuracin del Puerto. #include ... 3.3.3Inicializacin del LCD. El primer paso para utilizar el LCD es inicializarlo, con esto ocurre lo siguiente: 1.Se borra el LCD. 2.Se configura en el formato de 4 bits y con caracteres de 5x8 puntos 3.El LCD se pone en modo encendido 4.El cursor se apagado y se configura para que no parpadee.Para inicializar el LCD es necesario utilizar la siguiente funcin. Lcd_init() 3.3.4Ubicacin del cursor en una posicin. Para ubicar el cursor en una ubicacin especificada por el usuario se utiliza la siguiente funcin: Lcd_gotoxy( ) SintaxisLcd_gotoxy(x , y) Parametrosx es la fila en que se ubicar el cursor.y es la columna en que se ubicar el cursor. 3.3.5Escribir caracteres en el LCD Para escribir caracteres en el LCD es posible utilizar dos funciones, la primera funcin es la siguiente: Lcd_putc( ) SintaxisLcd_putc(c) Parametrosc puede ser el carcter que se escribir en el LCD o puede ser una cadena de caracteres. La segunda funcin que nos permite escribir en el LCD es la siguiente: Autor: Luis Alberto Vargas Tijerino.Pgina 19 Printf( ) Sintaxisprintf(fname,string,values), ParametrosString es la cadena de caracteres que se escribir en el LCD. Fname es el nombre de la funcin que utilizar printf, en este caso ser lcd_putc. Values es la lista de variables que sern impresas separadas por comas. El formato es %nt, donde n es opcional y puede ser: 1-9: para especificar cuantos caracteres se deben especificar. 01-09: para indicar cantidad de ceros a la izquierquierda. 1.1-9.9: para coma flotante. t puede indicar: cCarcter. sCadena de caracteres. uEntero sin signo. dEntero con signo. LuEntero largo sin signo. LdEntero largo con signo. xEntero Hexadecimal con letras en minsculas. XEntero Hexadecimal con letras en maysculas. LxEntero Largo Hexadecimal (minsculas). LXEntero largo Hexadecimal (maysculas). fFlotante con truncado. gFlotante en formato exponencial. wEnterosinsignocondecimalesinsertados.La1cifraindicaeltotal,la2el nmero de decimales. La Tabla 3.1 ejemplos de los distintos formatos: Tabla 3.1 FormatoValor = 0x12Valor = 0xFE %03u018254 %u18254 %2u18* %518254 %d18-2 %x12Fe %X12FE %4X001200FE %3.1w1.825.4 A continuacin se muestran los caracteres especiales que se utilizan en el LCD: -\f: Se utiliza para borrar el LCD y se ubica al inicio de cada lnea. -\n: Se utiliza para realizar un salto de lnea. -\b: Se utiliza para mover el cursor un espacio hacia atrs. La Tabla 3.2 muestra los caracteres que se pueden escribir en el LCD. Autor: Luis Alberto Vargas Tijerino.Pgina 20 Tabla 3.2 3.4Procedimiento 1.Repetir los pasos del 1 al 4 en Crear el Proyecto en CCS. 2.Crear una Nueva carpeta llamada LCD_HolaMundo. 3.Abrir la carpeta LCD_HolaMundo y guardar el proyecto con el nombre de LCD_HolaMundo. 4.Copiar el Cdigo 3.1 LCD_HolaMundo Cdigo 3.1 LCD_HolaMundo /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. Autor: Luis Alberto Vargas Tijerino.Pgina 21 //Fecha: 12-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=4Mhz //Definir Pines de conexion al LCD #define LCD_ENABLE_PINPIN_B0 #define LCD_RS_PINPIN_B1 #define LCD_RW_PINPIN_B2 #define LCD_DATA4 PIN_B3 #define LCD_DATA5 PIN_B4 #define LCD_DATA6 PIN_B5 #define LCD_DATA7 PIN_B6 #include //Llamada a la libreria lcd.c int a=135;//Declaramos e iniciamos a long b=0x1234;//Declaramos e iniciamos b int32 c=12345678; //Declaramos e iniciamos c float d=3.98; void main(){ setup_adc_ports(NO_ANALOGS|VSS_VDD);//Todas las entradas del PIC Seran Digitales. setup_comparator(NC_NC_NC_NC);//Los comparadores Analogicos estaran apagados. lcd_init(); //Inicializamos el LCD. while(1){ lcd_putc("\f Hola Mundo\n"); //Se escribe en el LCD la cadena Hola mundo. lcd_putc(0b11100000);//Escribe el caracter alfa printf(lcd_putc,"\f %03u %u",a,a); //Escribe a en 4 formatos printf(lcd_putc,"\n %x %d",a,a); //Escribe a en 4 formatos en la segunda linea printf(lcd_putc,"\f %X %2.1w",a,a);//Escribe a en formatos hexadecimal y con flotante printf(lcd_putc,"\f %Lu \n %Ld",b,b);//Escribe b en formato unsigned y formato decimal printf(lcd_putc,"\f %Lu \n%Ld",c,c); //Escribe b en formato unsigned y formato decimal //!printf(lcd_putc,"\f %f \n %g",d,d);//Escribe c en formato flotante truncado y con exponencial } } 5. Presionar F9 para compilar el proyecto. 6.Crear el circuito en Proteus. Para ello ser necesariobuscar mediante la caja de bsqueda en la ventana PICK DEVICE el PIC16F887 y el LM016L. Autor: Luis Alberto Vargas Tijerino.Pgina 22 7.Cargar el Archivo fuente LCD_HolaMundo.cof y Realizar la simulacin. 8.Conteste: a.Qu ocurre en las lneas 45 a la 53? b.Comente la lnea 53 y descomente la lnea 54 y explique que ocurre en la lnea 54? 3.5Trabajo Extra Clase 1.Elabore un programa en CCS que muestre en la primera lnea del LCD PORTB= y en la segunda lnea muestre el valor de PORTB en formato unsigned int. LM016PIC16F88Autor: Luis Alberto Vargas Tijerino.Pgina 23 Laboratorio 4:Convertidor Analgico a Digital. 4.1Objetivo. Familiarizarse con el mdulo de conversin analgico digital mediante la implementacin prctica del ejemplo Leer_ADC. 4.2Introduccin. Existeunagrancantidaddeproyectosenlasqueesnecesarioquenuestrosdispositivosdigitalesrealicen operaciones de control de variables analgicas tales como temperatura, presin, flujo, caudal, peso, distancia, velocidad o similares. Este laboratorio trata de explicar cmo realizar la configuracin del mdulo ADC del PIC para realizar las mediciones antes mencionadas. 4.3Conversor Analgico Digital. Unconversoranalgico-digital(ADC,Analog-to-DigitalConverter)esundispositivoelectrnicocapazde convertirunaentradaanalgicadevoltajeenunvalorbinario,Seutilizaenequiposelectrnicoscomo ordenadores, grabadores de sonido y de vdeo, y equipos de telecomunicaciones. La seal analgica, que vara deformacontinuaeneltiempo,seconectaalaentradadeldispositivoysesometeaunmuestreoauna velocidad fija, obtenindose as una seal digital a la salida del mismo. [Wikipedia] ElconvertidorAnalgico-digitaldelPIC16F887permitelaconversinde unasealdeentradaanalgicaaun valorenrepresentacinbinariade10bitsode8bits.Estedispositivousa13entradasanalgicasqueson multiplexadas hacia un circuito de muestreo y retencin (Sample and Hold). La salida del muestreo y retencin esconectadaalaentradadelconvertidor.Elconvertidorgeneraunresultadobinariode10bitsode8bits medianteaproximacionessucesivasyalmacenaelresultadodelaconversinendosregistros(ADRESLy ADRESH). La Figura 4.1 muestra el diagrama en bloques del mdulo ADC y la Figura 4.2 muestra el modelo de la Entrada Analgica. Figura 4.1 Diagrama en Bloque del ADC Autor: Luis Alberto Vargas Tijerino.Pgina 24 Figura 4.2 Modelo de una Entrada Analgica Como se observa en la Figura 4.1 es posible seleccionar el voltaje de referencia del ADC mediante software. A continuacin se muestra la funcin de transferencia del ADC. 4.3.1Formato del resultado de la conversin. Para especificar el formato del resultado de la conversin se escribe arriba de todas las funciones lo siguiente: #device adc=valor Donde el valor que se le asigna a ADC puede ser de 8 10 bits. 4.3.2Configuracin de las entradas analgicas del ADC. Para realizar la configuracin de los puertos ADC se utiliza la siguiente funcin: setup_adc_ports(value) Sintaxissetup_adc_ports(value) Parametrosvalue podra ser una o ms de las siguientes constantes: -sAN0Selecciona AN0 analgica -sAN1 Selecciona AN1 analgica -sAN2 Selecciona AN2 analgica -sAN3 Selecciona AN3 analgica Autor: Luis Alberto Vargas Tijerino.Pgina 25 -sAN4 Selecciona AN4 analgica -sAN5 Selecciona AN5 analgica -sAN6 Selecciona AN6 analgica -sAN7 Selecciona AN7 analgica -sAN8 Selecciona AN8 analgica -sAN9 Selecciona AN9 analgica -sAN10 Selecciona AN10 analgica -sAN11 Selecciona AN11 analgica -sAN12 Selecciona AN12 analgica -sAN13 Selecciona AN13 analgica -NO_ANALOGS Selecciona ninguna analgica -ALL_ANALOG Selecciona todas analgica -VSS_VDDSeleccionamos Vss como Vref- y Vdd como Vref+ -VSS_VREFSeleccionamos Vss como Vref- y Vref+ como Vref+ -VREF_VREF Seleccionamos Vref- como Vref- y Vref+ como Vref+ -VREF_VDDSeleccionamos Vref- como Vref- y Vdd como Vref+ Ejemplo setup_adc_ports(sAN0|sAN1|VSS_VDD);//Seleccionamos AN0 y AN1 como analgicas, Vss y Vdd como Vref.4.3.3Configuracin del ADC. Para realizar la configuracin del ADC se utiliza la siguiente funcin: setup_adc() Sintaxissetup_adc(value) Parametrosmode podra ser una o ms de las siguientes constantes: -ADC_OFFApagamos el ADC. -ADC_CLOCK_DIV_2Utiliza Fosc/2 (ej. Fosc=1MHz) -ADC_CLOCK_DIV_8Utiliza Fosc/8 (ej. Fosc=1MHz) -ADC_CLOCK_DIV_32Utiliza Fosc/32 (ej. Fosc=20MHz y 8MHz) -ADC_CLOCK_INTERNALUtiliza el reloj RC interno. Ejemplo setup_adc_ports(sAN0|sAN1|VSS_VDD);//Seleccionamos AN0 y AN1 como analgicas, Vss y Vdd como Vref.4.3.4Lectura del Valor de la conversin ADC. Para realizar la lectura del valor de la conversin ADC se utiliza la siguiente funcin: read_adc( ) Sintaxisvalue = read_adc ([mode]) Parametrosmode es un parmetro opcional. Si es usado puede ser uno de los siguientes valores: -ADC_START_AND_READToma lecturas continuamente. Este est por defecto. -ADC_START_ONLYInicia la conversin y no retorna valor. -ADC_READ_ONLYLee el ltimo valor de conversin. Ejemplo read_adc();//Seinicialaconversinyretornaelvalordel //ADC.read_adc(ADC_START_ONLY);//Inicia la conversion AD. ...otras tareas Value=read_adc(READ_ONLY); //Lee el valor del ADC. Autor: Luis Alberto Vargas Tijerino.Pgina 26 4.4Procedimiento. 1.Repetir los pasos del 1 al 4 en Crear el Proyecto en CCS. 2.Crear una Nueva carpeta llamada Lab3 en la ubicacin que consideres necesaria (Ejemplo: Carpeta Mis Documentos). 3.Abrir la carpeta Lab3 y guardar el proyecto con el nombre de Leer_ADC. 4.Copiar el Cdigo 4.1 Leer_ADC Cdigo 4.1 Leer_ADC /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. //Fecha: 16-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #device adc=10 #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES NOMCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz //Definir Pines de conexion al LCD #define LCD_ENABLE_PINPIN_B5 #define LCD_RS_PINPIN_B4 #define LCD_RW_PINPIN_B6 #define LCD_DATA4 PIN_B0 #define LCD_DATA5 PIN_B1 #define LCD_DATA6 PIN_B2 #define LCD_DATA7 PIN_B3 #include //Llamada a la libreria lcd.c ///PROGRAMA void main(void){ long val; setup_comparator(NC_NC_NC_NC); //Los comparadores Analogicos estaran apagados. setup_adc_ports(sAN0|VSS_VDD); //AN0 sera analogica las demas Digitales. SETUP_ADC(ADC_CLOCK_INTERNAL); //La fuente de reloj para la conversion sera //El circuito RC interno del PIC, su TAD tipico //es de 4us. //! SETUP_ADC(ADC_CLOCK_DIV_32); //La fuente de reloj para la conversion sera //Fosc externa entre 32, por lo tanto TAD=4us. SET_ADC_CHANNEL(0);//Seleccionamos canal 0 para leerlo. lcd_init();//Inicializamos el LCD. lcd_putc("\fValor Leido=");//Se muestra en el LCD la cadena "Valor Leido=" while(TRUE){ //Inicia el ciclo Infinito. val=READ_ADC(); //Se lee y guarda el valor del ADC printf(lcd_putc,"%4Lu",val);//Se imprime en el LCD el valor leido del ADC lcd_gotoxy(13,1); //Se envia el cursor a la columna 13 fila 1. } } Autor: Luis Alberto Vargas Tijerino.Pgina 27 5.Compilar el proyecto. 6.Crear el circuito en Proteus. Para ello ser necesariobuscarmediantelacajadebsquedaenla ventana PICK DEVICE el PIC16F887, el LCD 16x2 y el POT-HG. 7.Cargar el Archivo fuente Leer_ADC.cof y Realizar la simulacin. 8.Conteste: a.Cunto es el tiempo que transcurre para que el ADC realice la adquisicin del dato en la lnea 53? b.Comente la lnea 44, descomente la lnea 46 y conteste la pregunta anterior. 4.5Trabajo Extra clase 1.Conteste: a.Elabore una lista de algunos sensores de temperatura, presin, luz y nivel.b.Cmo funciona un LM35? 2.Realice un programa en CCS que muestre la temperatura medida por un sensor LM35. LCD 16x2 PIC16F887 POT-HG Autor: Luis Alberto Vargas Tijerino.Pgina 28 Laboratorio 5:Interrupcin por Lectura de Entradas. 5.1Objetivo. FamiliarizarseconlautilizacindelainterrupcinporcambioenlasEntradasdigitalesmediantela implementacin prctica de esta gua de laboratorio. 5.2Introduccin. Encasitodoslosproyectosesnecesarioleeralgunaentradadetipodigitalconectadaapulsadores, interruptores, sensores digitales o similares. Este laboratorio trata de explicar cmo realizar esto de la manera ms eficiente. 5.3Interrupciones. UnaInterrupcinconsisteenunmecanismoporelcualuneventointernooexternopuedeinterrumpirla ejecucindeunprogramaencualquiermomento.Estoproduceunsaltoautomticoaunasubrutinade atencin a la interrupcin, sta atiende inmediatamente el evento y retoma luego la ejecucin del programa exactamente donde estaba en el momento de ser interrumpido. LasfuentesdeinterrupcindependendelPICutilizado.Porejemplo,elPIC16F84tiene4fuentesde interrupcin mientras que la familia PIC16F88X tiene entre 13 y 14. Los PIC de gama baja y media tienen un nico vector de interrupcin situado en la direccin 04h de programa, mientras que los de gama alta tienen dos vectores de interrupcin de distinta prioridad, alta y baja, situados en la posicin 08h y 18h de la memoria. 5.3.1Configuracin de las interrupciones. A continuacin se describen un conjunto de funciones que se utilizan para configurar las interrupciones: disable_interrupts(level)Desabilita la interrupcin Especificada. enable_interrupts(level)Habilita la interrupcin especificada. clear_interrupt(level)Limpiaelflagdeinterrupciespecificado.Estopuedeserutilizadoduranteuna interrupcin global, o para prevenir la utilizacin de una interrpupcin. 5.4Interrupcin Externa INT. La fuente de interrupciones externa INT se utilizapara atender eventos externos en tiempo real, por ejemplo detectar el cruce por cero de una seal. La interrupcin se puede producir si y slo si el cambio en RB0/INT es durante el flanco ascendente o si y slo si es durante el flanco descendente. 5.4.1Configuracin de la interrupcin externa INT. Para realizar la configuracin de la interrupcin externa INT es necesario realizar lo siguiente: 1.Escribir la rutina de interrupcin y sobre ella su directiva a como se muestra a continuacin: #INT_EXT Void int_ext_isr(){ Autor: Luis Alberto Vargas Tijerino.Pgina 29 Cdigo de la interrupcion } 2.Dentro de la rutina principal habilitar las interrupciones globales y Habilitar la interrupcin INT a como se muestra a continuacin: Void main(){ enable_interrups(GLOBAL);//Habilita las interrupciones Globales. enable_interrups(INT_EXT); //Habilita las interrupcion INT_EXT. } 5.5Interrupcin por cambio en PORTB. LafuentedeinterrupcionesporcambioenPORTBseutilizaparaatendereventosexternosentiemporeal, talescomomanejodebotonesointerruptores.Lainterrupcinsepuedeproducirsielcambioenalgunode los Pines en RB es durante el flanco ascendente o si es durante el flanco descendente. Todos los pines del PORTB estn configurados como pines de Interrupcin-en-cambio. Para que se habilite la interrupcinelvalorpresenteescomparadoconelvaloralmacenadoenlaltimalecturaparadeterminar cul bit ha sido cambiado o cual no coincide. Estainterrupcinpuededespertaraldispositivodelmodosleep.Parasalirdelarutinadeinterrupcinel usuario debe leer el PORTB para eliminar la condicin de error. 5.5.1Configuracin de la interrupcin por cambio en PORTB. Para realizar la configuracin de la interrupcin por es necesario realizar lo siguiente: 1.Escribir la rutina de interrupcin y sobre ella su directiva a como se muestra a continuacin: #INT_RBx Void RBx_isr(){ Cdigo de la interrupcion } 2.DentrodelarutinaprincipalhabilitarlasinterrupcionesglobalesyHabilitarlainterrupcinTMR0a como se muestra a continuacin: Void main(){ enable_interrups(GLOBAL);//Habilita las interrupciones Globales. enable_interrups(INT_RBx); //Habilita las interrupcion INT_RBx. } Autor: Luis Alberto Vargas Tijerino.Pgina 30 5.6Procedimiento. 1.Repetir los pasos del 1 al 4 en Crear el Proyecto en CCS. 2.CrearunaNuevacarpetallamadaLab4yunasubcarpetallamadaLED_Botones2enlaubicacinque consideres necesaria (Ejemplo: Carpeta Mis Documentos). 3.Abrir la carpeta LED_Botones2 y guardar el proyecto con el nombre de LED_Botones2. 4.Copiar el Cdigo 5.1 Led_botones2Cdigo 5.1 Led_botones2 /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. //Fecha: 8-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz ///PROGRAMA #INT_RB void RB_ISR(void){//Inicio de la interrupcion por cambio de PORTB int aux; //Declaracion de la variable aux. output_bit(PIN_A0,input(PIN_B0));//Hacemos que RA0 sea igual a RB0. aux=input_B(); //Leemos el valor del PORTB para eliminar la condicion } //de error y que sea posible salir de la interrupcion. void main(void){ setup_adc_ports(NO_ANALOGS|VSS_VDD); //Todas las entradas del PIC Seran Digitales. setup_comparator(NC_NC); //Los comparadores Analogicos estaran apagados. ENABLE_INTERRUPTS(GLOBAL); //Habilitamos las interrupciones Globales ENABLE_INTERRUPTS(INT_RB0);//Habilitamos las interrupciones por cambio en PIN_B0 while(TRUE){ //bucle infinito SLEEP();//Ponemos el PIC en modo de bajo consumo. } } 5.Compilar el proyecto. 6.Crear el circuito en Proteus. Para ello ser necesariobuscarmediantelacajadebsquedaenla ventana PICK DEVICE el PIC16F887, el LOGICSTATE y el LOGICPROBE. Autor: Luis Alberto Vargas Tijerino.Pgina 31 7.Cargar el Archivo fuente Led_Botones2.cof y Realizar la simulacin. 8.Conteste: a.Qu ocurre en la lnea 39? b.De doble clic en la lnea 29 para generar un break point y explique cundo ocurre el salto hacia la lnea 29. c.Comente la lnea 36 y conteste la pregunta anterior de nuevo. 5.7Trabajo Extra Clase ElaboreunprogramaenCCSquemuestreunasecuenciadeLEDconectadosalPORTC(1alavez)cada1 segundo y que muestre en PORTC el valor ingresado por PORTB (utilizar interrupcin por cambio en PORTB). PIC16F887 LOGICSTATE LOGICPROBE Autor: Luis Alberto Vargas Tijerino.Pgina 32 Laboratorio 6:Interrupcin por Desbordamiento del TMR0. 6.1Objetivo. UtilizarlainterrupcinpordesbordamientodelTMR0mediantelaimplementacindeestaprcticade laboratorio para comprender su funcionamiento.6.2Introduccin. EnelLaboratorioanteriorseestudielconceptodeinterrupcin,especficamentelasinterrupciones producidas por cambio en las entradas. En este laboratorio estudiaremos la interrupcin por desbordamiento del TMR0 en el cual realizaremos un ejemplo prctico. 6.3Temporizadores. LosTIMERsoTemporizadoressonmdulosintegradosenelPICquepermitenrealizarcuentastantode eventos internos como externos. Cuando la cuenta es interna se habla de temporizacin y cuando la cuenta es externa se habla de contador. LosTemporizadoressontilesencasoderequerirqueloseventosocurranentiemposexactas,yaquesin ellos hay que tener en cuenta el tiempo de ejecucin de las instrucciones y de los saltos. Porlogeneralsecometeelerrorderealizarlastemporizacionesmedianteretardosperoestosehace imposible si necesitamos que el PIC realice otra tarea mientras se est ejecutando la temporizacin. La manera ms eficiente de realizar una temporizacin es cargar el valor en uno de los TIMER, luego se espera a que ocurra la interrupcin cuando este se desborde y finalmente se realizan ajustes finos mediante retardos pequeos para aumentar la precisin de la temporizacin. 6.4Mdulo TIMER0. El mdulo TIMER0 es un Temporizador/Contador con las siguientes caractersticas: -Temporizador/Contador de 8bits. -Prescaler de 8 bits (compartido con el Watchdog Timer). -Fuente de reloj externa o interna programable. -Interrupcin por desbordamiento. 6.4.1Configuracin de la interrupcin por TIMER0. Para realizar la configuracin de la interrupcin por TIMER0 es necesario realizar lo siguiente: 1.Escribir la rutina de interrupcin y sobre ella su directiva a como se muestra a continuacin: #INT_TMR0 Void TMR0_isr(){ Cdigo de la interrupcion } Autor: Luis Alberto Vargas Tijerino.Pgina 33 2.Dentro de la rutina principal habilitar el FLAG de interrupcin TMR0 y habilitar el FLAG de interrupcion global, si no se habilita este FLAG no se realizar ninguna interrupcin. Void main(){ enable_interrups(GLOBAL);//Habilita las interrupciones Globales. enable_interrups(INT_TMR0);//Habilita las interrupcion INT_RBx. } 6.4.2Configuracin del TMR0. La funcin que se encarga de realizar la configuracin del mdulo TIMER0 es la siguiente: setup_timer_0 (mode) Sintaxissetup_timer_0 (mode) Parametrosmode podra ser dos de las siguientes constantes: -T0_INTERNAL -T0_EXT_L_TO_H -T0_EXT_H_TO_L -T0_DIV_1 -T0_DIV_2 -T0_DIV_4 -T0_DIV_16 -T0_DIV_32 -T0_DIV_64 -T0_DIV_128 -T0_DIV_256 period es un int de 0-255 que determina cuando el valor del reloj se reinicia.

postscaleesunnumerode1-16quedeterminacuantosdesbordesdeltimerantesdeuna interrupcin. (1 significa una vez, 2 significa 2 veces, etc.). EjemploSetup_timer_0(T0_INTERNAL|T0_DIV_1);//utiliza reloj interno y lo divide entre 16.4.3Modificacin y obtencin del valor de TIMER0. Las funciones que se encargan de realizar la obtencin y modificacin del mdulo TIMER0 son las siguientes: set_timer0() y get_timer0() Sintaxisset_timer_0 (value) y get_timer0() Parametrosvalue es el valor que tendr TIMER0 en ese instante6.4.4Clculo de la temporizacin. Las temporizaciones se pueden calcular de la siguiente manera: ( ) 4 0 256 0 T DIV TMRTemporizacionFosc =Autor: Luis Alberto Vargas Tijerino.Pgina 34 6.4.4.1Ejemplo Se desea calcular una temporizacin de 20 ms para un PIC16F887 conectado a un CRYSTAL de 8MHz. Sabemos que este PIC posee 9 prescaler para TIMER0,escogeremos T0DIV=256. Lo siguiente sera calcular el valor de TMR0. 0 2564 020 80 256 994256OSCTemporizacionFTMRT DIVms MHzTMR= = ~ 6.5Procedimiento. 1.Repetir los pasos del 1 al 4 en Crear el Proyecto en CCS. 2.CrearunaNuevacarpetallamadaLab5yunasubcarpetallamadaLED_Blink2enlaubicacinque consideres necesaria (Ejemplo: Carpeta Mis Documentos). 3.Abrir la carpeta LED_Blink2 y guardar el proyecto con el nombre de LED_Blink2. 4.Copiar el Cdigo 6.1 Led_blink2 Cdigo 6.1 Led_blink2 /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. //Fecha: 24-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz #use fast_io(A) #use fast_io(B) //Interrupcion por TMR0. //La interrupcion ocurrira (256-TMR0)*256*4/Fosc=(256-0)*256*4/8MHz=32.768ms int1 aux; #INT_TIMER0 void TIMR0_ISR(){ output_bit(PIN_B0,~input_state(PIN_B0));//Si RB0 es igual a 1 entoneces el valor siguiente sera 0. }//Si RB0 es igual a 0 entoneces el valor siguiente sera 1. ///PROGRAMA Principal. void main(void){ set_tris_B(0); set_tris_A(255); setup_adc_ports(NO_ANALOGS|VSS_VDD); //Todas las entradas del PIC Seran Digitales. setup_comparator(NC_NC_NC_NC); //Los comparadores Analogicos estaran apagados. setup_timer_0(T0_INTERNAL|T0_DIV_256); //La entrada de Reloj para TIMER0 sera interna. //Se dividira el reloj interno entre 256. setup_timer_1(T1_DISABLED);//Desabilitamos el TIMER1. setup_timer_2(T2_DISABLED,0,1);//Desabilitamos el TIMER2. Autor: Luis Alberto Vargas Tijerino.Pgina 35 enable_interrupts(INT_TIMER0); //Habilitamos la interrupcion por desborde del TIMER0. enable_interrupts(GLOBAL); //Habilitamos la interrupciones globales. while(TRUE){ //bucle infinito output_bit(PIN_B1,input(PIN_A1)); //RB1 sera igual a RA1. } } 5.Presionar F9 para compilar el proyecto. 6.Crear el circuito en Proteus. Para ello ser necesariobuscarmediantelacajadebsquedaenla ventana PICK DEVICE el PIC16F887, el LOGICSTATE y el LOGICPROBE. 7.ParainsertarelOSCILLOSCOPEsernecesariodarclicenelbotnVirtualInstrumentdelcintade botonesizquierdayluegosedebedarclicenlaopcinOSCILLOSCOPEdelpanellateralacomose muestra en la siguiente figura. OSCILLOSCOPE PIC16F887 LOGICSTATE LOGICPROBE Botn Virtual Instruments Panel Instruments Autor: Luis Alberto Vargas Tijerino.Pgina 36 8.Cargar el Archivo fuente Led_Blink2.cof y Realizar la simulacin. 6.6Trabajo Extra Clase ElaboreunprogramaenCCSquemuestreunasecuenciadeLEDsconectadosalPORTC(1alavez)cada1 segundo y que muestre en PORTC el valor ingresado por PORTB (utilizar interrupcin por cambio en PORTB y por desbordamiento de TMR0). Autor: Luis Alberto Vargas Tijerino.Pgina 37 Laboratorio 7:Generador de seal PWM. 7.1Objetivo. FamiliarizarseconlautilizacindelmduloCCPenmodoPWMmediantelaimplementacinprcticadel ejemplo prctico Gen_PWM 7.2Introduccin. Este laboratorio trata de mostrar la teora y el procedimiento utilizado para generar una seal PWM mediante el mdulo CCP1del PIC16F887. 7.3Modulacin por ancho de pulsos La modulacin por ancho de pulsos (PWM,pulse-width modulation) de una seal o fuente de energa es una tcnicaenlaquesemodificaelciclodetrabajodeunasealperidica(unasenoidalounacuadrada,por ejemplo),yaseaparatransmitirinformacinatravsdeuncanaldecomunicacionesoparacontrolarla cantidad de energa que se enva a una carga. El ciclo de trabajo de una seal peridica es el ancho relativo de su parte positiva en relacin con el perodo. Expresado matemticamente: D es el ciclo de trabajo es el tiempo en que la funcin es positiva (ancho del pulso) T es el perodo de la funcin [Wikipedia] [wikipedia] 7.4Mdulo CCP. Los mdulos CCP (Capture/Compare/PWM) permiten realizar las siguientes Funciones: -Captura:obtieneelvalordeltemporizadorenunmomentodato,fijadoporlaaccindeunterminal del PIC. -Comparacin: compara el valor del temporizador con el valor de un registro y provoca una accin en el PIC. Autor: Luis Alberto Vargas Tijerino.Pgina 38 -PWM: genera una seal modulada por ancho de pulso. Los PIC de gama media pueden tener hasta 2 mdulos CCP.7.4.1Configuracin del Mdulo CCP en Modo PWM. La funcin que se encarga de realizar la configuracin del mdulo CCP es la siguiente: setup_ccpX( ) Sintaxissetup_ccp1 (mode)o setup_ccp2 (mode) Parametrosmode es una constant. Las constantes vlidas se encuentran en los archivos .h del dispositivo y son las siguientes: Deshabilita el mdulo CCP CCP_OFF Configuracin del CCP para modo PWM: CCP_PWMHabilita el Pulse Width Modulator 7.4.2Configuracin del ciclo de trabajo. La funcin que se encarga de configurar el ciclo de trabajo es la siguiente. Set_pwm_dutyX( ) Sintaxisset_pwm1_duty (value) set_pwm2_duty (value) Parametrosvalue podra ser una variable o una constante de 8 o 16 bits. 7.5Mdulo TIMER2. Es un temporizador de 8 bits, similar al TIMER0, con las siguientes caractersticas: 1.Registro TIMER2 de 8 bits. 2.Registro PR2 de 8 bits. 3.Interrupcin al coincidir TIMER2 con PR2. 4.Prescaler programable por software (1:1, 1:4, 1:16). 5.Postcaler programable por software (1:1 hasta 1:16). [hoja de datos]. 7.5.1Configuracin de la frecuencia PWM. ElPerododelasealseobtienealconfigurarTIMER2yelvalordelregistroPR2,paraelloseutilizala siguiente funcin: setup_timer_2( ) Sintaxissetup_timer_2 (mode, period, postscale) Parametrosmode podra ser: -T2_DISABLED -T2_DIV_BY_1 -T2_DIV_BY_4 Autor: Luis Alberto Vargas Tijerino.Pgina 39 -T2_DIV_BY_16 period es un int de 0-255 que determina cuando el valor del reloj se reinicia.

postscaleesunnumerode1-16quedeterminacuantosdesbordesdeltimerantesdeuna interrupcin. (1 significa una vez, 2 significa 2 veces, etc.). [ayuda ccs] A continuacin se describe el funcionamiento delmdulo. En la figura anterior podemos observar que cuando el valor del registro PR2 coincide con el valor del TIMER2 ocurre lo siguiente. 1.Se reinicia TMR2. 2.El pin CCPx se pone a 1 (excepto cuando el Ciclo de trabajo es 0%). 3.ElvalordelRegistroprincipaldelCiclodeTrabajo(CCPRxLyCCPxCON)secargaenelregistro auxiliar del Ciclo de trabajo (CCPRxH mas 2bits). ElRegistroprincipaldelCiclodeTrabajo(CCPRxLyCCPxCON)puedeserescritoencualquiermomento pero no se cargan en el registro auxiliar (CCPRxH mas 2bits) hasta que finalice el Perodo. Cuando el valor de TIMER2 coincide con el valor del Ciclo de Trabajo (CCPRxH mas 2bits) el pin CCPx se pone a 0 hasta que PR2 coincida de nuevo con TIMER2 y se inicie el nuevo Perodo. 7.5.2Calculo de la Frecuencia PWM. Con lo dicho anterior mente podemos determinar que la frecuencia PWM depende del valor del prescaler del TIMER2 T2DIV (valor de mode) y PR2 (valor de period), a continuacin se muestra la ecuacin para calcular el Perodo PWM que nos brinda Microchip. ( ) 4 2 2 1PWM OSCT T T DIV PR = +Es decir: Autor: Luis Alberto Vargas Tijerino.Pgina 40 ( ) 4 2 2 1OSCPWMFFT DIV PR= + 7.5.2.1Ejemplo: Deseamos que Fpwm=1khz para un PIC16F887 al que se le conecta un cristal de 8MHz. Sabemos que este PIC posee 3 prescaler T2DIV=1, 4 y 16, por lo tanto el primer paso ser despejar el valor de PR2 de la formula anterior. 2 14 2OSCPWMFPRF T DIV= El segundo paso ser sustituir valores y probar con T2DIV = 1. 82 1 19994 1 1MHzPRkHz= = Como el valor anterior es mayor al valor mximo de PR2, es decir 255, debemos aumentar el valor de T2DIV. 82 1 4994 1 4MHzPRkHz= = ComoanelvaloranterioresmayoralvalormximodePR2,esdecir255,debemosaumentarelvalorde T2DIV y finalmente encontramos que: 82 1 1244 1 16MHzPRkHz= = Por lo tanto, para configurar la frecuencia PWM debemos ingresar la siguiente funcin: Setup_timer_2(T2_DIV_16,124,1) 7.5.3Resolucin del Ciclo de Trabajo. Laresolucindeterminaelnmerodeposiblesciclosdetrabajoparaunperododado.Porejemplo,una resolucinde10bitsresultaren1024ciclosdetrabajodiscretos,mientrasqueunaresolucinde8bits resultar en 256 ciclos de trabajo discretos. La mxima resolucin es 10 bits cuando PR2 es 255. La resolucin es funcin del valor del registro PR2 a como se muestra en la siguiente ecuacin. 7.5.3.1Ejemplo Calcule la resolucin del ciclo de trabajo del ejemplo anterior. En el ejemplo anterior el valor de PR2 fue 124 por lo tanto su resolucin ser: Autor: Luis Alberto Vargas Tijerino.Pgina 41 ( ) log 4124 18log2Resolucion bits+( = ~7.6Procedimiento. 1.Crear el Proyecto en CCS. 2.Copiar el Cdigo 7.1 Gen_PWM Cdigo 7.1 Gen_PWM /////////////////////////////////////////////////////////////////////////////// //Autor: Luis Alberto Vargas Tijerino. //Alias: Bigluis. //Pais:Nicaragua. //Fecha: 24-Nov-10. /////////////////////////////////////////////////////////////////////////////// #include //pic a utilizar #FUSES NOWDT //No Watch Dog Timer #FUSES HS//High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz #use fast_io(B) void main(){ signed int sel_Fpwm=0; unsigned int Duty=127; set_tris_B(0XFF); //Todos los pines de PORTB seran entradas. setup_comparator(NC_NC);//Desconectamos los comparadores Analogicos SETUP_ADC_PORTS(NO_ANALOGS);//Solo AN0 sera analogico los demas digitales. SETUP_ADC(ADC_OFF); //Apagamos el ADC setup_ccp1(CCP_PWM);//Configuramos CCP1 en modo PWM simple. while(TRUE){//Inicio del ciclo Infinito while(!input_B()); //Espera a que se active un pin del PORTB. delay_ms(10);//Retardo de 10ms para eliminar rebotes. if(input(PIN_B0))//Si se activa PIN_B0 if(++sel_Fpwm>3)//preincrementamos sel_Fpwm y si es mayor que 3 sel_Fpwm=0;//igualamos sel_Fpwm a 0. if(input(PIN_B1))//Si se activa PIN_B1 if(--sel_Fpwm 4mhz for PCM/PCH) (>10mhz for PCD) #FUSES NOPUT //No Power Up Timer #FUSES MCLR//Master Clear pin enabled #FUSES NOPROTECT //Code not protected from reading #FUSES NOCPD //No EE protection #FUSES NOBROWNOUT//No brownout reset #FUSES IESO//Internal External Switch Over mode enabled #FUSES FCMEN //Fail-safe clock monitor enabled #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NODEBUG //No Debug mode for ICD #FUSES NOWRT //Program memory not write protected #FUSES BORV40//Brownout reset at 4.0V #FUSES RESERVED//Used to set the reserved FUSE bits #use delay (clock=8M) //Fosc=8Mhz #use RS232(baud=9600, UART1)//Configuramos USART con 9600 baudios y EUSART interno. #define LCD_ENABLE_PINPIN_B5 #define LCD_RS_PINPIN_B4 #define LCD_RW_PINPIN_B6 #define LCD_DATA4 PIN_B0 #define LCD_DATA5 PIN_B1 #define LCD_DATA6 PIN_B2 #define LCD_DATA7 PIN_B3 #include //Declaraciones: int valor; //valor como entero char cadena1[10];//cadena1 como arreglo de 10 caracteres char const cadena2[]="hola"; //cadena2 como arreglo constante de caracteres void main(){ setup_comparator(NC_NC); //Desconectamos los comparadores Analogicos SETUP_ADC_PORTS(NO_ANALOGS); //Solo AN0 sera analogico los demas digitales. SETUP_ADC(ADC_OFF);//Apagamos el ADC lcd_init();//Inicializa el LCD. lcd_putc("\fTx:\nRx:");//Escribe "Tx:" en pos. 1,1 y "Rx:" en pos. 1,2 while(1){ lcd_gotoxy(5,1); //Ubicar el cursor en la posicion 5,1 while(!input_a()); //Espera hasta que se activen los pines de PORTA delay_ms(10);//Retardo de 10ms para eliminar rebotes if(input(PIN_A0)){ //Si se activa el PIN_A0 lcd_putc('U'); //Escribir en el LCD la letra 'U' putc('U'); //Enviar por USART la letra 'U' } if(input(PIN_A1)){ //Si se activa el PIN_A1 lcd_putc("FEC ");//Escribe en el LCD "FEC " puts("FEC ");//Envia por usart la cadena "FEC " } if(input(PIN_A2)){ //Si se activa el PIN_A2 printf(lcd_putc,"%s",cadena2); //Escribe en el LCD el contenido de cadena2 printf("%s",cadena2);//Envia por USART el contenido de cadena2 } if(input(PIN_A3)){ //Si se activa el PIN_A3 lcd_gotoxy(5,2); //Posicion del cursor del LCD es 5,2 valor=getc();//Almacena el dato recibido del USART en valor lcd_putc(valor); //Escribe el contenido de valor en el LCD } if(input(PIN_A4)){ //Si se activa el PIN_A4 lcd_gotoxy(5,2); //Envia cursor a pos. 5,2. gets(cadena1); //Almacena la cadena recibida en cadena1 printf(lcd_putc,"%s",cadena1); //Escribe en el LCD el contenido de cadena1 } while(input_a()); //Espera hasta que se desactiven los pines de PORTA } } Error! No se encuentra el origen de la referencia. 10. Presionar F9 para compilar el proyecto. Autor: Luis Alberto Vargas Tijerino.Pgina 49 11. Crear el circuito en Proteus que se muestra en la Figura 8.5. Para ello ser necesario buscar mediantelacajadebsquedaenlaventanaPICKDEVICEelPIC16F887,LOGICTOGGLE,COMPINy LM016L. Figura 8.5 12. Para insertar el VIRTUAL TERMINAL ser necesario dar clic en el botn Virtual Instrument de la cinta debotonesizquierdayluegosedebedarclicenlaopcinVIRTUALTERMINALdelpanellaterala como se muestra en la siguiente figura. 13. Cargar el Archivo fuente GEN_PWM.cof y Realizar la simulacin. 14. Contestar las siguientes preguntas: a.Presione el botn conectado a RA0 y explique qu ocurre en las lneas 52 y 53. COMPIN Virtual Terminal PIC16F887 LM016L LOGICTOGGLE Botn Virtual Instruments Panel Instruments Autor: Luis Alberto Vargas Tijerino.Pgina 50 b.Presione el botn conectado a RA1 y explique qu ocurre en las lneas 56 y 57. c.Presione el botn conectado a RA2 y explique qu ocurre en las lneas 61 y 62. d.PresioneelbotnconectadoaRA3,escribalaletrafenelVirtualTerminalyexpliquequ ocurre en las lneas 65 y 66. e.Presione el botn conectado a RA4, escriba PIC en el Virtual Terminal y explique qu ocurre en las lneas 70 y 71. 15. Crear el circuito en Proteus que se muestra en la Figura 8.6. Para ello copie y pegue el circuito anterior. Figura 8.6 16. Contestar las siguientes preguntas: a.Presione el botn RA3 de U2, luego presione el botn RA0 de U1 y explique qu ocurre. b.Presione el botn RA4 de U2, luego presione el botn RA2 de U1 y explique qu ocurre. c.Presione el botn RA4 de U2, luego presione el botn RA3 de U1 y explique qu ocurre. d.Presione el botn RA3 de U1, luego presione el botn RA0 de U2 y explique qu ocurre. e.Presione el botn RA4 de U1, luego presione el botn RA2 de U2 y explique qu ocurre. f.Presione el botn RA4 de U1, luego presione el botn RA3 de U2 y explique qu ocurre. 8.9Configuracin del Hyperterminal de Windows UnaherramientasumamentetilparaobservarlosdatosprovenientesdelpuertoseriedelaPCesel Hyperterminal, a continuacin se muestra como realizar su configuracin. 1.Paracomenzarlaconfiguracin,dirjasealbotndeInicioyseleccione:Programas-Accesorios- Hyperterminal. Si no tiene la carpeta de Hyperterminal:PIC16F887 LM016L LOGICTOGGLE Autor: Luis Alberto Vargas Tijerino.Pgina 51 2.DentrodeMiPChagadobleclicksobreeliconodePaneldeControl.Luegohagadobleclicksobre Agregar o Quitar Programas y haga un click sobre la pestaa deInstalacin de Windows. Ahora para verificar las opciones de comunicaciones que tiene instalada, haga doble click sobreComunicaciones, luegoenlasPropiedades,ymarquelaopcindeHyperterminalyseleccioneAceptarhastaqueel programa empiece a instalar el Hyperterminal. 3.Se visualizar una ventana como lo muestra la figura. Haga doble clic sobre el cono Hypertrm. 4.Al presentarse esta pantalla, en el campo de Nombre, escriba el nombre con el que desea identificar la sesin (puede escribir T-NET) y oprima el botn de Aceptar.Autor: Luis Alberto Vargas Tijerino.Pgina 52 5.EnelcampodeConectarutilizando,seseleccionaelpuertodecomunicacin(Com)endondese encuentre su PIC instalado. Oprima el botn de Aceptar. 6.Laspropiedadesdelpuerto(comx)nodebensufrirmodificaciones.Enestapantallaoprimaelbotn de Aceptar.Autor: Luis Alberto Vargas Tijerino.Pgina 53 Nota:LosdatosprovenientesdelpuertoserialpuedenserobtenidosporprogramascomoVisualBasic, Matlab, LabView y otros. 8.10Trabajo Extra Clase 1.Conteste: a.Cul de los dos modos de transmisin transfiere ms rpido los datos? b.Cul de los dos modos de transmisin acepta la mayor distancia entre dispositivos? c.Qu es la transmisin SPI? d.Qu es la transmisin I2C? e.Qu es la transmisin One-Wire? f.Culessonlosprotocolosdetransmisinalmbricomsutilizadosactualmenteenla electrnica de consumo? 2.ElaboreunprogramaenCCSqueobtengalosdatosdelADCylosenvemedianteUSARTal Hyperterminal de Windows.