Vous êtes sur la page 1sur 5

UNIVERSIDAD CATLICA DE SANTA MARA

FACULTAD DE CIENCIAS E INGENIERAS FSICAS Y


FORMALES

PROGRAMA PROFESIONAL DE
INGENIERA
ELECTRNICA

CURSO:
MICROCONTROLADORES

Practica 5
TEMA:
CONFIGURACION DE PUERTOS
CONVERSOR A/D
(CUESTIONARIO PREVIO)

ALUMNOS:

ALIAGA CASTAEDA Emilio


ESCOBEDO ARIAS, Kristhian

AREQUIPA PERU
2011
I. CUESTIONARIO PREVIO
1. Investigue sobre temporizacin de la conversin y mxima
velocidad de conversin.
El tiempo de conversin para cada bit viene definido por el TAD, el
conversor necesita un mnimo de 12 ciclos de reloj (12TAD), para la
conversin de 10-bits. Para generar los pulsos de reloj, deberemos
escoger la mejor de las 3 opciones que nos facilita: 2TOSC, 8TOSC, 32
TOSC.
Tendremos en cuenta que el oscilador interno tiene un TAD tpico de
4Ks, pero podemos hacerlo variar entre 2Ks y 6Ks. Para un optimo
funcionamiento del conversor, nunca deberemos seleccionar un
tiempo menor a 1,6Ks.
Siempre deberemos intentar ajustar el tiempo de reloj, para optimizar
el funcionamiento del conversor.

No todas las aplicaciones requieren un resultado de 10-bits de


resolucin, pero si pueden requerir una conversin A/D ms rpida. El
mdulo A/D permite qu el usuario realice la compensacin de
velocidad de la conversin. Para acelerar o ralentizar la conversin, la
fuente del reloj del mdulo A/D pude variar de tal modo que el TAD
varie.
La fuente de los impulsos de reloj se aplica a un Divisor de Frecuencias
(Prescaler) que los divide por 1, 2, 4 u 8, segn el valor de los bits del
registro T1CON. El reloj externo puede estar sincronizado o no con el
interno, segn el bit T1SYNC de T1CON. El interno siempre es
sncrono.
El tiempo que dura la conversin depende de la frecuencia de
funcionamiento del PIC y del valor de los bits ADCS1 y ADCS0. Por
ejemplo, si el PIC trabaja a 20 MHz y los bits ADCS1:ADCS0 =00, el
tiempo de conversin Tad = 100 ns; si el valor de los bits es 0:1, Tad
= 400 ns; si valen 1:0, Tad =1,6 ns y si ADCS1:ADCS0 =11, Tad = 4
s.

2. Explique que realiza el siguiente programa, realice


comentario en cada lnea del programa

LIST P=16F877;tipo de uC
include<p16f877.inc>;
RDELAY EQU 0x21;variables en direcciones 21h,22h,23h,24h
CONTA0 EQU 0x22
CONTA1 EQU 0x23
CONTA2 EQU 0x24
W EQU 0 ;Registro W
F EQU 1 ;Registro de trabajo
;ADRESL EQU 0x9E
;*****************************************************************
bsf STATUS,RP0;ir al banco 1
movlw b'00011111';movemos el dato 00011111 a W
movwf PORTA; movemos W a puerto A, NO se puede porque PORTA esta en el banco 0
clrf ADCON0; limpiar registro ADCON0,NO se puede por que ADCON0 esta en el banco 0
clrf PORTB; limpia el puerto B, NO se puede porque PORTB esta en el banco 0.
clrf PORTD; limpia el puerto D, NO se puede porque PORTD esta en el banco 0.
bcf STATUS,RP0; se selecciona el banco 0
bsf ADCON0,0; se coloca 1 en el bit 0 del registro ADCON0
convertir call espera20u;subrutina convertir, contiene una llamada a la subrutina espera 20u
bsf ADCON0,2; ponemos en 1 logico el bit 2 de ADCON0
espera btfsc ADCON0,2 ;subrutina espera, examina si el bit 2 de ADCON0, si es 0 salta.
goto espera; sino, retorna a espera
movf ADRESH,0; el registro ADRESH se mueve a W
movwf PORTB; W se mueve a PORTB
bsf STATUS,RP0;ir al banco1
movf ADRESH,0; mover ADRESH a W, NO se puede por que esta en el banco 0
bcf STATUS,RP0;irl banco 0
movwf PORTD; mover W a PORTD
goto convertir; ir a la subrutina convertir
espera20u movlw 0x05; subrutina espera20u, mueve 0x05 al registro W
movwf CONTA0;mueve el contenido de W al registro CONTA0
ret1 decfsz CONTA0,1;subrutina ret1, decrementa en 1 CONTA0 y el resultado se coloca en el mismo registr
;si es cero salta.
goto ret1; si no , vuelve a ret1
return; retorna a la lnea despus del llamado a espera 20u
end;fin de programa

El programa, est en el banco 1,luego asigna valores a registros que no


estn en el banco, luego va al banco 0, se coloca en 1 logico el bit 0 del
registro ADCON 0, se hace un llamado a la subrutina espera 20u, donde se
mueve el valor 5 en hexadecimal a W y luego cargado en registro Conta 0,
luego en la subrutina ret1, se decrementa el valor de Conta 1 en 1, y se
evala si es cero, si no lo es, sigue el decremento, hasta que sea cero y se
vuelve al programa principal, donde luego se pone a 1 el bit 2 de ADCON 0;
luego en la subrutina espera, se evala si dicho bit es cero. A pesar de que
se ha colocado un 1 a este bit, regresa automticamente a cero, entonces
se salta de instruccin. Luego hay instrucciones sin accin alguna, debido a
que se estamos en un banco que no corresponde, como mover el
contendido de ADDRESH al Puerto B, moverse al banco 1 y mover el
contenido de W a ADDRESH.

Vous aimerez peut-être aussi