TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: ivan251093 en 14 de Diciembre de 2013, 22:54:45

Título: no puedo leer puerto c de atmega 8
Publicado por: ivan251093 en 14 de Diciembre de 2013, 22:54:45
bueno, mi duda es que cuando leo un puerto como el b o el d del atmega8 lo puedo hacer simplemente con los registros pinb y pind respectivamente, pero cuando intento hacerlo con el puerto c simplemente no puedo
en el código que esta abajo quiero usar el puerto c como entradas pero no sucede nada al simular el circuito.
lo hice con enmascaramiento, poniendo por ejemplo:

if((PINC&(0x08))==0X08) y si funciona pero pues quiero saber porque no puedo hacerlo como en el código que anexo

#include <avr/io.h>
int main(void)
{
   DDRC=0X00;
   DDRD=0XFF;
   
   while(1)
   {
      
      if(PINC==0X08)
      PORTD=0x04
      else if(PINC==0x04)
      PORTD=0x02;
      
      else if(PINC==0x02)
      PORTD=0x09;
      
      else if(PINC==0x01)
      PORTD=0x06;
      
      else
      PORTD=0x00;
      
   }
 
Título: Re: no puedo leer puerto c de atmega 8
Publicado por: Zirryux en 22 de Febrero de 2014, 19:59:04
Hola yo también soy nuevo en esto de los microcontroladores Atmel, revisando tu código encontré que te falto un ";". En un compilador de  C/C++ para windows no es un error de sintaxis y debería de funcionar igual que el AVR Studio  :? te anexo el código le agregue unas cosas espacios, sangría, { } etc es mas fácil y una de las buenas costumbres de programación según el libro de Deitel y Deitel jeje es la onda ese libro  :D :-) aaaa como recomendación usa el AVR Simulator IDE es mucho mas rápido hacer las pruebas del código y si te funciona en se simulador igual funciona en el micro  :lol:

Saludos

#include <avr/io.h>

int main( void )
{
   DDRC=0X00;
   DDRD=0XFF;
   
   while( 1 )
   {
      
      if ( PINC == 0X08 ){
         PORTD = 0x04; //<--- Aki le falto el ";"
      }
      else if( PINC == 0x04 ){
          PORTD = 0x02;
      }
      else if( PINC == 0x02 ){
         PORTD = 0x09;         
      }
      else if( PINC == 0x01 ){
         PORTD = 0x06;
      }
      else
              PORTD=0x00;      
   }
}