SlideShare uma empresa Scribd logo
1 de 8
Practica de Laboratorio # 8<br />EEPROM de Datos y TMR0 Contador y Temporizador<br />Pardo. Daniel Andrés, Delgado. Juan Carlos, Caro. Jevis Yamid, estudiantes de ingeniería electrónica<br />Abstract—This guide presents the develop of the laboratory number 8, in where we are going to study about the main aspects of EEPROM memory, the applications of the TIMER0, like counter, prescaler and frequencimeter. The students we will learn more about the EEPROM.<br />Index Terms— EEPROM. PRESCALER, TIMER0, Option register, counter. <br />INTRODUCCIÓN<br />E<br />N algunos proyectos es necesario guardar la información que se genera durante el proceso de una forma permanente, es decir, esos datos han de permanecer incluso cuando el sistema se desconecta de la alimentación. Para realizar esta función los microcontroladores PIC disponen de un área de datos EEPROM no volátil que se describe en la primera parte de esta guía.<br />En la segunda parte se enfoca hacia los sistemas digitales que necesitan un estricto control de tiempos que duran sus distintas acciones. En todos los programas diseñados hasta ahora esto se ha realizado mediante una subrutina de retardo. Otro procedimiento más eficaz y preciso consiste en la utilización de un Timer.<br />Memoria EEPROM de datos<br />El PIC16F877A dispone de una zona de 256 bytes de memoria EEPROM para almacenar datos que no se pierden al desconectar la alimentación. Esto es muy útil ya que permite guardar datos permanentemente. Como cualquier otra memoria EEPROM se pueden realizar dos tipos de operaciones: <br />Operación de lectura.<br />Operación de escritura o grabación.<br />Un ciclo de grabación en una posición EEPROM de datos dura unos 10 ms, un tiempo muy elevado para la velocidad del procesador, que se controla mediante un temporizador interno. Al escribir en una posición de memoria ya ocupada automáticamente se borra el contenido que había y se introduce el nuevo dato, por lo que no hay comando de borrado.<br />El Timer 0 (TMR0)<br />Un timer se implementa por medio de un contador que determina un tiempo preciso entre el momento en que el valor es cargado y el instante en el que se produce su desbordamiento. Un timer típico se describe de forma simplificada en fig.1. Consiste en un contador ascendente (también podría ser descendente) que, una vez inicializado con un valor, su contenido se incrementa con cada impulso de entrada hasta llegar a su valor máximo b’11111111’, desbordando y volviendo a comenzar desde cero.<br />Fig.1. Esquema simplificado de un timer<br />El PIC16F877A dispone de 3 Timer dentro de los cuales uno de los principales es denominado Timer 0 o TMR0 se inicializa con un valor, que se incrementa con cada impulso de entrada hasta su valor máximo b’11111111’; con el siguiente impulso de entrada el contador se desborda pasando a valer b’00000000’, circunstancia que se advierte mediante la activación del flag de fin de contaje T0IF localizado en el registro INTCON.<br />Los impulsos aplicados al TMR0 pueden provenir de los pulsos aplicados al pin T0CKI o de la señal de reloj interna (Fosc/4), lo que le permite actuar de dos formas diferentes Fig.2. <br />Como contador de los impulsos que le llegan por el pin RA4/T0CKI<br />Como Temporizador de Tiempos.<br />El actuar de una u otra forma depende del bit T0CS del registro OPTION:<br />Si T0CS = 1, el TMR0 actúa como contador.<br />Si T0CS = 0, el TMR0 actúa como temporizador.<br />El Timer 0 como Contador<br />Cuando el TMR0 trabaja como contador se le introducen los impulsos desde el exterior por el pin RA4/T0CKI (TMR0 External Clock Input). Su misión es “contar” el número de acontecimientos externos representados por impulsos que se aplican al pin T0CKI. <br />El tipo de flanco activo se elige mediante el bit T0SE del registro OPTION:<br />Si T0SE = 1, el flanco activo es descendente.<br />Si T0SE = 0, el flanco activo es ascendente.<br />El Timer 0 como Temporizador<br />Cuando el TMR0 trabaja como temporizador cuenta los impulsos de Fosc/4. Se usa para determinar intervalos de tiempo concretos. Estos impulsos tienen una duración conocida de un ciclo de máquina que es cuatro veces el periodo de la señal de reloj. Para una frecuencia de reloj igual a 4 MHz el TMR0 se incrementa cada 1us, tal como se calculó en la tematica de subrutinas de retardos.<br />Como se trata de un contador ascendente el TMR0 debe ser cargado con el valor de los impulsos que se desean contar restados de 256 que es el valor de desbordamiento. Por ejemplo, para contar cuatro impulsos, se carga al TMR0 con 256-4=252:<br />Numero de pulsos a contar: 410=b’00000100’<br />Número a cargar: 25610-410=25210=b’11111100’<br />Incremento a cada ciclo de instrucción: b’11111100’, b’11111101’, b’11111110’, b’11111111’, aquí se desborda pasando a b’00000000’ y activando el flag T0IF.<br />De esta manera, con la llegada de cuatro impulsos, el timer se ha desbordado alcanzando el valor b’00000000’ que determina el tiempo de temporización, en este caso 4us si los impulsos se hubieran aplicado cada microsegundo.<br />El Timer 0 es un registro del SFR<br />El TMR0 es un registro de propósito especial ubicado en la posición 1 del área SFR de la RAM de datos. Puede ser leído y escrito al estar conectado directamente al bus de datos.<br />La Fig.2. Ofrece el esquema de funcionamiento del TMR0. Se puede leer en cualquier momento para conocer el estado de la cuenta. Cuando se escribe un nuevo valor sobre TMR0 para comenzar una nueva temporización, el siguiente incremento del mismo se retrasa durante los dos ciclos de reloj posteriores.<br />Fig.2. Esquema de funcionamiento del timer principal TMR0.<br />Divisor de frecuencia (Prescaler)<br />A veces es necesario controlar tiempos largos y aumentar la duración de los impulsos que incrementa el TMR0. Para cubrir esta necesidad se dispone de un circuito programable llamado Divisor de Frecuencia o Prescaler que divide la frecuencia utilizada por diversos rangos para poder conseguir temporizaciones más largas.<br />En realidad el PIC16F877 dispone de cuatro temporizadores:<br />El TMR0, que actuá como temporizador principal.<br />El TMR1, que actuá como temporizador secundario.<br />El TMR2, que actuá como temporizador secundario.<br />El Watchdog (perro guardián), que vigila que el programa no se “cuelgue”. Para ello, cada cierto tiempo comprueba que el programa está ejecutándose normalmente y, si no es así, reinicializa todo el sistema. El Watchdog se analizará más adelante.<br />El Prescaler puede aplicarse a uno de los dos temporizadores, al TMR0 o al Watchdog. Cuando se asigna al TMR0 los impulsos pasan por el divisor e frecuencia y una vez aumentada su duración se aplican a TMR0.<br />modo de Evaluación<br />Además de lo pedido en cada uno de los puntos el docente realizara 3 preguntas una por cada integrante en el grupo de laboratorio la respuesta es individual la ayuda de otro compañero de grupo anulara el punto dejando una nota de cero para esa pregunta. El porcentaje de evaluación es 60% preguntas y 40% practica.<br /> <br />Practica de laboratorio<br />Programa EEPROM1<br />Teniendo en cuenta lo siguiente:<br />Documentación Libro Guía.<br />Documentación Datasheet PIC16F877A<br />Libro avanzado microcontroladores PIC del autor José maría Angulo (Biblioteca Universidad Santo Tomas)<br />Documente cada una de las líneas del programa EEPROM1 (Indique que hace cada valor dentro de los registros de la EEPROM) y realice el diagrama de flujo correspondiente. ¿Qué hace el programa? <br />RTA:<br />A continuación se presenta el programa:<br />LIST    P=PIC16F877A<br />INCLUDE<P16F877A.INC><br /> __CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF <br />CBLOCK0X20<br />REG1<br />REG2<br />ENDC<br />reset   org 0<br />Inicio<br />   <br />   bsf STATUS,RP0                   <br />   bcf STATUS,RP1<br />   movlw b'00000000'               <br />   movwf TRISE<br />   movlw b'00000000'               <br />   movwf TRISA<br />   movlw b'00000111'               <br />   movwf ADCON1<br />   movlw b'00000000'               <br />   movwf TRISB<br />   movlw b'00000000'                <br />   movwf TRISC<br />   movlw b'00000000'            <br />   movwf TRISD<br />   bcf STATUS,RP0 ;accedemos al banco 2           <br />   bsf STATUS,RP1<br />   CLRFPORTC<br />   CLRFPORTD<br />   CLRFPORTA<br />   CLRFPORTE<br />   CLRFPORTB<br />   <br />Principal<br />   callLCD_Inicializa     <br />   movlw d'00'<br />   movwf EEADR<br />   movlw b'10101010'<br />   movwf EEDATA<br />   call grabar_eeprom<br />   call inhabilitar_interrupcion <br />   movlw d'00'                      <br />   bsf STATUS,RP1                  <br />   movwf EEADR<br />   bsf STATUS,RP0                  <br />   bcf EECON1,EEPGD<br />   bsf EECON1,R<br />movf EEDATA,W<br />   bcf STATUS,RP0                  <br />   bcf STATUS,RP1                  <br />   movwf REG1<br />   call habilitar_interrupcion<br /> <br />  ; IMPRIMIMOS EL DATO EN EL PUERTO B<br />   movf REG1,w<br />   callLCD_ByteCompleto<br />   callRetardo_1s<br />   callRetardo_1s<br />   goto Principal<br />;------------------------------------------------------------<br />;                  Declaración de Subrutinas<br />;------------------------------------------------------------<br />grabar_eeprom;escribimos el dato en la eeprom<br />   <br />   bcf STATUS,RP0                 <br />   bcf STATUS,RP1<br />   movf INTCON,W<br />   movwf REG2<br />   bsf STATUS,RP0                    <br />   bsf STATUS,RP1<br />   bcf EECON1,EEPGD<br />   bsf EECON1,WREN<br />   movlw 0x55<br />   movwf EECON2<br />   movlw 0xaa<br />   movwf EECON2<br />   bsf EECON1,WR <br />   <br />esperar_fin_escritura<br />   btfsc EECON1,WR<br />   goto esperar_fin_escritura <br />   bcf EECON1,EEIF<br />   bcf EECON1,WREN<br />   bcf STATUS,RP0          <br />   bcf STATUS,RP1<br />   movf REG2,W<br />   movwf INTCON<br />   return<br />inhabilitar_interrupcion<br /> <br />   bcf STATUS,RP0                    <br />   bcf STATUS,RP1<br />   movf INTCON,W<br />   movwf REG2<br />   bcf INTCON,GIE<br />   return<br />habilitar_interrupcion<br />   <br />   bcf STATUS,RP0                  <br />   bcf STATUS,RP1;accedemos al banco 0<br />   movf REG2,W<br />   movwf INTCON<br />   return<br />INCLUDE<LCD_4BIT.INC><br />INCLUDE<RETARDOS.INC><br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION:<br />El programa se caracteriza por que evalúa si el timer0 se ha desbordado o no, dependiendo del resultado este es guardado en un registro denominado REG2, este tiene la labor de tener dicho valor cuando se esta grabando  en la EEPROM, luego el programa inicia un proceso de lectura en donde se pasa el valor grabado en la EEPROM y luego se pasa a otro registro denominado REG1; finalmente en la pantalla de la LCD se imprime el valor guardado en REG1.<br />Es necesario aclarar que en el proceso  se habilitaron y deshabilitaron las interrupciones, se creo un ciclo para esperar si ya finalizo el proceso de escritura y demás. Pero se obviaron, en el anterior proceso de descripción del comportamiento en general del programa.<br />DIAGRAMA DE FLUJO<br />Bloque de inicio<br />INICIOCBLOCK (0X20)REG1 Y REG2ACCEDEMOS BANCO 1TRISA=TRISB=TRISC=TRISD=TRISE=0X00ADCON=0X07 (estableceremos los pines del AN0 al AN7 como I/O Digitales)CONFIGURACION DEL PIC17F877AACCEDEMOS BANCO 2Nos aseguramos de que todos los puertos estén como salidas (CLRF PORT A…PORTE)<br />Programa Principal<br />Inicializamos la LCDEstablecemos la posición(0X00) y los bits que se van a escribir(101010110)ESCRITURA EN LA EEPROMDESHABILITAR INTERRUPCIONESNos posicionamos en la posición 0ACCEDEMOS BANCO 3Accedemos a la memoria de datos de la EEPROM e iniciamos el proceso de lecturaACCEDEMOS BANCO 2PRINCIPALREG1=EEDATAHABILITAR INTERRUPCIONESW=REG1Imprimimos en la pantalla de la LCD el valor asignado a W.Colocamos un retardo de 2 segundosPRINCIPALL1<br />Subrutina para escribir en la EEPROM<br />ESCRITURA EN LA EEPROMACCEDEMOS BANCO 0REG2=INTCONACCEDEMOS BANCO 3Accedemos a la memoria de datos y habilitamos la escritura en la EEPROMPara escribir en la EEPROM, el fabricante afirma que es necesario que:EECON2=0X55EECON2=0XAABSF   EECON1,WRAl colocar en 1 el bit WR del registro EECON1, podemos iniciar el proceso de escrituraCICLO FIN ESCRITURAEECON1=1?la escritura no se ha completado, se deshabilita la escritura en la EEPROMsinoCICLO FIN ESCRITURACICLO FIN ESCRITURAACCEDEMOS BANCO 0INTCON=REG2retornar<br />Subrutinas para habilitar y deshabilitar las interrupciones<br />DESHABILITAR INTERRUPCIONESACCEDEMOS BANCO 0REG2=INTCONSe coloca en 0 el bit GIE del registro INTCON, para deshabilitar las interrupcionesretornarHABILITAR INTERRUPCIONESACCEDEMOS BANCO 0REG2=INTCONretornarSe coloca en 1 el bit GIE del registro INTCON, para habilitar las interrupciones<br />Timer0 como Contador<br />Teniendo en cuenta lo siguiente:<br />Documentación Libro Guía.<br />Documentación Datasheet PIC16F877A<br />Libro avanzado microcontroladores PIC del autor José maría Angulo (Biblioteca Universidad Santo Tomas)<br />¿Qué hace el programa? Realice el montaje en proteus.<br />RTA:<br />A continuación se presenta el programa correspondiente:<br />LIST    P=PIC16F877A<br />INCLUDE<P16F877A.INC><br /> __CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF<br />CBLOCK0X20<br />ENDC<br />org 0<br />   <br />Inicio<br />   <br />   bsf STATUS,RP0                   <br />   bcf STATUS,RP1<br />   movlw b'00000000' <br />   movwf TRISE<br />   movlw b'00000000'               <br />   movwf TRISA<br />   movlw b'00000111'               <br />   movwf ADCON1<br />   movlw b'00000000'                <br />   movwf TRISB<br />   movlw b'00000000'                <br />   movwf TRISC<br />   movlw b'00000000'             <br />   movwf TRISD<br />   bcf STATUS,RP0              <br />   bsf STATUS,RP1<br /> <br />   callLCD_Inicializa<br />   BSFSTATUS,RP0<br />   BCFSTATUS,RP1<br />   MOVLWB'00111000'<br />   MOVWFOPTION_REG<br />   BCFSTATUS,RP0<br />   BCFSTATUS,RP1<br />   CLRFTMR0<br />   <br />Principal<br />CALLLCD_Linea1<br />movfTMR0,W<br />callBIN_a_BCD<br />CALLLCD_Byte<br />GOTOPrincipal<br />INCLUDE <RETARDOS.INC><br />INCLUDE <BIN_BCD.INC><br />INCLUDE <LCD_4BIT.INC> <br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION<br />Este programa se caracteriza por que realiza un conteo de los pulsos aplicados en el pin TOCKI (RA4), el contador va desde el numero 0 hasta el numero 99, pues se esta utilizando la instrucción para imprimir en la LCD “LCD_Byte”, en conjunto con la librería de conversión binario a BCD.<br />Dependiendo de el número de pulsos que se apliquen a dicho pin, aparecerá en la LCD ese mismo número de pulsos. <br />Timer0 como Temporizador <br />Teniendo en cuenta lo siguiente:<br />Documentación Libro Guía.<br />Documentación Datasheet PIC16F877A<br />Libro avanzado microcontroladores PIC del autor José maría Angulo (Biblioteca Universidad Santo Tomas)<br />Documente cada una de las líneas y realice el montaje de la página 231 del libro guía compruebe su funcionamiento ¿Qué hace el programa? <br />RTA:<br />A continuación se presenta el programa correspondiente:<br />INCLUDE<P16F877A.INC><br />__CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF<br />CBLOCK0X20<br />ENDC<br />org 0<br />#DEFINEsalidaPORTB,3 <br />   <br />Inicio<br />   <br />bsf STATUS,RP0                   <br />bcf STATUS,RP1<br />movlw b'00000000' <br />movwf TRISE<br />movlw b'00000000'               <br />movwf TRISA<br />  movlw b'00000111'               <br />  movwf ADCON1<br />  movlw b'00000000'                <br />  movwf TRISB<br />  movlw b'00000000'                <br />  movwf TRISC<br />  movlw b'00000000'             <br />  movwf TRISD<br />  MOVLWb'00000000'<br />  MOVWFOPTION_REG<br />   <br />  BCFSTATUS,RP0<br />  BCFSTATUS,RP1<br />   <br />Principal<br />bsfsalida<br />callTimer0_500us<br />nop<br />nop<br />bcfsalida<br />callTimer0_500us<br />gotoPrincipal<br />TMR0_Carga500us EQUd'256'- d'242'<br />Timer0_500us<br />nop<br />nop<br />movlwTMR0_Carga500us<br />movwfTMR0<br />bcfINTCON,T0IF<br />Timer0_Rebosamiento<br />BtfssINTCON,T0IF<br />gotoTimer0_Rebosamiento<br />return<br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION<br />Este programa se caracteriza por que genera una onda cuadrada en el pin RB3 del puerto B, la cual esta conectada a un transistor que a su vez esta conectado a una bocina, que genera un pitido continúo.<br />El programa se encarga que el pitido se genera cada ves que se genere el pulso pero la principal característica de este programa es la generación de los tiempos alto y bajo de la onda cuadrada.<br />El único problema que posee la estructura del programa es el cálculo de los tiempos de temporización, para este programa.<br />En el programa se especifica un preescaler de 2 asignado al TMR0 y un valor de carga para el TMR0 de 252(valor obtenido experimentalmente), para que a la salida del pin RB3 se produzca tiempos exactos para la onda cuadrada de 1KHz, en donde el tiempo bajo y alto de la señal es de 500 uS cada uno.<br />Tmer0 como Frecuencímetro<br />Analice el programa y realice el montaje según su análisis. ¿Qué hace el programa y como lo realiza? <br />RTA<br />A continuación se presenta el programa correspondiente:<br />LIST    P=PIC16F877A<br />INCLUDE<P16F877A.INC><br /> __CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF<br />CBLOCK0X20<br />Frecuencia<br />ENDC<br />   <br />ORG 0<br />Inicio<br /> callLCD_Inicializa<br />bsfSTATUS,RP0<br />BCFSTATUS,RP1<br />movlwb'01111000'<br />movwfOPTION_REG<br />bcfSTATUS,RP0<br />BCFSTATUS,RP1<br />Principal<br />clrfTMR0<br />callRetardo_1s<br />movfTMR0,W<br />movwfFrecuencia<br />callLCD_Borra<br />movlw.5<br />callLCD_PosicionLinea2<br />movfFrecuencia,W<br />callVisualizaNumero<br />movlwMensajeHz<br />callLCD_Mensaje<br />callRetardo_2s<br />gotoPrincipal<br />; Subrutina quot;
VisualizaNumeroquot;
 <br />CBLOCK<br />GuardaNumero<br />ENDC<br />VisualizaNumero<br />movwfGuardaNumero <br />callBIN_a_BCD <br />movfBCD_Centenas,W <br />btfssSTATUS,Z <br />gotoVisualizaCentenas<br />movfGuardaNumero,W<br />callBIN_a_BCD<br />callLCD_Byte <br />gotoFinVisualizaNumero<br />VisualizaCentenas<br />callLCD_Nibble <br />movfGuardaNumero,W <br />callBIN_a_BCD <br />callLCD_ByteCompleto<br /> <br />FinVisualizaNumero<br />return<br />; Subrutina quot;
Mensajesquot;
 <br />Mensajes<br />addwfPCL,F<br />MensajeHz<br />DT quot;
 Hz   quot;
, 0x00<br />INCLUDE  <RETARDOS.INC><br />INCLUDE  <BIN_BCD.INC><br />INCLUDE  <LCD_4BIT.INC><br />INCLUDE  <LCD_MENS.INC><br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION<br />La característica de este programa es que dependiendo de la frecuencia que tenga la señal dispuesta al pin RA4, ese mismo valor se vera impreso en la pantalla de la LCD.<br />Para lograr esto en el programa se especifica al pin RA4 como flanco ascendente, transición en el pin y que se establezca una interrupción en el borde de levantamiento del mismo. De esta forma se puede determinar el valor de la frecuencia de entrada.<br />La labor del resto del programa se encarga de convertir el valor de entrada de binario a BCD e imprimirlo junto con un mensaje de “Hz” al lado.<br />CONCLUCIONES<br />La EEPROM de datos se utiliza muchas veces para algunos proyectos donde se hace necesario guardar la información, de tal forma que estos datos se almacenan inclusive cuando se desconecta la alimentación<br />Se utilizo cada uno de los registros necesarios para almacenar o grabar y leer datos de la EEPROM, como lo son EEDATA, EEADR, EECON1 y EECON2.<br />Se comprendió la importancia de los bits necesarios para poder leer y escribir en la memoria EEPROM, estos se encuentran en el registro EECON1.<br />Se comprendió cada uno de los pasos que se deben tener en cuenta antes de leer o escribir en la EEPROM, como son las sugerencias del fabricante y el posicionamiento adecuado de memoria a leer.<br />Algunas de las aplicaciones que puede tener el uso de la EEPROM de datos, es para bloquear un circuito para que funcione solo un número determinado de veces.<br />El TIMER0 posee muchas ventajas, pues ahorra la necesidad de programar uno de los pines y hacer el conteo de pulsos que se aplique a dicho pin, solo con unas pocas instrucciones obtenernos un contador ascendente utilizando el TMR0.<br />De la misma manera se puede implementar un temporizador con el uso del TIMER0, dependiendo de si el reloj es de 4MHz, el TIMER0 se incrementara cada 1uS, y podemos crear un  tren de pulsos en donde si escogemos un valor de carga para el TIMER0  de 14, obtendremos 500 uS tanto en el tiempo alto como el bajo, generando una onda cuadrada casi exacta de 1KHz. <br />Para implementar un divisor de frecuencia o prescaler, solo es necesario configurar algunos bits del registro OPTION y uno del registro INTCON para evaluar si se ha producido un desbordamiento en el TIMER0; esta aplicación posee muchas utilidades, pues podemos aplicar una señal variante en el tiempo al pin TOCKI, e imprimir en una pantalla LCD e valor de la frecuencia de esa señal aplicada.<br />El divisor de frecuencia o Prescaler, nos permite controlar tiempos más largos, aumentando la duración de los impulsos aplicados al pin TOCKI, aunque para este microcontrolador tenemos tres temporizadores, el WDT, TOCKI en el pin RA4 y T1CKI en el pin 15 del microcontrolador PIC16F877,<br />Referencias<br />FRIES, Bruce y FRIES, Marty. Audio digital práctico. Ed. Anaya Multimedia. 2005. ISBN 84-415-1892-0<br />RUMSEY, Francis y McCORMICK, Tim. Sonido y grabación. Introducción a las técnicas sonoras. 2004.<br />WATKINSON, John. El arte del audio digital. IORTV, Madrid, 1993.<br />WATKINSON, John. Introducción al audio digital. 2003. ISBN 84-932844-9-1.<br />NOVOA, Leonardo. Audio para dummies. 2008. ISBN 8493284291.<br />http://www.biopsychology.org/tesis_esteve/apendices/dft/tdft.htm<br />http://fing.uncu.edu.ar/catedras/industrial/electronica/archivos/electronica/tema7r.pdf<br />http://www.asifunciona.com/electronica/af_conv_ad/conv_ad_5.htm<br />http://www.asifunciona.com/electronica/af_conv_ad/conv_ad_7.htm<br />
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador
Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador

Mais conteúdo relacionado

Mais procurados

Ejemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionEjemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionLuis Zurita
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Luis Zurita
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesLuis Zurita
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Luis Zurita
 
Examen 4 intensivo micro
Examen 4 intensivo microExamen 4 intensivo micro
Examen 4 intensivo microLuis Zurita
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupcionesLuis Zurita
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2Luis Zurita
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesiDavid Narváez
 
4. interrupciones y temporizadores
4. interrupciones y temporizadores4. interrupciones y temporizadores
4. interrupciones y temporizadoresDavid Narváez
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENLuis Zurita
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosEduardo Henriquez
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...SANTIAGO PABLO ALBERTO
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3Luis Zurita
 
Módulos ccp pic 16f887
Módulos ccp pic 16f887Módulos ccp pic 16f887
Módulos ccp pic 16f887whendygarcia
 

Mais procurados (20)

Micro2 tema 2
Micro2 tema 2Micro2 tema 2
Micro2 tema 2
 
Ejemplos De Timer E Interrupcion
Ejemplos De Timer E InterrupcionEjemplos De Timer E Interrupcion
Ejemplos De Timer E Interrupcion
 
Timer0 PIC16F84A
Timer0 PIC16F84ATimer0 PIC16F84A
Timer0 PIC16F84A
 
Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2Guía de ejercicios resueltos tema 2
Guía de ejercicios resueltos tema 2
 
Guía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupcionesGuía rápida tmr0 e interrupciones
Guía rápida tmr0 e interrupciones
 
Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4Guía de ejercicios resueltos y propuestos tema 4
Guía de ejercicios resueltos y propuestos tema 4
 
Examen 4 intensivo micro
Examen 4 intensivo microExamen 4 intensivo micro
Examen 4 intensivo micro
 
Ejemplo varias interrupciones
Ejemplo varias interrupcionesEjemplo varias interrupciones
Ejemplo varias interrupciones
 
Curso Micro Tema 3 2
Curso Micro Tema 3 2Curso Micro Tema 3 2
Curso Micro Tema 3 2
 
Interrupciones y Temporizadores pucesi
Interrupciones y Temporizadores   pucesiInterrupciones y Temporizadores   pucesi
Interrupciones y Temporizadores pucesi
 
4. interrupciones y temporizadores
4. interrupciones y temporizadores4. interrupciones y temporizadores
4. interrupciones y temporizadores
 
Micro2 tema 3
Micro2 tema 3Micro2 tema 3
Micro2 tema 3
 
TMR0 Y RB0_INT
TMR0 Y RB0_INTTMR0 Y RB0_INT
TMR0 Y RB0_INT
 
In terrupciones pic
In terrupciones picIn terrupciones pic
In terrupciones pic
 
EJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMENEJERCICIO ADICIONAL 1ER EXAMEN
EJERCICIO ADICIONAL 1ER EXAMEN
 
PWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros InvolucradosPWM con PIC16F877A: Modulos y Registros Involucrados
PWM con PIC16F877A: Modulos y Registros Involucrados
 
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
Microcontroladores: Módulos del micro PIC16F877 con temporizadores e interrup...
 
MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3MICROCONTROLADORES II EN C. TEMA 3
MICROCONTROLADORES II EN C. TEMA 3
 
Timer 0 - Pic16F877A
Timer 0 - Pic16F877ATimer 0 - Pic16F877A
Timer 0 - Pic16F877A
 
Módulos ccp pic 16f887
Módulos ccp pic 16f887Módulos ccp pic 16f887
Módulos ccp pic 16f887
 

Destaque

Destaque (7)

eSys01krtt
eSys01krtteSys01krtt
eSys01krtt
 
Https
HttpsHttps
Https
 
Elus grid. Seminar veebidisaineritele. Mekaia, 6 veebruar 2014
Elus grid. Seminar veebidisaineritele. Mekaia, 6 veebruar 2014Elus grid. Seminar veebidisaineritele. Mekaia, 6 veebruar 2014
Elus grid. Seminar veebidisaineritele. Mekaia, 6 veebruar 2014
 
Deutsche mark bmw
Deutsche mark bmwDeutsche mark bmw
Deutsche mark bmw
 
Human content job analysis
Human content job analysisHuman content job analysis
Human content job analysis
 
Bdjobs Training
Bdjobs TrainingBdjobs Training
Bdjobs Training
 
Earth interior
Earth interiorEarth interior
Earth interior
 

Semelhante a Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador

Introducpic2
Introducpic2Introducpic2
Introducpic2conalep
 
Introducpic
IntroducpicIntroducpic
Introducpicconalep
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Hamiltonn Casallas
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Hamiltonn Casallas
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5Luis Zurita
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucionJair BG
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"Diego Rojas Ruiz
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 electro_pic
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricialGabriel Bravo Rojas
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercanteDaniel Remondegui
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del bancoAnibal Ulibarri
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)alascaperu
 

Semelhante a Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador (20)

Introducpic2
Introducpic2Introducpic2
Introducpic2
 
Introducpic
IntroducpicIntroducpic
Introducpic
 
Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06Curso de microcontroladores capitulo 06
Curso de microcontroladores capitulo 06
 
Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05Curso de microcontroladores capitulo 05
Curso de microcontroladores capitulo 05
 
Interrupciones
InterrupcionesInterrupciones
Interrupciones
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Niple diapopsitiva
Niple   diapopsitivaNiple   diapopsitiva
Niple diapopsitiva
 
Clase Timer 1
Clase Timer 1Clase Timer 1
Clase Timer 1
 
Uso del tmr0
Uso del tmr0Uso del tmr0
Uso del tmr0
 
Curso Micro Tema 5
Curso Micro Tema 5Curso Micro Tema 5
Curso Micro Tema 5
 
Examen micros t1_06_solucion
Examen micros t1_06_solucionExamen micros t1_06_solucion
Examen micros t1_06_solucion
 
TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"TIMERS&TEMPORIZADORES EN "C"
TIMERS&TEMPORIZADORES EN "C"
 
Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0 Microcontroladores Registro Timer_0
Microcontroladores Registro Timer_0
 
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
26176947 tutorial-v-escritura-en-lcd-usando-teclado-matricial
 
Temporizador timer0
Temporizador timer0Temporizador timer0
Temporizador timer0
 
Introducción pic 16 f 84 universidad de la marina mercante
Introducción pic 16 f 84   universidad de la marina mercanteIntroducción pic 16 f 84   universidad de la marina mercante
Introducción pic 16 f 84 universidad de la marina mercante
 
Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887Módulo Timer 1 del PIC16F887
Módulo Timer 1 del PIC16F887
 
Práctica #2 parcial #2 registros del banco
Práctica #2 parcial #2  registros del bancoPráctica #2 parcial #2  registros del banco
Práctica #2 parcial #2 registros del banco
 
Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)Tarjeta integradora de aplicaciones (06)
Tarjeta integradora de aplicaciones (06)
 

Último

Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 

Último (20)

Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 

Lab 8 eeprom_de_datos_y_tmr0_contador_y_temporizador

  • 1. Practica de Laboratorio # 8<br />EEPROM de Datos y TMR0 Contador y Temporizador<br />Pardo. Daniel Andrés, Delgado. Juan Carlos, Caro. Jevis Yamid, estudiantes de ingeniería electrónica<br />Abstract—This guide presents the develop of the laboratory number 8, in where we are going to study about the main aspects of EEPROM memory, the applications of the TIMER0, like counter, prescaler and frequencimeter. The students we will learn more about the EEPROM.<br />Index Terms— EEPROM. PRESCALER, TIMER0, Option register, counter. <br />INTRODUCCIÓN<br />E<br />N algunos proyectos es necesario guardar la información que se genera durante el proceso de una forma permanente, es decir, esos datos han de permanecer incluso cuando el sistema se desconecta de la alimentación. Para realizar esta función los microcontroladores PIC disponen de un área de datos EEPROM no volátil que se describe en la primera parte de esta guía.<br />En la segunda parte se enfoca hacia los sistemas digitales que necesitan un estricto control de tiempos que duran sus distintas acciones. En todos los programas diseñados hasta ahora esto se ha realizado mediante una subrutina de retardo. Otro procedimiento más eficaz y preciso consiste en la utilización de un Timer.<br />Memoria EEPROM de datos<br />El PIC16F877A dispone de una zona de 256 bytes de memoria EEPROM para almacenar datos que no se pierden al desconectar la alimentación. Esto es muy útil ya que permite guardar datos permanentemente. Como cualquier otra memoria EEPROM se pueden realizar dos tipos de operaciones: <br />Operación de lectura.<br />Operación de escritura o grabación.<br />Un ciclo de grabación en una posición EEPROM de datos dura unos 10 ms, un tiempo muy elevado para la velocidad del procesador, que se controla mediante un temporizador interno. Al escribir en una posición de memoria ya ocupada automáticamente se borra el contenido que había y se introduce el nuevo dato, por lo que no hay comando de borrado.<br />El Timer 0 (TMR0)<br />Un timer se implementa por medio de un contador que determina un tiempo preciso entre el momento en que el valor es cargado y el instante en el que se produce su desbordamiento. Un timer típico se describe de forma simplificada en fig.1. Consiste en un contador ascendente (también podría ser descendente) que, una vez inicializado con un valor, su contenido se incrementa con cada impulso de entrada hasta llegar a su valor máximo b’11111111’, desbordando y volviendo a comenzar desde cero.<br />Fig.1. Esquema simplificado de un timer<br />El PIC16F877A dispone de 3 Timer dentro de los cuales uno de los principales es denominado Timer 0 o TMR0 se inicializa con un valor, que se incrementa con cada impulso de entrada hasta su valor máximo b’11111111’; con el siguiente impulso de entrada el contador se desborda pasando a valer b’00000000’, circunstancia que se advierte mediante la activación del flag de fin de contaje T0IF localizado en el registro INTCON.<br />Los impulsos aplicados al TMR0 pueden provenir de los pulsos aplicados al pin T0CKI o de la señal de reloj interna (Fosc/4), lo que le permite actuar de dos formas diferentes Fig.2. <br />Como contador de los impulsos que le llegan por el pin RA4/T0CKI<br />Como Temporizador de Tiempos.<br />El actuar de una u otra forma depende del bit T0CS del registro OPTION:<br />Si T0CS = 1, el TMR0 actúa como contador.<br />Si T0CS = 0, el TMR0 actúa como temporizador.<br />El Timer 0 como Contador<br />Cuando el TMR0 trabaja como contador se le introducen los impulsos desde el exterior por el pin RA4/T0CKI (TMR0 External Clock Input). Su misión es “contar” el número de acontecimientos externos representados por impulsos que se aplican al pin T0CKI. <br />El tipo de flanco activo se elige mediante el bit T0SE del registro OPTION:<br />Si T0SE = 1, el flanco activo es descendente.<br />Si T0SE = 0, el flanco activo es ascendente.<br />El Timer 0 como Temporizador<br />Cuando el TMR0 trabaja como temporizador cuenta los impulsos de Fosc/4. Se usa para determinar intervalos de tiempo concretos. Estos impulsos tienen una duración conocida de un ciclo de máquina que es cuatro veces el periodo de la señal de reloj. Para una frecuencia de reloj igual a 4 MHz el TMR0 se incrementa cada 1us, tal como se calculó en la tematica de subrutinas de retardos.<br />Como se trata de un contador ascendente el TMR0 debe ser cargado con el valor de los impulsos que se desean contar restados de 256 que es el valor de desbordamiento. Por ejemplo, para contar cuatro impulsos, se carga al TMR0 con 256-4=252:<br />Numero de pulsos a contar: 410=b’00000100’<br />Número a cargar: 25610-410=25210=b’11111100’<br />Incremento a cada ciclo de instrucción: b’11111100’, b’11111101’, b’11111110’, b’11111111’, aquí se desborda pasando a b’00000000’ y activando el flag T0IF.<br />De esta manera, con la llegada de cuatro impulsos, el timer se ha desbordado alcanzando el valor b’00000000’ que determina el tiempo de temporización, en este caso 4us si los impulsos se hubieran aplicado cada microsegundo.<br />El Timer 0 es un registro del SFR<br />El TMR0 es un registro de propósito especial ubicado en la posición 1 del área SFR de la RAM de datos. Puede ser leído y escrito al estar conectado directamente al bus de datos.<br />La Fig.2. Ofrece el esquema de funcionamiento del TMR0. Se puede leer en cualquier momento para conocer el estado de la cuenta. Cuando se escribe un nuevo valor sobre TMR0 para comenzar una nueva temporización, el siguiente incremento del mismo se retrasa durante los dos ciclos de reloj posteriores.<br />Fig.2. Esquema de funcionamiento del timer principal TMR0.<br />Divisor de frecuencia (Prescaler)<br />A veces es necesario controlar tiempos largos y aumentar la duración de los impulsos que incrementa el TMR0. Para cubrir esta necesidad se dispone de un circuito programable llamado Divisor de Frecuencia o Prescaler que divide la frecuencia utilizada por diversos rangos para poder conseguir temporizaciones más largas.<br />En realidad el PIC16F877 dispone de cuatro temporizadores:<br />El TMR0, que actuá como temporizador principal.<br />El TMR1, que actuá como temporizador secundario.<br />El TMR2, que actuá como temporizador secundario.<br />El Watchdog (perro guardián), que vigila que el programa no se “cuelgue”. Para ello, cada cierto tiempo comprueba que el programa está ejecutándose normalmente y, si no es así, reinicializa todo el sistema. El Watchdog se analizará más adelante.<br />El Prescaler puede aplicarse a uno de los dos temporizadores, al TMR0 o al Watchdog. Cuando se asigna al TMR0 los impulsos pasan por el divisor e frecuencia y una vez aumentada su duración se aplican a TMR0.<br />modo de Evaluación<br />Además de lo pedido en cada uno de los puntos el docente realizara 3 preguntas una por cada integrante en el grupo de laboratorio la respuesta es individual la ayuda de otro compañero de grupo anulara el punto dejando una nota de cero para esa pregunta. El porcentaje de evaluación es 60% preguntas y 40% practica.<br /> <br />Practica de laboratorio<br />Programa EEPROM1<br />Teniendo en cuenta lo siguiente:<br />Documentación Libro Guía.<br />Documentación Datasheet PIC16F877A<br />Libro avanzado microcontroladores PIC del autor José maría Angulo (Biblioteca Universidad Santo Tomas)<br />Documente cada una de las líneas del programa EEPROM1 (Indique que hace cada valor dentro de los registros de la EEPROM) y realice el diagrama de flujo correspondiente. ¿Qué hace el programa? <br />RTA:<br />A continuación se presenta el programa:<br />LIST P=PIC16F877A<br />INCLUDE<P16F877A.INC><br /> __CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF <br />CBLOCK0X20<br />REG1<br />REG2<br />ENDC<br />reset org 0<br />Inicio<br /> <br /> bsf STATUS,RP0 <br /> bcf STATUS,RP1<br /> movlw b'00000000' <br /> movwf TRISE<br /> movlw b'00000000' <br /> movwf TRISA<br /> movlw b'00000111' <br /> movwf ADCON1<br /> movlw b'00000000' <br /> movwf TRISB<br /> movlw b'00000000' <br /> movwf TRISC<br /> movlw b'00000000' <br /> movwf TRISD<br /> bcf STATUS,RP0 ;accedemos al banco 2 <br /> bsf STATUS,RP1<br /> CLRFPORTC<br /> CLRFPORTD<br /> CLRFPORTA<br /> CLRFPORTE<br /> CLRFPORTB<br /> <br />Principal<br /> callLCD_Inicializa <br /> movlw d'00'<br /> movwf EEADR<br /> movlw b'10101010'<br /> movwf EEDATA<br /> call grabar_eeprom<br /> call inhabilitar_interrupcion <br /> movlw d'00' <br /> bsf STATUS,RP1 <br /> movwf EEADR<br /> bsf STATUS,RP0 <br /> bcf EECON1,EEPGD<br /> bsf EECON1,R<br />movf EEDATA,W<br /> bcf STATUS,RP0 <br /> bcf STATUS,RP1 <br /> movwf REG1<br /> call habilitar_interrupcion<br /> <br /> ; IMPRIMIMOS EL DATO EN EL PUERTO B<br /> movf REG1,w<br /> callLCD_ByteCompleto<br /> callRetardo_1s<br /> callRetardo_1s<br /> goto Principal<br />;------------------------------------------------------------<br />; Declaración de Subrutinas<br />;------------------------------------------------------------<br />grabar_eeprom;escribimos el dato en la eeprom<br /> <br /> bcf STATUS,RP0 <br /> bcf STATUS,RP1<br /> movf INTCON,W<br /> movwf REG2<br /> bsf STATUS,RP0 <br /> bsf STATUS,RP1<br /> bcf EECON1,EEPGD<br /> bsf EECON1,WREN<br /> movlw 0x55<br /> movwf EECON2<br /> movlw 0xaa<br /> movwf EECON2<br /> bsf EECON1,WR <br /> <br />esperar_fin_escritura<br /> btfsc EECON1,WR<br /> goto esperar_fin_escritura <br /> bcf EECON1,EEIF<br /> bcf EECON1,WREN<br /> bcf STATUS,RP0 <br /> bcf STATUS,RP1<br /> movf REG2,W<br /> movwf INTCON<br /> return<br />inhabilitar_interrupcion<br /> <br /> bcf STATUS,RP0 <br /> bcf STATUS,RP1<br /> movf INTCON,W<br /> movwf REG2<br /> bcf INTCON,GIE<br /> return<br />habilitar_interrupcion<br /> <br /> bcf STATUS,RP0 <br /> bcf STATUS,RP1;accedemos al banco 0<br /> movf REG2,W<br /> movwf INTCON<br /> return<br />INCLUDE<LCD_4BIT.INC><br />INCLUDE<RETARDOS.INC><br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION:<br />El programa se caracteriza por que evalúa si el timer0 se ha desbordado o no, dependiendo del resultado este es guardado en un registro denominado REG2, este tiene la labor de tener dicho valor cuando se esta grabando en la EEPROM, luego el programa inicia un proceso de lectura en donde se pasa el valor grabado en la EEPROM y luego se pasa a otro registro denominado REG1; finalmente en la pantalla de la LCD se imprime el valor guardado en REG1.<br />Es necesario aclarar que en el proceso se habilitaron y deshabilitaron las interrupciones, se creo un ciclo para esperar si ya finalizo el proceso de escritura y demás. Pero se obviaron, en el anterior proceso de descripción del comportamiento en general del programa.<br />DIAGRAMA DE FLUJO<br />Bloque de inicio<br />INICIOCBLOCK (0X20)REG1 Y REG2ACCEDEMOS BANCO 1TRISA=TRISB=TRISC=TRISD=TRISE=0X00ADCON=0X07 (estableceremos los pines del AN0 al AN7 como I/O Digitales)CONFIGURACION DEL PIC17F877AACCEDEMOS BANCO 2Nos aseguramos de que todos los puertos estén como salidas (CLRF PORT A…PORTE)<br />Programa Principal<br />Inicializamos la LCDEstablecemos la posición(0X00) y los bits que se van a escribir(101010110)ESCRITURA EN LA EEPROMDESHABILITAR INTERRUPCIONESNos posicionamos en la posición 0ACCEDEMOS BANCO 3Accedemos a la memoria de datos de la EEPROM e iniciamos el proceso de lecturaACCEDEMOS BANCO 2PRINCIPALREG1=EEDATAHABILITAR INTERRUPCIONESW=REG1Imprimimos en la pantalla de la LCD el valor asignado a W.Colocamos un retardo de 2 segundosPRINCIPALL1<br />Subrutina para escribir en la EEPROM<br />ESCRITURA EN LA EEPROMACCEDEMOS BANCO 0REG2=INTCONACCEDEMOS BANCO 3Accedemos a la memoria de datos y habilitamos la escritura en la EEPROMPara escribir en la EEPROM, el fabricante afirma que es necesario que:EECON2=0X55EECON2=0XAABSF EECON1,WRAl colocar en 1 el bit WR del registro EECON1, podemos iniciar el proceso de escrituraCICLO FIN ESCRITURAEECON1=1?la escritura no se ha completado, se deshabilita la escritura en la EEPROMsinoCICLO FIN ESCRITURACICLO FIN ESCRITURAACCEDEMOS BANCO 0INTCON=REG2retornar<br />Subrutinas para habilitar y deshabilitar las interrupciones<br />DESHABILITAR INTERRUPCIONESACCEDEMOS BANCO 0REG2=INTCONSe coloca en 0 el bit GIE del registro INTCON, para deshabilitar las interrupcionesretornarHABILITAR INTERRUPCIONESACCEDEMOS BANCO 0REG2=INTCONretornarSe coloca en 1 el bit GIE del registro INTCON, para habilitar las interrupciones<br />Timer0 como Contador<br />Teniendo en cuenta lo siguiente:<br />Documentación Libro Guía.<br />Documentación Datasheet PIC16F877A<br />Libro avanzado microcontroladores PIC del autor José maría Angulo (Biblioteca Universidad Santo Tomas)<br />¿Qué hace el programa? Realice el montaje en proteus.<br />RTA:<br />A continuación se presenta el programa correspondiente:<br />LIST P=PIC16F877A<br />INCLUDE<P16F877A.INC><br /> __CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF<br />CBLOCK0X20<br />ENDC<br />org 0<br /> <br />Inicio<br /> <br /> bsf STATUS,RP0 <br /> bcf STATUS,RP1<br /> movlw b'00000000' <br /> movwf TRISE<br /> movlw b'00000000' <br /> movwf TRISA<br /> movlw b'00000111' <br /> movwf ADCON1<br /> movlw b'00000000' <br /> movwf TRISB<br /> movlw b'00000000' <br /> movwf TRISC<br /> movlw b'00000000' <br /> movwf TRISD<br /> bcf STATUS,RP0 <br /> bsf STATUS,RP1<br /> <br /> callLCD_Inicializa<br /> BSFSTATUS,RP0<br /> BCFSTATUS,RP1<br /> MOVLWB'00111000'<br /> MOVWFOPTION_REG<br /> BCFSTATUS,RP0<br /> BCFSTATUS,RP1<br /> CLRFTMR0<br /> <br />Principal<br />CALLLCD_Linea1<br />movfTMR0,W<br />callBIN_a_BCD<br />CALLLCD_Byte<br />GOTOPrincipal<br />INCLUDE <RETARDOS.INC><br />INCLUDE <BIN_BCD.INC><br />INCLUDE <LCD_4BIT.INC> <br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION<br />Este programa se caracteriza por que realiza un conteo de los pulsos aplicados en el pin TOCKI (RA4), el contador va desde el numero 0 hasta el numero 99, pues se esta utilizando la instrucción para imprimir en la LCD “LCD_Byte”, en conjunto con la librería de conversión binario a BCD.<br />Dependiendo de el número de pulsos que se apliquen a dicho pin, aparecerá en la LCD ese mismo número de pulsos. <br />Timer0 como Temporizador <br />Teniendo en cuenta lo siguiente:<br />Documentación Libro Guía.<br />Documentación Datasheet PIC16F877A<br />Libro avanzado microcontroladores PIC del autor José maría Angulo (Biblioteca Universidad Santo Tomas)<br />Documente cada una de las líneas y realice el montaje de la página 231 del libro guía compruebe su funcionamiento ¿Qué hace el programa? <br />RTA:<br />A continuación se presenta el programa correspondiente:<br />INCLUDE<P16F877A.INC><br />__CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF<br />CBLOCK0X20<br />ENDC<br />org 0<br />#DEFINEsalidaPORTB,3 <br /> <br />Inicio<br /> <br />bsf STATUS,RP0 <br />bcf STATUS,RP1<br />movlw b'00000000' <br />movwf TRISE<br />movlw b'00000000' <br />movwf TRISA<br /> movlw b'00000111' <br /> movwf ADCON1<br /> movlw b'00000000' <br /> movwf TRISB<br /> movlw b'00000000' <br /> movwf TRISC<br /> movlw b'00000000' <br /> movwf TRISD<br /> MOVLWb'00000000'<br /> MOVWFOPTION_REG<br /> <br /> BCFSTATUS,RP0<br /> BCFSTATUS,RP1<br /> <br />Principal<br />bsfsalida<br />callTimer0_500us<br />nop<br />nop<br />bcfsalida<br />callTimer0_500us<br />gotoPrincipal<br />TMR0_Carga500us EQUd'256'- d'242'<br />Timer0_500us<br />nop<br />nop<br />movlwTMR0_Carga500us<br />movwfTMR0<br />bcfINTCON,T0IF<br />Timer0_Rebosamiento<br />BtfssINTCON,T0IF<br />gotoTimer0_Rebosamiento<br />return<br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION<br />Este programa se caracteriza por que genera una onda cuadrada en el pin RB3 del puerto B, la cual esta conectada a un transistor que a su vez esta conectado a una bocina, que genera un pitido continúo.<br />El programa se encarga que el pitido se genera cada ves que se genere el pulso pero la principal característica de este programa es la generación de los tiempos alto y bajo de la onda cuadrada.<br />El único problema que posee la estructura del programa es el cálculo de los tiempos de temporización, para este programa.<br />En el programa se especifica un preescaler de 2 asignado al TMR0 y un valor de carga para el TMR0 de 252(valor obtenido experimentalmente), para que a la salida del pin RB3 se produzca tiempos exactos para la onda cuadrada de 1KHz, en donde el tiempo bajo y alto de la señal es de 500 uS cada uno.<br />Tmer0 como Frecuencímetro<br />Analice el programa y realice el montaje según su análisis. ¿Qué hace el programa y como lo realiza? <br />RTA<br />A continuación se presenta el programa correspondiente:<br />LIST P=PIC16F877A<br />INCLUDE<P16F877A.INC><br /> __CONFIG _XT_OSC & _DEBUG_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _CP_OFF<br />CBLOCK0X20<br />Frecuencia<br />ENDC<br /> <br />ORG 0<br />Inicio<br /> callLCD_Inicializa<br />bsfSTATUS,RP0<br />BCFSTATUS,RP1<br />movlwb'01111000'<br />movwfOPTION_REG<br />bcfSTATUS,RP0<br />BCFSTATUS,RP1<br />Principal<br />clrfTMR0<br />callRetardo_1s<br />movfTMR0,W<br />movwfFrecuencia<br />callLCD_Borra<br />movlw.5<br />callLCD_PosicionLinea2<br />movfFrecuencia,W<br />callVisualizaNumero<br />movlwMensajeHz<br />callLCD_Mensaje<br />callRetardo_2s<br />gotoPrincipal<br />; Subrutina quot; VisualizaNumeroquot; <br />CBLOCK<br />GuardaNumero<br />ENDC<br />VisualizaNumero<br />movwfGuardaNumero <br />callBIN_a_BCD <br />movfBCD_Centenas,W <br />btfssSTATUS,Z <br />gotoVisualizaCentenas<br />movfGuardaNumero,W<br />callBIN_a_BCD<br />callLCD_Byte <br />gotoFinVisualizaNumero<br />VisualizaCentenas<br />callLCD_Nibble <br />movfGuardaNumero,W <br />callBIN_a_BCD <br />callLCD_ByteCompleto<br /> <br />FinVisualizaNumero<br />return<br />; Subrutina quot; Mensajesquot; <br />Mensajes<br />addwfPCL,F<br />MensajeHz<br />DT quot; Hz quot; , 0x00<br />INCLUDE <RETARDOS.INC><br />INCLUDE <BIN_BCD.INC><br />INCLUDE <LCD_4BIT.INC><br />INCLUDE <LCD_MENS.INC><br />END<br />Para ver el programa debidamente comentado, por favor ingresar a la carpeta adjunta con este informe.<br />EXPLICACION<br />La característica de este programa es que dependiendo de la frecuencia que tenga la señal dispuesta al pin RA4, ese mismo valor se vera impreso en la pantalla de la LCD.<br />Para lograr esto en el programa se especifica al pin RA4 como flanco ascendente, transición en el pin y que se establezca una interrupción en el borde de levantamiento del mismo. De esta forma se puede determinar el valor de la frecuencia de entrada.<br />La labor del resto del programa se encarga de convertir el valor de entrada de binario a BCD e imprimirlo junto con un mensaje de “Hz” al lado.<br />CONCLUCIONES<br />La EEPROM de datos se utiliza muchas veces para algunos proyectos donde se hace necesario guardar la información, de tal forma que estos datos se almacenan inclusive cuando se desconecta la alimentación<br />Se utilizo cada uno de los registros necesarios para almacenar o grabar y leer datos de la EEPROM, como lo son EEDATA, EEADR, EECON1 y EECON2.<br />Se comprendió la importancia de los bits necesarios para poder leer y escribir en la memoria EEPROM, estos se encuentran en el registro EECON1.<br />Se comprendió cada uno de los pasos que se deben tener en cuenta antes de leer o escribir en la EEPROM, como son las sugerencias del fabricante y el posicionamiento adecuado de memoria a leer.<br />Algunas de las aplicaciones que puede tener el uso de la EEPROM de datos, es para bloquear un circuito para que funcione solo un número determinado de veces.<br />El TIMER0 posee muchas ventajas, pues ahorra la necesidad de programar uno de los pines y hacer el conteo de pulsos que se aplique a dicho pin, solo con unas pocas instrucciones obtenernos un contador ascendente utilizando el TMR0.<br />De la misma manera se puede implementar un temporizador con el uso del TIMER0, dependiendo de si el reloj es de 4MHz, el TIMER0 se incrementara cada 1uS, y podemos crear un tren de pulsos en donde si escogemos un valor de carga para el TIMER0 de 14, obtendremos 500 uS tanto en el tiempo alto como el bajo, generando una onda cuadrada casi exacta de 1KHz. <br />Para implementar un divisor de frecuencia o prescaler, solo es necesario configurar algunos bits del registro OPTION y uno del registro INTCON para evaluar si se ha producido un desbordamiento en el TIMER0; esta aplicación posee muchas utilidades, pues podemos aplicar una señal variante en el tiempo al pin TOCKI, e imprimir en una pantalla LCD e valor de la frecuencia de esa señal aplicada.<br />El divisor de frecuencia o Prescaler, nos permite controlar tiempos más largos, aumentando la duración de los impulsos aplicados al pin TOCKI, aunque para este microcontrolador tenemos tres temporizadores, el WDT, TOCKI en el pin RA4 y T1CKI en el pin 15 del microcontrolador PIC16F877,<br />Referencias<br />FRIES, Bruce y FRIES, Marty. Audio digital práctico. Ed. Anaya Multimedia. 2005. ISBN 84-415-1892-0<br />RUMSEY, Francis y McCORMICK, Tim. Sonido y grabación. Introducción a las técnicas sonoras. 2004.<br />WATKINSON, John. El arte del audio digital. IORTV, Madrid, 1993.<br />WATKINSON, John. Introducción al audio digital. 2003. ISBN 84-932844-9-1.<br />NOVOA, Leonardo. Audio para dummies. 2008. ISBN 8493284291.<br />http://www.biopsychology.org/tesis_esteve/apendices/dft/tdft.htm<br />http://fing.uncu.edu.ar/catedras/industrial/electronica/archivos/electronica/tema7r.pdf<br />http://www.asifunciona.com/electronica/af_conv_ad/conv_ad_5.htm<br />http://www.asifunciona.com/electronica/af_conv_ad/conv_ad_7.htm<br />