Autor Tema: no puedo leer puerto c de atmega 8  (Leído 2600 veces)

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

Desconectado ivan251093

  • PIC10
  • *
  • Mensajes: 1
no puedo leer puerto c de atmega 8
« 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;
      
   }
 

Desconectado Zirryux

  • PIC10
  • *
  • Mensajes: 6
Re: no puedo leer puerto c de atmega 8
« Respuesta #1 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;      
   }
}