TODOPIC
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
. ¿Perdiste tu
email de activación
?
1 Hora
1 Día
1 Semana
1 Mes
Siempre
Ingresar con nombre de usuario, contraseña y duración de la sesión
Este tema
Este sub-foro
Todo el foro
Google
Inicio
Ayuda
Buscar
Ingresar
Registrarse
TODOPIC
»
Microcontroladores PIC
»
Todo en microcontroladores PIC
(Moderadores:
MGLSOFT
,
pocher
,
Suky
) »
duda puertos pic16f887
« anterior
próximo »
Imprimir
Páginas: [
1
]
Ir Abajo
Autor
Tema: duda puertos pic16f887 (Leído 1000 veces)
0 Usuarios y 1 Visitante están viendo este tema.
jeison
PIC10
Mensajes: 19
duda puertos pic16f887
«
en:
18 de Septiembre de 2014, 13:36:22 »
Hola, alguien sabe como asignar un valor a un puerto en especifico en CCS que no sea bit a bit, de la forma más concreta posible estoy usando lenguaje C en un pic16f887. se que es algo muy fácil pero no se cual es la sintaxis.
¡saludos!
En línea
fabianjsm
PIC18
Mensajes: 255
Re: duda puertos pic16f887
«
Respuesta #1 en:
19 de Septiembre de 2014, 07:00:26 »
Tratar al puerto como si fuera una variable:
Código: C
#byte PORTA = 5
main
(
)
{
int
i
;
// Todos los bits son salidas
set_tris_a
(
0x00
)
;
// Ponemos todos los bits a cero
PORTA
=
0
;
// Parte alta salida, parte baja entrada
set_tris_a
(
0x0F
)
;
// Leemos el puerto en una variable
i
=
PORTA
;
// Si esta seteado el primer bit seteamos el ultimo
if
(
PORTA
&
1
)
PORTA
|=
0x80
;
// Si esta seteado el segundo bit invertimos el anteultimo
if
(
PORTA
&
2
)
PORTA
^=
0x40
;
// Si esta seteado el tercer bit limpiamos el antepenultimo
if
(
PORTA
&
4
)
PORTA
&=
~
0x20
;
}
Utilizando estructuras:
Código: C
struct
mapa
{
int
dt
:
4
;
int
reservado
:
2
;
int
enable
:
1
;
int
ck
:
1
;
}
;
struct
mapa bus
;
#byte bus = 6 /* PORTB */
void
enviar
(
int
val
)
{
bus.
enable
=
1
;
// Habilitamos el bus
bus.
dt
=
val
&
0x0F
;
// Enviamos la parte baja
bus.
ck
=
1
;
// Pulso de clock
delay_us
(
40
)
;
bus.
ck
=
0
;
bus.
dt
=
val
>>
4
;
// Enviamos la parte alta
bus.
ck
=
1
;
// Pulso de clock
delay_us
(
40
)
;
bus.
ck
=
0
;
bus.
enable
=
0
;
// Desabilitamos el bus
}
Espero que te sirva.
En línea
@fabianjsm is on twitter
Imprimir
Páginas: [
1
]
Ir Arriba
« anterior
próximo »
TODOPIC
»
Microcontroladores PIC
»
Todo en microcontroladores PIC
(Moderadores:
MGLSOFT
,
pocher
,
Suky
) »
duda puertos pic16f887