M1 ?anG1 &anG select
)it 6
)it =
)it 4 D %>
)it 2 D P;
)it , Q
)it 1 ;C
)it 0 C
#i*ni>icado 5IT
#i*ni>icado
C Carry
carreo en las operaciones) se produce al des&ordar la operación.
;C ;igit carry
cti/o cuando *ay acarreo en el 4 &it de menor peso
Q Qero
Es 1 cuando el resultado de una operación es >
D P; Po5er do5n
> si est' en sleep) 1 cuando se acti/a clr5dt
D %> %imer out
2in de temporización
Jo usado
I
Jo usado
"l $roc%o $ara con>i*&rar lo% $&rto% % l %i*&int 1. l arrancar el micro controlador el &anco por defecto es ?JA> @. ccedemos al &anco1 ?JA1 poniendo a 1 el &it del registro !%%(! >*$ . Cargar en % salidas 1 entradas$ 4. Cargar en % salidas 1 entradas$ . cceder al &anco > ?JA> poniendo a > el &it del registro !%%(! 6.
#"CU"NCIA PARA CONFIGURACIÓN D" LO# PU"RTO# 1 Poner el &it del registro !%%(! a 1 para acceder al &anco1
)%> 0E02?= K&it set file >> !tatus$ &it M 1
@ Configuración de %
(o;l< )H11111111H K1Mentradas >Msalidas$ (o;<> 0E0= K>>M % salidas (o;l< )H00000000H K1Mentradas >Msalidas$ (o;<> 0E06 K % el &it del registro !%%(! para /ol/er al &anco >
)c> 0E02?= K ?it clear file Ponemos a > para acceder al &anco >$ 4 Iniciciamos el programa
""MPLO 10 RaliKar &n $ro*ra(a & la intrr&$tor% n l $ort A ' %a& l ;alor $or lo% ld% n $ort 5 (tilizaremos el siguiente esquema:
%enemos 4 entradas en <> <1 <@ y < y 8 salidas K,,, configuramos puertos ,,,,,,,,,,,,,,,,,,
&sf *=>=) KPonemos a 1 el &it de !%%(! >*$ 3B97 &=11111111= Kcargamos en 5 =11111111= mo/5f *=>= KConfiguramos %*$ como entradas mo/l5 &=>>>>>>>>= KCargamos > en 5 mo/5f *=>6= KConfiguramos %60$ como salidas &cf *=>=) KPonemos a > el &it de !%%(! y pasamos a &anG> K,,,,, IJICIB ;E P
Podemos /er el estado del microcontrolador
%am&ien el estado de los dispositi/os de entrada Interruptores$ y los E;! de salida
9amos a /er el mismo programa utilizando /aria&les K ,,,,, E;! E IJ%E<<(P%B
IJICIB 3B92 PB<%)> 3B972 PB<%? FB%B IJICIB EJ; K E .1 Poner comentarios al programa anterior.
""MPLO 11 RaliKar &n $ro*ra(a $ara lr ntrada% ' o)tnr la% %alida% co($l(ntada% (tilizaremos el mismo esquema de 4 entradas y 8 salidas.
: ----------------------------------: -- Pro*ra(a $ara lr ntrada% : -- ' o)tnr %alida% co($l(ntada% : -----------------------------------li%t $716>84 %tat&% & JH02H $orta & JH0=H $ort) & JH06H or* 0 : -- con>i*&ra(o% $orta ' $ort) ----)%> %tat&%?= :accd(o% )anco 1 (o;l< )H11111111H :ntrada% (o;<> $orta :al $&rto A (o;l< )H00000000H :%alida% (o;<> $ort) :al $&rto 5 )c> %tat&%?= :accd(o% al )anco 0 : -- $ro*ra(a $rinci$al ------------inicio co(> $orta?0 :l(o% $ortA ' co($l(nta(o% (o;<> $ort) :$a%a(o% lo% dato% a la %alida *oto inicio :)&cl nd Juestro programa simulado mediante misim
""MPLO 1, Di%ar &n %ncillo (didor d ni;l (tilizaremos el siguiente esquema
En <1 L <> tenemos @ sondas de detección de ni/el de agua y en
E/identemente este programa es de por s poco Htil) pero nos permite practicar con la programación de los puertos.
Juestro programa simulado en misim E .@ 3odificar el programa para tener 4 ni/eles en el depósito. E . ;ise-ar y realizar un programa con 8 entradas y 4 salidas. El programa sólo utilizar' las 4 primeras entradas. El programa leer' las entradas y sacar' las salidas complementadas
Esquema para realizar el proyecto. E .4 (tilizando 8 entradas) realizar una puerta J; de 4 &its utiliza ,
6 #ALTO# "N FUNCIÓN D" 5IT# D" R"GI#TRO# IN#TRUCCIÓN ""MPLO# )t>%c >?)
)t>%c r*i%tro?1
NOTA# )it t%t >il %i$ clar #i l )it ) dl r*i%tro % 1 la in%tr&cci.n %i*&int % /c&ta nor(al(nt? %i )70 la in%tr&cci.n %i*&int % i*nora ' % %alta )it t%t >il %i$ %t #i l )it ) dl r*i%tro % 0 la %i*&int in%tr&cci.n % /c&ta nor(al(nt? %i )71la %i*&int in%tr&cci.n % %alta
)t>%% >?)
)t>%% >?)
dc>%K >?d
dc>%K dcr(nt >? %i$ i> 0 Dcr(nta l contador?1 r*i%tro %i l r%<ado NO % 0 la in%tr&cci.n %i*&int % /c&ta nor(al(nt? %i l r%<ado % cro la in%tr&cci.n %i*&int % i*nora ' %
%alta
inc>%K >?d
incr(nt >il %i$ i> 0 Incr(nta l contnido dl r*i%tro? %i l r%<ado NO % 0 la %i*&int in%tr&cci.n % inc>%K /c&ta nor(al(nt? $ro %i % 0 $or contador?0 d%)orda(into d 11111111B la in%tr&cci.n %i*&int % i*nora ' % %alta
!on funciones para tomar decisiones dependiendo del /alor del &it o del registro) se utilizan para contarDdescontar registros o para determinar si se *a producido un e/ento.
""MPLO 12 Pro*ra(a contador Ja%ta ,== ' l&*o ;&l; a 0"l r%<ado % ;i%&aliKa con ld% c&ando ll*a a ,==
Juestro programa en el sinulador E 6.1
T"MPORISACIÓN "N "L PIC 16F84 Cuando se necesita un control del tiempo en el microcontrolador) se utiliza el timer %3<>) que puede configurarse como CBJ%;B< y como %E3PB
El timer %3<> es un contador que determina el tiempo que tarda en des&ordarse el contadordependiendo del /alor precargado. !u funcionamiento es:
El contador el PIC es de 8 &its que /a desde &=>>>>>>>>= *asta &=11111111=) cuando se produce el des&ordamiento /uel/e al /alor inicial &=>>>>>>>>=. os impulsos de entrada del contador pueden ser eternos mediante el pin <4D%BCA1 o &ien de una se-al del relo interno) de forma que puede funcionar de dos formas distintas: 1, Como contador de impulsos que entran por <4D%BCA1 @,Como temporizador de tiempos. Para configurar la forma de actuación *ay que acceder al registro BP%IBJ y actuar so&re el &it %BC! !i %BC!M1 el timer actua como contador. !i %BC!M> el timer actua como temporizador.
TMRO COMO CONTADOR !e introducen los impulsos a contar por el pin <4D%BCA1 !e programa el &it %B!E del registro BP%IBJT
Circuito utilizado para la entrada de un contador. Cuando se des&orda el contador pasa de =11111111= a =>>>>>>>>= y se acti/a el &it %BI2 del registro IJ%CBJ
TMRO COMO T"MPORISADOR l tra&aar como temporizador se cuentan los impulsosde la frecuencia de oscilación o frecuencia de tra&ao) teniendo en cuenta que un ciclo de m'quina ocupa 4 ciclos del cristal oscilador. s tendremos que la frecuencia de conteo ser' 2cM2recuencia oscilaciónD4 Para nuestro caso) que el relo es de 43*) tendremos 2cM43*zD4 M 1 microsegundo Como 1 us es un periodo de tiempo muy peque-o) el microcontrolador tiene la posi&ilidad de utilizar un di/isor de frecuencia llamado prescaler) el prescaler se configura con los &its P!@)P!1)P!> del registro
5IT# D" CONFIGURACIÓN L"CTURA D"L T"MPORISADOR TMR0 os &its de lectura y configuración son los siguientes:
Dircci.n R*i%tro
5it
5it 6
5it = 5it 4 5it 2 5it , 5it 1
5it 0
>1* &anG> %3
#
#
#
#
#
#
#
#
>&* &anG> IJ%CBJ
#
#
#
#
#
%BI2 #
#
>1* &anG 1 BP%IBJT< # EF
#
%BC! %B!E P! P!@
P!1 P!>
;i/isor del Prescaler %3
>>>
1:@
>>1
1:4
>1>
1:8
>11
1:16
1>>
1:@
1>1
1:64
11>
1:1@8
111
1:@6
""MPLO# D"L TMRO COMO CONTADOR Para programar un contador con el pic necesitamos: 1, Pasar al &anco 1 ?!2 !%%(!) @, Programar los &its 4 %B!E y el &it %BC! del registro
""MPLO 14 UTILISAR "L CIRCUITO D" CONTADOR PARA CONTAR IMPUL#O# I#UALISARLO# "N L"D# D" #ALIDA K ,,,,,,,,,,,,,,,,,,,,,,,,, K ,, programa contador ,,,, K ,, /isualizar por leds ,, K ,, la cuenta en PB<%? ,,, K ,,,,,,,,,,,,,,,,,,,,,,,,, I!% pM16f84 %31= K
3B97 &=>>111>>>= KConfiguramos %3>>>>>>>= Kconfiguramos como salida 3B972 PB<%? Kel puerto ? ?C2 !%%(!) KPasamos al &anco > C<2 %3 K,, Programa principal ,,, inicio 3B92 %3 KCargamos el contador en 5 3B972 PB<%? KPasamos el /alor cuenta al PB<%? FB%B inicio K?ucle EJ; K2inal de programa
""MPLO# D"L TMRO COMO T"MPORISADOR Para programar el temporizador necesitamos calcular el tiempo de temporización) aplicaremos la siguiente fórmula: %iempo M 4 O %iempo 2recuencia oscilador O Prescaler O @6,Carga en el temporizador$ %iempo frecuencia oscilador Para 4 3*z$ M 1 u segundo Prescaler desde 1D@ *asta 1D@6 Para programar un temporizador con el pic necesitamos: 1, Pasar al &anco 1 ?!2 !%%(!) @, Programar los &its 4 %B!E) el &it %BC! y los &its )@)1)> del registro
K ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, K ,, Programa de temporización del parpadeo de un led K ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, list pM16f84 port& equ *=>6= timer equ *=>1= estatus equ *=>= org > K ,,,,,,,,, iniciamos puertos y temporizador ,, &sf estatus) K Pasamos al &anco 1 mo/l5 &=11>1>1>1= K Cargamos el /alor en el mo/5f timer K