tag:blogger.com,1999:blog-4276955610993644712024-02-02T00:56:42.641-07:00PIC 16F877El Microcontrolador PIC 16F877 de Microchip es muy versatil por contar con diversas caracteristicas en un solo chip que lo hacen ser uno de los mas utilizados en el mundo. __________________________________ ► ╔══ Hey English Buddies, if you need help or if you have any question ask for it pls.══╗Unknownnoreply@blogger.comBlogger34125tag:blogger.com,1999:blog-427695561099364471.post-67679434471255707042008-01-08T08:53:00.002-07:002008-03-23T18:51:40.540-07:00Direccion WebVisita tambien la siguiente direccion:http://pic16f877.dmchihuahua.com/Recibo sus comentarios a iess2600(a)gmail .comGraciasUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-12243101117616947932007-11-02T09:11:00.000-07:002008-11-06T19:41:48.975-07:00Programa Comunicacion SPI - Dos Microcontroladores 16F877AComunicaciòn Serial SPI con dos PIC 16F877A.Este programa muestra el uso de comunicacion SPI entre dos microcontroladores 16F877A, como ya se vio la comunicacion usa basicamente tres lineas de comunicacion, la SDO (Salida de datos), SDI, Entrada de datos, SCK (Señal de reloj) y una opcional de SS o CS, Slave Select o Chip Select.(Musica del video por Erick Johnson, espero no sea retirado de la Unknownnoreply@blogger.com10tag:blogger.com,1999:blog-427695561099364471.post-80903717515864344412007-10-29T16:00:00.000-07:002008-11-06T19:41:49.748-07:00Comunicacion SPI - PIC 16F877El modo de comunicacion serial SPI, permite el envio y recepcion simultanea de 8 bit. Existen cuatro modos de configuracion que dependen de la polaridad y fase del reloj (CKP y CKE), los cuatro modos son soportados por el PIC 16F877.Para la comunicacion se requieren basicamente de tres pines:SDO (Serial Data Out) - RC5SDI (Serial Data In) - RC4SCK (Serial Clock) - RC3Adicionalmente para la Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-427695561099364471.post-5527613403984289422007-10-29T15:15:00.000-07:002008-11-06T19:41:49.866-07:00Modulo MSSP del PIC 16F877AComo ya se habia comentado muy al inicio del Blog, el microcontrolador PIC 16F877A tiene un modulo llamado MSSP (Master Synchronous Serial Port) que puede ser configurado para trabajar en dos modos de comunicacion: SPI (Serial Peripheral Interfase) e I2C (Inter-Integrated Circuit).Ambos modos pueden usarse para comunicarce con otros dispocitivos compatibles con estos protocolos de comunicacion, Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-427695561099364471.post-47284098634860965752007-10-24T13:51:00.000-06:002008-11-06T19:41:50.358-07:00PWM de Ancho Variable con PIC 16F877AVariando el ancho del pulso PWMSi variamos el valor del registro CCPR1L, estaremos variando el ciclo de trabajo del PWM. En este programa variamos ese registro usando un convertidor AD en la entrada AN0; el modulo PWM al igual que el programa anterior esta configurado a 250Hz y el ADC trabaja a 8 bit usando justificacion a la izquierda (ya visto antes).En el Video se observa la variacion en la Unknownnoreply@blogger.com18tag:blogger.com,1999:blog-427695561099364471.post-56394181910479169492007-10-24T12:59:00.000-06:002008-11-06T19:41:50.568-07:00Programa del Modulo PWMEste programa esta calculado para trabajar a una sola frecuencia y a un solo ciclo de trabajo, programa sin interrupciones.El objetivo es tener una señal PWM de 250 Hz al 50% no modificable para lo cual se siguieron lo pasos:Dar valor a PR2 para el Periodo del PWMPara poner el ciclo de trabajo damos valor a CCPR1L y CCP1CON<5:4> (10 bits)Configurar la salida en RC2, haciendo BCF TRISC, 2Dar valorUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-427695561099364471.post-81020881514210643392007-10-24T10:00:00.001-06:002008-11-06T19:41:50.869-07:00Modulo PWM del PIC 16F877AEl Modulo PWM del PIC 16F877 tiene una resolucion maxima de 10 bit y su salida se toma del pin RC2, por lo cual debe estar configurado como salida en el registro Tris C.Periodo PWM El Periodo del Modulo PWM es configurado dando un valor al registro PR2. Este periodo puede ser calculado usando la siguiete formula:PWM Period = [(PR2) + 1] • 4 • TOSC • Prescale del Timer 2Como ya es sabido la Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-427695561099364471.post-60402167040020145422007-10-24T09:57:00.000-06:002008-11-06T19:41:51.149-07:00Modulo PWM - Que es PWMQuè es PWM?PWM = Pulse Width Modulation, Modulacion del Ancho de PulsoLa tecnica PWM tiene muchas aplicaciones como pueden ser un Dimmer de luz, Control de velocidad de un Motor, y Convertidores DA y AD.Breve explicacion del PWM.Hay muchos circuitos analogicos para el uso de PWM, por ej. los basados en el famoso LM555, que por medio de voltage hacemos que el pulso cambie su ancho.La forma de ondaUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-427695561099364471.post-67078613173879160252007-10-24T09:23:00.000-06:002007-10-24T09:57:05.693-06:00Programa del Timer 2El programa del Timer 2 inicialmente esta configurado con un Prescaler de 1:4 y un Postscaler 1:16, tiene interrupciones de Timer 2 y Externa habilitadas.Cuando la interrupcion del Timer sucede, hace que se incremente una cuenta por el Puerto D.Cuando la interrupcion Externa ocurre, cambia los valores del Postscale y Prescale a 1:1 haciendo en conteo mas rapido como se observa en el video.El Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-427695561099364471.post-44510077183684803562007-10-22T09:40:00.000-06:002008-11-06T19:41:51.315-07:00Timer 2 del PIC 16F877AEl Timer 2 del PIC 16F877 es de 8 bit, tiene un Prescaler y un Postscaler, puede ser usado como base de tiempo del modulo PWM. El registro de conteo TMR2 es leible y escribible, y es limpiado por cualquier Reset.El Timer 2 tiene un registro de Periodo PR2 que a diferencia de los anteriores que terminaban en FFh o FFFFh utiliza este registro el cual le indica al Timer 2 cuando reiniciarce Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-427695561099364471.post-79350910828816320392007-10-19T14:45:00.000-06:002008-11-06T19:41:51.451-07:00Programa del Timer 1En el video de este programa se ve su funcionamiento. Al iniciar la operacion del PIC, el programa cuenta cada desbordamiento FFFFH a 0000H e incrementa esta cuenta por el Puerto D, en ese momento se esta usando como base de tiempo el oscilador interno Fosc/4 por lo que es veloz.Cuando tiene lugar la interrupcion externa, el timer toma como base de tiempo el Oscilador externo por lo que es mas Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-50708107871731927602007-10-17T13:21:00.001-06:002007-10-17T13:32:21.579-06:00Timer 1 del 16F877El Timer 1, puede ser configurado como temporizador y contador de 16 bit, por lo que esta formado por dos registros de 8 bit cada uno: TMR1H y TMR1L. La bandera de desbordamiento es la TMR1IF El temporizador se incrementa en cada ciclo de instruccion, cuando esta configurado como Contador, este se incrementara en cada trancision de 0 a 1 de la señal de reloj externa.El Timer 1 es activado/Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-427695561099364471.post-15693973266856813972007-10-10T09:17:00.000-06:002008-11-06T19:41:51.715-07:00Uso del Timer 0 del PIC 16F877AEl Timer 0 del PIC 16F877A, es un Temporizador/Contador de 8-bit. Para trabajar con este Timer hay varios parametros de configuracion como lo son (abajo):- Fuente de conteo o tiempo, interna o externa- Prescaler 1:2, 1:4, 1:8 hasta 1:256- Uso de las interrupciones del timer cada desbordamiento- Trancisiones, (0 a 1) o (1 a 0)El prescaler es como un contador mas, es decir si no usaramos prescaler Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-427695561099364471.post-46634347988979136662007-10-04T08:52:00.001-06:002008-11-06T19:41:52.230-07:00ADC con 3 EntradasHola, despues de una corta ausencia, traigo este programa; es una variacion importante del anterior pues trabaja tambien con convertidores AD, pero ahora con tres canales, con frecuencia de muestreo de Fosc/8 y dos referencias de voltage (Yo tome 0-5V).El microcontrolador compara el valor de cada convercion con un valor preestablecido en los registros de comparacion. Cuando el valor de la Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-427695561099364471.post-29313552118836880252007-09-07T09:11:00.001-06:002008-11-06T19:41:52.874-07:00USO DEL MODULO ADC DEL 16F877El uso del ADC, tiene muchas opciones de configuracion. Al usarlo podemos seleccionar la frecuencia del reloj del modulo de convercion AD, los canales a utilizar, y seleccionar una combinacion de la tabla de abajo. Ademas podemos generar interrupciones cada vez que se termina una convercion para que la muestre y/o poder trabajar con ella una vez que este completada la conversion.A continuacion elUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-427695561099364471.post-68987881892549800332007-09-07T08:56:00.000-06:002007-09-07T09:11:48.992-06:00Interrupcion de la RutinaHola para aprovechar el armado del esquematico, este programa es una pequeña variacion del anterior en donde esta haciendo la misma rutina, pero cada vez que se le llama a un retardo se prueba el estado de un boton el cual interrumpe la rutina de rotacion. A partir de que fue presionado este boton, los otros dos botones siguientes, SW1 y SW2, funcionaran como incrementadores del puerto B y D Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-61653345560846642082007-09-05T14:31:00.000-06:002007-09-06T12:21:41.054-06:00CORRIMIENTO PUERTOS B Y D, USANDO RLF Y RRFCORRIMIENTO USANDO PUERTOS B Y DEste es un segundo programa muy similar al anterior pero mas avanzado pues usa dos puertos para la visualizacion de los LED. Ademas la rutina involucra ahora a la instruccion RRF, muy similar a la anterior, pero con rotacion a la derecha.Puedes ver el video para un mejor entendimiento de el funcionamiento. Es un efecto mas llamativo pues es semejante a las luces deUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-427695561099364471.post-10197682921315793342007-09-05T08:32:00.000-06:002007-09-05T14:59:58.993-06:00CORRIMIENTO POR EL PUERTO B - PRIMER PROGRAMACORRIMIENTO POR EL PUERTO BPara este momento ya debes tener el Programador JDM u otro ademas de saber aunque sea lo basico del MPLAB y el IC-Prog y haber leido toda la info publicada antes en este Blog, asi que estamos mas que listos para el primer programa...Bueno este es el Primer Programa que publicare aqui, se trata de un Corrimiento de un Bit por el Puerto B usando la instruccion RLF y Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-427695561099364471.post-21421200926603936202007-08-31T15:15:00.001-06:002008-11-06T19:41:52.991-07:00Set de InstruccionesHasta aqui, para poder iniciar a programar el Microcontrolador PIC 16F877, solo necesitamos conocer el set de instrucciones el cual se presenta en la siguiente figura:En el se puede ver el Mnemonico de las instruccion, sus operandos, descripcion , los ciclos que toma su ejecucion, el Opcode y los bit que puede afectar cada operacion. Estan clasificadas de acuerdo a su funcionamiento si estan Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-427695561099364471.post-74348486574288855932007-08-31T09:01:00.000-06:002008-11-06T19:41:53.132-07:00PUERTOS DE ENTRADA/SALIDAAntes de nuestro primer programa es importante conocer los puertos del microcontrolador y las caracteristicas basicas de cada uno.Algunos pines son multiplexados para ser usados en los modulos perifericos, cuando esto es asi, usualmente ese pin no puede ser usado como un pin de entrada salida normal.EL PUERTO A Y EL REGISTRO TRISALas entradas y salidas del Puerto A son configuradas usando el Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-46033225575724811642007-08-21T14:50:00.002-06:002008-11-06T19:41:54.271-07:00MEMORIA DE PROGRAMA, DE DATOS Y SFRHay que saber muchas cosas antes de programar el PIC, que caso tendria simplemente cargar y armar circuitos que otras personas hicieron. Que pasara cuando necesitemos que haga algo, que controle una parte de un proceso, modificar alguna caracteristica. Por ello vamos primero a entender como trabaja la memoria del PIC 16F877.El Microcontrolador PIC 16F877 tiene tres memorias; la memoria de Unknownnoreply@blogger.com3tag:blogger.com,1999:blog-427695561099364471.post-56430598028423949662007-08-21T13:37:00.000-06:002008-11-06T19:41:54.452-07:00Imagen del 16F877AEsta es una buena imagen del PIC 16F877A, busque en internet por una asi pero como no encontre ninguna me di a la terea de tomarla, espero a alguien le sirva, la tengo disponible en una mejor resolucion, solo dime ok?Saludos.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-70093078004693530502007-08-21T11:29:00.000-06:002008-11-06T19:41:54.623-07:00Uso Basico del IC-ProgIr aqui para Bajar el IC-Prog desde www.ic-prog.comPrimero configuremos el Software para usar el JDM: - Vamos a Settings>Hardware, seleccionamos JDM Programmer de la lista, seleccionamos el puerto serial que estamos usando (generalmente COM1 o 2), Delay = 10, Direct I/O - Ahora vamos a Settings>Options, Misc, seleccionamos High en process priority y tambien a Enable NT/2000/XP Driver. Ya Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-73282425057370988122007-08-21T11:12:00.000-06:002008-11-06T19:41:55.235-07:00Uso Basico de MPLAB** Uso Básico de MPLABDescarga aqui el MPLAB desde Microship.comMPLAB es un IDE (Integrated Development Enviroment) que esta hecho por Microchip para trabajar exclusivamente con sus microcontroladores PIC. En el podemos escribir programas, editarlos, simularlos, compilarlos, además teniendo el Hardware adecuado podemos Emularlos y deswcargar el programa a el microcontrolador. En lo personal solo Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-427695561099364471.post-17144168815003209342007-08-20T14:39:00.000-06:002007-08-20T15:05:34.311-06:00Detalles de las Caracteristicas IV***CARACTERISTICAS DE LOS PERIFERICOS-- Timer 0; -Registros TMR0, INTCON, OPT_REGISTER-Timer Counter de 8-bit, tiene Prescaler programable de 8 bit, Es Leible y escribible, Seleccion de reloj interno o externo, interrupcion en desbordamiento (overflow), seleccion de flancos (subida o de bajada)-- Timer 1; -Registros INTCON, PIR1, PIE1, TMR1LTMR1H, T1CON -Timer Counter de 16-bit, puede ser Unknownnoreply@blogger.com0