Autor Tema: Acceso a puertos de los PIC mediante indices  (Leído 1783 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Acceso a puertos de los PIC mediante indices
« en: 27 de Junio de 2011, 17:45:00 »
Hola:

puede que sea una tonteria lo que voy a comentar pero por si acaso lo pongo:

si pongo esto en CCS:

#byte portb=0x06

en teoria estaria apuntando a la direccion de memoria 0x06 por lo que si es un apuntador deberia poder acceder al puerto b de esta manera:

output_high( &portb+3 );

es decir estaria sacando un 1 en RB4.

al simular en proteus no me funciona. Es error mio ó existe alguna forma de acceder mediante indices?

Un saludo

Aitor

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Acceso a puertos de los PIC mediante indices
« Respuesta #1 en: 27 de Junio de 2011, 18:02:17 »
No es un apuntador, es una variable ubicada en la direccion 0x06... Es lo mismo que en asm:

Código: [Seleccionar]
portb equ 0x06
Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: Acceso a puertos de los PIC mediante indices
« Respuesta #2 en: 27 de Junio de 2011, 18:25:19 »
No es un apuntador, es una variable ubicada en la direccion 0x06... Es lo mismo que en asm:

Código: [Seleccionar]
portb equ 0x06
Saludos!

Hola:

evidentemente era una tonteria. El acceso mediante indices lo he arreglado asi:

int i;
void main(){
set_tris_d(0x00);
while(1){
    for(i=0;i<7;i++){
    portd=i;
    delay_ms(200);
    portd=0;
    delay_ms(200);
    }
}     
}
}

un saludo

Aitor

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Acceso a puertos de los PIC mediante indices
« Respuesta #3 en: 27 de Junio de 2011, 18:38:47 »
Fíjate que CCS te permite hacer esto:

Código: [Seleccionar]
union{
   short PIN[8];
   char  PORT;
}PORTB;
#byte PORTB=0x06

Y allí podes acceder al puerto o a cada bit:

Código: [Seleccionar]
for(k=0;k<8;k++){
   PORTB.PIN[k]=1;
   // ....
}


Saludos!
No contesto mensajes privados, las consultas en el foro