Olá ,aqui está um exemplo de codigo para quem precisar fazer um sequencial de leds
//************************************************************************
// usando sequencial
// Version : 1.0
// microcontrolador : AVR ATMega8
// Autor : Aguivone
// descrição : acesso individual usando define
// data : 16/09/2010.
//
//************************************************************************
#define F_CPU 1000000UL // 1 MHz deve vir antes das interrupçoes
#include <avr/io.h> //standard include for ATMega16 # Include <avr/io.h> / padrão para incluir ATMEGA16
#include <util/delay.h>
#define liga_pino(x,y) x |= _BV(y)
#define desliga_pino(x,y) x &= ~(_BV(y))
#define alterna_pino(x,y) x ^= _BV(y)
#define pino_alto(x,y) ((x & _BV(y)) == _BV(y)) //o pino deve estar como entrada ,testa se está em nivel logico 1
///* _BV(a) is a macro which returns the value in hex corresponding to 2 to the power 'a'. / * _BV (A) é uma macro que retorna o valor em hexadecimal correspondente a 2 elevado à potência 'a'. Thus _BV(PX3) would be 0x08 or 0b00001000 */ Assim _BV PX3 () seria 0x08 ou 0b00001000 * /
int main (void)
{
unsigned int valor = 50;
// DDRB= 0xf7 ; //PORTB as OUTPUT DDRB = 0xff; / PORTB / as OUTPUT
DDRB = 0xFF;
DDRC = 0xFF;
DDRD = 0xFF;
PORTB = 0x00 ; //All pins of PORTB LOW PORTB = 0x00 / / Todos os pinos do PORTB LOW
PORTC = 0x00 ; //All pins of PORTB LOW PORTB = 0x00 / / Todos os pinos do PORTB LOW
PORTD = 0x00 ; //All pins of PORTB LOW PORTB = 0x00 / / Todos os pinos do PORTB LOW
while (1)
{
//////////////////////////////////////////////
liga_pino(PORTB,PB0);
_delay_ms(1);
desliga_pino(PORTC,PC5);
_delay_ms(valor);
liga_pino(PORTB,PB1);
_delay_ms(1);
desliga_pino(PORTB,PB0);
_delay_ms(valor);
liga_pino(PORTB,PB2);
_delay_ms(1);
desliga_pino(PORTB,PB1);
_delay_ms(valor);
liga_pino(PORTB,PB3);
_delay_ms(1);
desliga_pino(PORTB,PB2);
_delay_ms(valor);
liga_pino(PORTB,PB4);
_delay_ms(1);
desliga_pino(PORTB,PB3);
_delay_ms(valor);
liga_pino(PORTB,PB5);
_delay_ms(1);
desliga_pino(PORTB,PB4);
_delay_ms(valor);
liga_pino(PORTB,PB6);
_delay_ms(1);
desliga_pino(PORTB,PB5);
_delay_ms(valor);
liga_pino(PORTB,PB7);
_delay_ms(1);
desliga_pino(PORTB,PB6);
_delay_ms(valor);
///////////////////////////////////////////////////////////
liga_pino(PORTD,PD0);
_delay_ms(1);
desliga_pino(PORTB,PB7);
_delay_ms(valor);
liga_pino(PORTD,PD1);
_delay_ms(1);
desliga_pino(PORTD,PD0);
_delay_ms(valor);
liga_pino(PORTD,PD2);
_delay_ms(1);
desliga_pino(PORTD,PD1);
_delay_ms(valor);
liga_pino(PORTD,PD3);
_delay_ms(1);
desliga_pino(PORTD,PD2);
_delay_ms(valor);
liga_pino(PORTD,PD4);
_delay_ms(1);
desliga_pino(PORTD,PD3);
_delay_ms(valor);
liga_pino(PORTD,PD5);
_delay_ms(1);
desliga_pino(PORTD,PD4);
_delay_ms(valor);
liga_pino(PORTD,PD6);
_delay_ms(1);
desliga_pino(PORTD,PD5);
_delay_ms(valor);
liga_pino(PORTD,PD7);
_delay_ms(1);
desliga_pino(PORTD,PD6);
_delay_ms(valor);
///////////////////////////////////////////
liga_pino(PORTC,PC0);
_delay_ms(1);
desliga_pino(PORTD,PD7);
_delay_ms(valor);
liga_pino(PORTC,PC1);
_delay_ms(1);
desliga_pino(PORTC,PC0);
_delay_ms(valor);
liga_pino(PORTC,PC2);
_delay_ms(1);
desliga_pino(PORTC,PC1);
_delay_ms(valor);
liga_pino(PORTC,PC3);
_delay_ms(1);
desliga_pino(PORTC,PC2);
_delay_ms(valor);
liga_pino(PORTC,PC4);
_delay_ms(1);
desliga_pino(PORTC,PC3);
_delay_ms(valor);
liga_pino(PORTC,PC5);
_delay_ms(1);
desliga_pino(PORTC,PC4);
_delay_ms(valor);
}
}
Engenheiro eletricista - Desenvolvedor de hardware. Protótipos e projetos. Desenvolvimento de software de interface.(aguivone@gmail.com)
quinta-feira, 16 de setembro de 2010
sequencial de 22 leds com atmega8 (avr)
Assinar:
Postar comentários
(
Atom
)
não dá para enxergar nada com esse azulão
ResponderExcluirObrigado
ResponderExcluirbom ao menos no meu pc não vi problemas,mas obrigado pela sugestão,vou verificar em outros pcs!
ResponderExcluir