Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

17/09/2014 #1


Programa en C para un Atmel 164P
Buenas Días, estaba empezando a programar un atmel 164P el cual lo que queria que haga es testear el bit 0 del pin B y si se encuentra en un 0 logico mandar una señal de 1 lògico al pin 0 del puerto A, pero no me vale en la simulaciòn, espero que me digan que esta mal en mi codigo aquí les dejo....

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB=0x00;
PORTB=0xFF;
DDRA=0xFF;
while(1)
{
if(bit_is_set(PINB,0))
{
PORTA |= (1 << 0);
_delay_ms(500);
}

}
}
17/09/2014 #2

Avatar de Moyano Jonathan

Hola como estás.

Te recomiendo que realices el montaje, las simulaciones nunca son 100% confiables.

Código PHP:
/************************************************************************************************
 PROGRAMAS DE EJEMPLO PARA EL ATmega8 - 16PI.
 EJERCICIO Nº 6: Utilización de pulsadores.
 PROGRAMADOR: Moyano Jonathan.
 Fecha: 2013.
 Programa: Enciende y apaga un led, cada vez que presionamos un pulsador.
           Utilizamos software antirrebotes para evitar pulsaciones falsas.
 Cristal:  16Mhz.
 Programador: USBtinyISP.
 ************************************************************************************************/
#include <avr/io.h>       // Definiciones de hardware.
#define F_CPU 16000000L   // Definimos la frecuencia de trabajo del microcontrolador.
#include <util/delay.h>   // Librería para generar retardos.

int main(void)
{
    
DDRB  |= << PINB0;    // Pin B0 como salida.
    
DDRC  &= ~(<< PINC5); // Pin C5 como entrada.
    
PORTB &= ~(<< PINB0); // Ponemos a nivel bajo el pin donde está conectado el led.

    
while (1)
    {
        
// Si el pulsador está presionado...
        
if (bit_is_clear(PINC5))
        {    
            
// Esperamos 150ms...antirrebote.
            
_delay_ms(150);
            
// Miramos nuevamente el estado del pulsador...
            
if (bit_is_clear(PINC5))
            {
            
// En caso de que esté presionado, prende o apaga el led.    
            
PORTB ^= << PINB0;
      }
    }
  }

Este ejemplo básico lo podés probar con el ATmega164.
17/09/2014 #3


Hola!! que compilacion es? me gustaria aprender es studio 6.2?
Saludos!!
17/09/2014 #4


Muchas Gracias Moyano Jonathan, creo que implementare el circuito para verificarlo.
Printpix ya compile el codigo de la respuesta en studio 6.1
17/09/2014 #5


Ohh!! Que bien!! gracias.
20/09/2014 #6

Avatar de Moyano Jonathan

Printpix, para compilar podés usar WinAVR o ATMEL Studio. Yo personalmente uso ATMEL Studio por que tiene la última versión del AVR GCC y muchas herramientas útiles para desarrollar.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.