You are on page 1of 14

Universidad Tecnolgica Nacional Departamento de Electrnica

Facultad Regional Buenos Aires Informtica II


GUIA DE TRABAJOS PRACTICOS
Acceso a Registros
Para el caso de las familias de microcontroladores que tengan los registros de sus perifricos mapeados en
memoria, existen dos formas de arbitrar los recursos para acceder a ellos.
1) Declarando una variable que tenga el tamao del registro en su direccin de memoria asociada.
2) Con Punteros
a. Declarando una variable tipo puntero que sea capaz de acceder de forma monoltica al registro.
b. ediante una macro que tenga la direccin del registro casteada debidamente para poder acceder
de forma monoltica al registro.
!anto para "# como para $# deberemos investigar en el compilador que usemos para la tarea cual es la manera de su
implementacin.
Par nuestro caso, en el que utilizaremos el compilador gcc desarrollado para la familia Cortex de %$ bits de la
empresa nxp incorporado en el &D' Code(ed ) tomando como e*emplo un registro ubicado en la direccin
$++,C+++- seria.

Para la opcin 1)
unsigned int registro //attribute//00at00x2000C000L###1
Pero lamentablemente para el gcc desarrollado para estos micros esta opcin no est implementada
Para la opcin 2.a)
unsigned int 2 registro 3 0x2000C000L1
Para la opcin 2.b)
4define registro 0 0 unsigned int2 # 0x2009C000UL #
'n el desarrollo de las diferentes guas de e*ercicios, utilizaremos la opcin $.b. 5a razn es. que la opcin $.a
consume memoria (6 para la variable ) el cdigo assembler generado para su utilizacin es ma)or.
Probablemente, esto 7ltimo provoque risa al lector, )a que seguramente a esta altura conocer8 los recursos del
cortex % 5PC"9:, 0que es el que se utilizar8 en esta gua# en donde abunda memoria (6 ) memoria (;
0flas<#.
!ntonces por"#e n#estra preoc#pacin$
=o todos los microcontroladores que existen en el mercado son de %$ bits ) cuentan con estas capacidades.
'xiste una lnea Cortex con recursos mnimos tanto de perifricos como de memoria, en formatos que van
desde D&P de > patas,
o 6parecen para reemplazar definitivamente a microcontroladores de > ) ": bits
o 5ograron insercin en ambientes de educacin media
's por eso que en &nform8tica && desarrollaremos las <erramientas ) rudimentos indispensables para que el alumno
se desenvuelva con la misma soltura tanto con un microcontrolador de %$ bits que como con uno de > o ": bits.
?in per*uicio de lo dic<o anteriormente, tambin desarrollaremos otras formas de acceder a los registros que si bien
ser8 de uso particular para estas familias nos permitir8.
Con*ugar otras <erramientas del lengua*e 0estructuras, uniones ) campos de bits#
6cercar al alumno a <erramientas utilizadas en las libreras C?&? desarrolladas especialmente para estos
microcontroladores.


Pgina 1 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
REGISTROS DE CONFIGURACION
Registro PINSEL
5os registros P&=?'5 son los que permiten seleccionar la funcin que desarrollar8 cada Pin, tal como se muestra a
continuacin. Dentro del P&=?'5 cada pin se encuentra representado por un par de bits, que de acuerdo a la
combinacin que se adopte dar8 por resultado el dispositivo que estar8 presente sobre el Pin.
Cada uno de los pines tiene al menos asociada $ funciones que se seleccionan con estos registros, cave destacar
que en muc<os casos las funciones se repiten en varios pines, esto es para facilitar al diseador el desarrollo del
circuito impreso.
Registro PINMODE
5os registros P&=;D' controlan el modo de las entradas de todos los puertos del microcontrolador. &nclu)e el uso
de las funciones del resistor de pull@up A pull@doBn ) un nodo especial de funcionamiento de open drain. 5a
resistencia pull@up A pull@doBn se puede seleccionar para cada pin del puerto, independientemente de la funcin que
tenga asociada, con la excepcin de los pines para la interfaz &$C para la interface &$C+ ) los pines asociados con el
C?D.
Registro PINMODE_OD
5os registros P&=;D'/;D controlan los modos open drain sobre los puertos. 'l modo de open drain <ace que el
pin se va)a normalmente a estado ba*o si est8 configurado como salida ) el valor del dato es +. ?i el valor del dato es
", la unidad de salida se apaga, lo que equivale a cambiarla direccin el pin. 'sta combinacin simula una salida de
open drain


Pgina 2 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
5a distribucin de las funciones de de los puertos en P&=?'5 ) P&=;D' tienen la misma ubicacin dentro de ellos.
'sto pude verse en la tabla" en donde tomamos como e*emplo a P&=?'5+ ) P&=;D'+. 'sto nos permitir8 realizar
funciones compactas en el desarrollo los programas.
tabla 1
!n res#men
%ig#ra 1
5a tabla $ nos muestra su ubicacin dentro del mapa de memoria.


Pgina 3 de 14
M
UX
M
UX
&P'(
o#tp#t
inp#t
!)emplo
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
tabla 2
P#ertos de entrada salida de propsito general
!al como en esta ) en otras oportunidades nos resultar8 comple*o encarar la explicacin de estos registros puesto
que los alumnos que ser8n usuarios de estas guas provienen con conocimientos previos dados por formaciones
disciplinares diferentes.
1) 5os que vienen de escuelas no tcnicas ) descubran el tema por primera vez ) no quisiramos que se
queden con la idea de que todos los microcontroladores de plaza tienen estos recursos.
2) 5os que vienen de escuela tcnica ) que seguramente conocen sobre microcontroladores de > bits,
inevitablemente vincularan lo aprendido con sus conocimientos previos, con lo cual estar8n en conflicto
permanente puesto que el mundo de > bits ) el de %$ bits son bastante diferentes.
-agamos sinergia entre ambos grupos ) razonemos en con*unto, imaginemos que nosotros seremos los diseadores
del microcontrolador 5PC"9:, ) por ende quienes decidamos cuales ser8n las prestaciones de las que dotaremos a
sus perifricos ) en particular a las EP&;.
Cno o varios de los registros que resultan infaltables ser8n los que refle*en el estado de sus pines asociados.


Pgina 4 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
Para nuestro caso le daremos el nombre de F&;P&= 0Fast &nput ;utput P&=#, diferenci8ndose con un numero para
seleccionar el puerto. F&;+P&=, F&;"P&=, F&;$P&=, F&;%P&=, F&;GP&=.
Para aquellos que tengan conocimientos sobre la familia de microcontroladores >xH" creer8n que esto es suficiente )
seguramente lo asociaran inmediatamente con los puertos P+, P", P$ ) P%.

!)emplo como salida Cortex.
F&;"P&= 3+xFFFFFFFF1 AA todos las salidas se van a estado alto.
!)emplo como salida *x+1,
P" 3 +xFF1 AA todos las salidas se van a estado alto.
- cmo entrada $
5os que conozcan >xH" seguro )a tienen la respuesta.
unsigned c<ar in1
in 3 P"1 AA en in quedo guardado el estado de todas las entradas
Pero para nuestro microcontrolador no lo <aremos tan directo. !omemos el e*emplo de familias tales como freescale
o los 6I( de 6!'5 en donde se cuenta con registros que indican si el puerto ser8 de entrada o salida.
Dmosle el nombre de F&;D&( 0Fast &nput ;utput D&(ection#, diferenci8ndolo con un numero para la seleccin del
puerto. F&;+D&(, F&;"D&(, F&;$D&(, F&;%D&( ) F&;GD&(
!)emplo para %reescale en donde los p#ertos se identi%ican con letras,
unsigned c<ar in1
J..
DD(D3 +x+f1 AA +. entrada ". salida
P!D 3 +x+H1 AA el pin + ) el $ se fueron a estado alto
J..
in 3 P!D 1
Para el caso de n#estro microcontrolador ser,
unsigned int in1
J..
F&;"D&( 3 +x++++FFFF1 AA +. entrada ". salida
F&;"P&= 3 +x++++HHHH1 AA los pines +,$,G,:,>,"+,"$ ) "G se fueron a estado alto
J..
in 3 F&;"P&=1 AA lectura del estado de las entradas
?i bien, con esto nos podramos dar por satisfec<os, porque no agregar m8s prestaciones. ?eguramente usted sabe,
que a medida que avanza la tecnologa en el desarrollo de microcontroladores, se <ace cada vez m8s comple*a su
programacin en assembler ) m8s <abitual en C, de <ec<o los mismos se disean pensando que ser8n programados
en este lengua*e. 'l C es un lengua*e estructurado en donde al programar intentamos ir siempre por el camino
verdadero, simbolizado <abitualmente con un " ) por contraposicin al falso con +.
PensemosJ.?i con el registro F&;P&=J.
". Kuiero activar una salida con un estado alto, lo <acemos con un " Ierdadero
$. Kuiero activar una salida con un estado ba*o, lo <acemos con un + Falso LLLLL
?iguiendo con lo manifestado anteriormente, lo que sera deseable es que el punto dos sea Ierdadero, puesto que
poner un + es lo que se pretende <acer.
Pues bien, <ag8moslo, creemos un registro que ponga estados altos en los pines ) otro que ponga ba*os.
Dmosle el nombre de F&;?'! 0Fast &nput ;utput ?'!#, al que permita colocar estados altos en los pines ) F&;C5(
0Fast &nput ;utput C5ear(# al que permita colocar estados ba*os en los pines, diferenci8ndolos con un numero
para indicar a que puerto pertenecen. F&;+?'!, F&;"?'!, F&;$?'!, F&;%?'!, F&;G?'! ) F&;+C5(, F&;"C5(,
F&;$C5(, F&;%C5(, F&;GC5(.
M por ultimo <agamos que funcione de la siguiente forma.
F&;n?'! .


Pgina 5 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
Cn " en alguno de sus bits produce un estado alto en su pin asociada Ierdadero LLL
Cn + en alguno de sus bits no produce ning7n efecto en su pin asociado
F&;nC5( .
Cn " en alguno de sus bits produce un estado ba*o en su pin asociada Ierdadero LLL
Cn + en alguno de sus bits no produce ning7n efecto en su pin asociado.
M de este modo <emos logrado actuar siempre por verdadero.
F&;nP&= ) F&;n?'!, F&;nC5( mas no son exclu)entes entre s, de*emos libertad al programador que de que utilice
los que le resulten m8s cmodos para su tarea.
.agamos #n mismo e)emplo con ambas opciones
Poner un estado alto en P+N$$O ) un estado ba*o en P+N$"O
tabla /
(pcin 1 (pcin 2
F&;+P&= 3 F&;+P&= P +x++G+++++1
F&;+P&= 3 F&;+P&= Q +xFFDFFFFF1
F&;+?'! 3 F&;+?'! P +x++G+++++1
F&;+C5( 3 F&;+C5( P +x++$+++++1
?in embargo en ambos casos <ubiera sido m8s cmodo escribir.
tabla 0
(pcin 1 (pcin /
F&;+P&= 3 +x++G+++++1
F&;+P&= 3 +x++++++++1
F&;+?'! 3 +x++G+++++1
F&;+C5( 3 +x++$+++++1
Pero sabemos que si <acemos lo indicado en la tabla G pondremos los valores deseados en los pines requeridos
pero descuidamos los valores del resto de los bits correspondientes a P+
'ntonces como nos dieron libertad para el diseo sigamos incorporando registros. Creemos un registro que oficie de
mascara, es decir si el registro que asociemos al P+ tiene sus bits en + ) se permita que todo lo que <agamos con
F&;P&=,P&;E5( o F&;?'! se refle*e en los pines respectivos, ) si los tiene en " que no se vean afectados.
Dmosle el nombre de F&;6?R 01ast 'nput (utput 2A34#, diferenci8ndolos entre si, tal como venimos <aciendo
con un numero para asociarlo a su puerto. F&;+6?R, F&;"6?R, F&;$6?R, F&;%6?R, F&;G6?R.
'ntonces nuestro e*emplo quedara.
tabla +
(pcin 1 (pcin 2
F&;+6?R 3 +xFFDFFFFF1
F&;+P&= 3 +xSSGSSSSS1 AA S. puede ser cualquier valor
F&;+6?R 3 +xFFDFFFFF1
F&;+P&= 3 +xSS+SSSSS1 AA S. puede ser cualquier valor
F&;+6?R 3 +xFFDFFFFF1
F&;+?'! 3 +xSSGSSSSS1 AA S. puede ser cualquier valor
F&;+6?R 3 +xFFDFFFFF1
F&;+C5( 3 +x++$+++++1 AA S. puede ser cualquier valor
Con los cinco registros desarrollados para cada puerto podemos darnos por satisfec<os ) continuar m8s adelante
agreg8ndoles algunas prestaciones.
5a tabla : muestra el mapa de memoria ) una descripcin simplificada de cada uno de ellos tomada de las <o*as de
datos del 5PC"9:,


Pgina 6 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
5abla 6


Pgina 7 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
5PC 781, 9eclaracin de :ariables ; Registros
'l ob*etivo de pese pretende e*ercitar en este !PC es de cmo seleccionar el dispositivo que
quedara asociado a un pin ) su uso en particular como entradaAsalidas de propsito general.
!)emplo 1.1
Crear un conunto de macro! "ue definan a lo! re#i!tro! PI$SE%&
#define PINSEL ( ( uint32_t * ) 0x4002C000UL )
#define PINSEL0 PINSEL[0] //PINSEL0------>P0[15:0]
#define PINSEL1 PINSEL[1] //PINSEL1------>P0[31:1]
#define PINSEL2 PINSEL[2] //PINSEL2------>P1[15:0]
#define PINSEL3 PINSEL[3] //PINSEL3------>P1[31:1]
#define PINSEL4 PINSEL[4] //PINSEL4------>P2[15:0]
#define PINSEL5 PINSEL[5] //PINSEL5------>P2[31:1] NOT USED
#define PINSEL PINSEL[] //PINSEL------>P3[15:0] NOT USED
#define PINSEL! PINSEL[!] //PINSEL!------>P3[31:1]
#define PINSEL" PINSEL["] //PINSEL"------>P4[15:0] NOT USED
#define PINSEL# PINSEL[#] //PINSEL#------>P4[31:1]
!)emplo 2.1
a) Confi#urar el PI$SE% "ue corre!ponda para "ue P'()*+ "uede confi#urado como GPIO&
// $% &'( )o*'( +% +'to(
b) Confi#urar el PI$SE% "ue corre!ponda para "ue P'()*+ "uede confi#urado como AD'&,&

,----------??-------------------- ----- Cont%ni+o +% PINSEL1
& ,11111111110011111111111111111111 ----- Li./i'.o( PINSEL1[20:21]
,----------00-------------------- ----- Cont%ni+o +% PINSEL1
| ,00000000000100000000000000000000 ----- Co&o0'.o( &' 1un0i2n 1
,----------01-------------------- ----- Cont%ni+o +% PINSEL1 '0tu'&i3'+o


Pgina 8 de 14
PINSEL1 &= 0xFFCFFFFF
PINSEL1 = ( PINSEL1 & 0xFFCFFFFF )| 0x00001000 ;
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
!)emplo /.1
Reali-ar una funcin "ue !ea capa- de confi#urar lo! modo! de P' "ue re!ponda al !i#uiente prototipo&
/**
41n void SePINSEL01 ( !in"# $ !in"# )
4,5i%1 60ti7' %& .o+o +% t5','*o +%& P0
4+%t'i&( Con1i8u5' PINSEL0 9 PINSEL1
4/'5'. [in] /in: N:.%5o +% /in +%& /u%5to
4/'5'. [in] .o+o: ;un0i2n +%& /in +%& /u%5to
45%tu5n <%to5n' 7oi+
*/
void SePINSEL01 ( uint"_t /in= uint"_t .o+o)>
if (/in >? 1)>
/in -?1@
PINSEL1 A? B(0x3 CC (/in * 2))@
PINSEL1 D? (.o+o CC (/in * 2))@
E
e%&e >
PINSEL0 A? B(0x3 CC (/in * 2))@
PINSEL0 D? (.o+o CC (/in * 2))@
E
E
!)ercicio 0.1
Reali-ar una funcin "ue !ea capa- de confi#urar la! cuatro po!i.ilidade! !o.re un pin del %PC/0*1 "ue re!ponda al
!i#uiente prototipo 2 "ue pon#a de manifie!to a todo! lo! re#i!tro! PI$SE%&
/**
41n 7oi+ S%tPINSEL ( uint"_t = uint"_t = uint"_t )
4,5i%1 60ti7' %& .o+o +% t5','*o +% &o( /u%5to(
4+%t'i&( Con1i8u5' %& PINSEL 0o55%(/on+i%nt% '& /u%5to (%&%00ion'+o
4/'5'. [in] /in: N:.%5o +% /u%5to
4/'5'. [in] /in: N:.%5o +% /in +%& /u%5to
4/'5'. [in] .o+o: ;un0i2n +%& /in +%& /u%5to
45%tu5n <%to5n' 7oi+
*/
void SePINSEL (uint"_t /u%5to= uint"_t /in= uint"_t .o+o)>
&'i() (/u%5to)>
(*&e P0:
if (/in >? 1)>
/in -?1@
PINSEL1 A? B(0x11 CC (/in * 2))@
PINSEL1 D? (.o+o CC (/in * 2))@
E
e%&e >
PINSEL0 A? B(0x11 CC (/in * 2))@
PINSEL0 D? (.o+o CC (/in * 2))@
E
+,e*-@
(*&e P1:
E
E


Pgina 9 de 14
Co./%e*, 0000
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
!)ercicio +.1
Reali-ar una funcin "ue !ea capa- confi#urar la! cuatro po!i.ilidade! !o.re un pin %PC/0*1 "ue re!ponda al
!i#uiente prototipo con la menor cantidad de cdi#o "ue pueda&
/**
41n 7oi+ S%tPINSEL ( uint"_t = uint"_t = uint"_t )
4,5i%1 60ti7' %& .o+o +% t5','*o +% &o( /u%5to(
4+%t'i&( Con1i8u5' %& PINSEL 0o55%(/on+i%nt% '& /u%5to (%&%00ion'+o
4/'5'. [in] /in: N:.%5o +% /u%5to
4/'5'. [in] /in: N:.%5o +% /in +%& /u%5to
4/'5'. [in] .o+o: ;un0i2n +%& /in +%& /u%5to
45%tu5n <%to5n' 7oi+
*/
!)emplo 6.1
A partir de la ta.la * crear la! macro! nece!aria! para definir lo! re#i!tro! de lo! GPIO de %PC/0*1
#define FPIG( ( ( uint32_t * ) 0x200#C000UL )
#define ;IG0$I< FPIG([0] //HC 0x200#C000
#define ;IG1$I< FPIG(["] //HC 0x200#C020
#define ;IG2$I< FPIG([1] //HC 0x200#C040
#define ;IG3$I< FPIG([24] //HC 0x200#C00
#define ;IG4$I< FPIG([32] //HC 0x200#C0"0
#define ;IG0I6SJ FPIG([4] //HC 0x200#C010
#define ;IG1I6SJ FPIG([12] //HC 0x200#C030
#define ;IG2I6SJ FPIG([20] //HC 0x200#C050
#define ;IG3I6SJ FPIG([2"] //HC 0x200#C0!0
#define ;IG4I6SJ FPIG([3] //HC 0x200#C0#0
#define ;IG0PIN FPIG([5] //HC 0x200#C014
#define ;IG1PIN FPIG([13] //HC 0x200#C034
#define ;IG2PIN FPIG([21] //HC 0x200#C054
#define ;IG3PIN FPIG([2#] //HC 0x200#C0!4
#define ;IG4PIN FPIG([3!] //HC 0x200#C0#4
#define ;IG0SEK FPIG([] //HC 0x200#C01"
#define ;IG1SEK FPIG([14] //HC 0x200#C03"
#define ;IG2SEK FPIG([22] //HC 0x200#C05"
#define ;IG3SEK FPIG([30] //HC 0x200#C0!"
#define ;IG4SEK FPIG([3"] //HC 0x200#C0#"
#define ;IG0CL< FPIG([!] //HC 0x200#C01C
#define ;IG1CL< FPIG([15] //HC 0x200#C03C
#define ;IG2CL< FPIG([23] //HC 0x200#C05C
#define ;IG3CL< FPIG([31] //HC 0x200#C0!C
#define ;IG4CL< FPIG([3#] //HC 0x200#C0#C


Pgina 10 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
!)emplo <.1
A partir de la ta.la * 32 con la a2uda de la fi#ura )4 intente crear la! macro! nece!aria! para definir lo! re#i!tro! de
lo! GPIO de %PC/0*1 tal como lo reali-o en el eemplo * pero mediante la utili-acin de e!tructura!&
!)ercicio *.1
Crear un conunto de macro! "ue definan a lo! re#i!tro! PI$5ODE&
Crear un conunto de macro! "ue definan a lo! re#i!tro! PI$5ODE6OD&
!)ercicio 9.1
A partir de lo e7pre!ado en la fi#ura / realice toda! la! accione! nece!aria! para confi#urar el
P')) como !alida 2 e!cri.irle un uno a !u pin a!ociado& Realice el eercicio al meno! de do!
forma! diferente!&
!)ercicio 10.1
A partir de lo e7pre!ado en la fi#ura / realice toda! la! accione! nece!aria! para confi#urar el el
P')/ como entrada tipo pull up&
!)ercicio 11.1
A partir de lo e7pre!ado en la fi#ura / realice toda! la! accione! nece!aria! para confi#ura el
P'))8 P')9 2 P')0 como !alida 2 e!cri.irle un uno a !u! pine! a!ociado!&
$OTA: Reali-ar cada una de la! confi#uracione! del conunto de lo! tre! pine! en un !olo pa!o&


Pgina 11 de 14
PU!R5( =A3!
P' '7)''1C'''
P/ '7)''1C')'
P) '7)''1C'9'
P, '7)''1C'*'
P9 '7)''1C';'
%ig#ra 2
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
!)ercicio 12.1
Declare e inicialice un <ector de c=ar en RO5 con lo! cdi#o! de con<er!in a 0 !e#mento! en
orden de ' a 1
!)ercicio 1/.1
Declare e inicialice un <ector de c=ar en RO5 con lo! cdi#o! a!cii "ue <an del ' al 1 2 A a la >
en orden con!ecuti<o&
!)ercicio 10.1
Reali-ar una funcin "ue confi#ure a lo! puerto! del %PC/0*1 como entrada o !alida 2 "ue
re!ponda al !i#uiente prototipo&
/********************************************************************************
41n void SeDI1 (!in"# /!e,o$ !in"# /in$ !in"# di,e((ion)
4,5i%1 E(t',&%0% (i un +%t%5.in'+o PIN +% un +%t%5.in'+o PUE<KG (/5%7i'.%nt%
0on1i8u5'+o 0o.o FPIG) %( %nt5'+' o ('&i+'L
4'ut)o5 : U(t%+
4/'5'. [in] /u%5to: /o5t 0on %& Mu% (% 7' ' t5','*'5
4/'5'. [in] /in: /in ' 0on1i8u5'5 (%nti+o
4/'5'. [in] +i5%00ion: 0 ? %nt5'+' - 1 ? ('&i+'L
45%tu5n 7oi+
*/
void SeDI1(uint"_t /u%5to=uint"_t /in=uint"_t +i5%00ion)@
!)ercicio 1+.1
Reali-ar una funcin "ue e!cri.a un uno o un cero en lo! puerto! del %PC/0*1 "ue fueron
confi#urado! como !alida "ue re!ponda al !i#uiente prototipo&
/********************************************************************************
41n void SePIN (!in"# /!e,o$ !in"# /in$ !in"# e&*do)
4,5i%1 E(t',&%0% un ESK6$G %n un +%t%5.in'+o PIN +% un +%t%5.in'+o PUE<KGL
4'ut)o5: U(t%+
4/'5'. [in] /u%5to: /o5t 0on %& Mu% (% 7' ' t5','*'5
4/'5'. [in] /in: /in ' (%t%'5 %(t'+o
4/'5'. [in] %(t'+o: 7'&o5 ' %(t',&%0%5 %n %& PIN +%& PUE<KG [0-1]L
45%tu5n 7oi+
*/
void SePIN(uint"_t /u%5to=uint"_t /in=uint"_t %(t'+o)@


Pgina 12 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
!)ercicio 16.1
Reali-ar una funcin "ue lea lo! puerto! del %PC/0*1 "ue fueron confi#urado! como entrada!
"ue re!ponda al !i#uiente prototipo&
/********************************************************************************
41n !in"# 2ePIN (!in"# /!e,o$ !in"# /in $ !in"# *(ivid*d)
4,5i%1 $%7u%&7% %& ESK6$G +% un +%t%5.in'+o PIN +% un +%t%5.in'+o PUE<KGL
4'ut)o5: U(t%+
4/'5'. [in] /u%5to: /o5t 0on %& Mu% (% 7' ' t5','*'5
4/'5'. [in] /in: /in ' 0on(u&t'5 %(t'+o
4/'5'. [in] '0ti7i+'+ +%1in% (i %( '0ti7o ,'*o o '0ti7o '&to
45%tu5n: %(t'+o +%& /in 0on(u&t'+o (uint_")
*/
uint"_t 2ePIN(uint"_t /u%5to=uint"_t /in = uint"_t '0ti7i+'+)@
!)ercicio 1<.1
Reali-ar una funcin "ue !eleccione la funcin "ue de!arrollara el pin del puerto !eleccionado del
%PC/0*1 &
/********************************************************************************
41n void SePINSEL ( !in"# /!e,o $ !in"# /in $!in"# &e%)
4,5i%1 (%&%00i2n +% &' 1un0i2n +%& PIN +% un +%t%5.in'+o PUE<KGL
4'ut)o5 U(t%+
4/'5'. [in] /u%5to: /o5t 0on %& Mu% (% 7' ' t5','*'5
4/'5'. [in] /in: /in 0on1i8u5'5
4/'5'. [in] (%&: (%&%00i2n +%(%'+' (0=1=2 o 3)
45%tu5n: 7oi+
*/
void SePINSEL( uint"_t /u%5to = uint"_t /in =uint"_t (%&)
!)ercicio 1*.1
Reali-ar una funcin "ue !eleccione el comportamiento del puerto 3pull?up8 pull?do@n8 etc 4
cuando e!te fue confi#urado como entrada di#ital
/********************************************************************************
41n void SePIN3ODE( !in"# /!e,o$ !in"# /in $!in"# .odo)
4,5i%1 (%&%00ion' %& 0o./o5t'.i%nto +% un /in 0u'n+o 1u% 0on1i8u5'+o 0o.o
%nt5'+'L
4'ut)o5 U(t%+
4/'5'. [in] /u%5to: /u%5to 0on %& Mu% (% 7' ' t5','*'5
4/'5'. [in] /in: /in 0on1i8u5'5
4/'5'. [in] .o+o: .o+o +% t5','*o +%(%'+o (0=1=2 o 3)
45%tu5n: 7oi+
*/
void SePIN3ODE( uint"_t /u%5to = uint"_t /in =uint"_t .o+o)


Pgina 13 de 14
Universidad Tecnolgica Nacional Departamento de Electrnica
Facultad Regional Buenos Aires Informtica II
GUIA DE TRABAJOS PRACTICOS
!)ercicio 19.1
Reali-ar una funcin "ue !eleccione el comportamiento del puerto 3pull?up8 pull?do@n8 etc 4
cuando e!te fue confi#urado como entrada di#ital
/********************************************************************************
41n void SeTO22LE( !in"# /!e,o$ !in"# /in )
4,5i%1 In7i%5t% %& %(t'+o +%& /in +%& /u%5toL
4'ut)o5 U(t%+
4/'5'. [in] /u%5to: /u%5to 0on %& Mu% (% 7' ' t5','*'5
4/'5'. [in] /in: /in ' in7%5ti5
45%tu5n: 7oi+
*/
void SeTO22LE( uint"_t /u%5to = uint"_t /in)


Pgina 14 de 14

You might also like