только светодиоды не бегут. а хаотично мигают. что не так?
только светодиоды не бегут. а хаотично мигают. что не так?
Код: Выделить всё
#define F_CPU 9600000
#include <util/delay.h>
int main(void)
{
...
while(1)
{
....
_delay_ms(200);
}
}с таймером косяк ща буду разбираться))) ток сразу не подсказывайте сам хочу додуматьeess9 писал(а):виноват таймер
Код: Выделить всё
#include <avr/io.h>
void wait1(void)
{
TCNT0=0;
while(TCNT0<250){};
}
int main(void)
{
unsigned char temp;
DDRB=0xFF;
PORTB=0x00;
TCCR0A=0x00;
TCCR0B=(1<<CS02)|(0<<CS01)|(0<<CS00);
while(1)
{
temp=0x80;
while (temp!=0)
{
PORTB=temp;
temp=temp>>1;
wait1();
}
}
}Код: Выделить всё
#include <avr/io.h>
#include <avr/interrupt.h>
int main(void)
{
// отключаем компаратор
ACSR |= (1 << ACD);
// конфигурируем порт
DDRB = 0b011111;
PORTB = 0b000000;
// режим таймера CTC
TCCR0A |= (1 << WGM01);
// делитель частоты таймера 1024
TCCR0B |= (1 << CS02)|(1 << CS00);
// разрешаем прерывание от таймера
TIMSK0 |= (1 << OCIE0B);
// значение регистра сравнения (1000мс)
OCR0A = 125;
// разрешаем прерывания
sei();
while(1) {}
}
// обработчик прерывания по совпадению таймера
ISR (TIM0_COMPB_vect)
{
if ((PORTB >>= 1) < 0b000001) PORTB = 0b010000;
}
Удобно и имеет смысл, если писатьKavka писал(а):eess9, так удобно при написании/отладке программы. Чтобы не стирать/переписывать - записываешь конструкцию со всеми участвующими битами, и просто ставишь нолики/единички в нужных местах. Ну а компилятор уже разбирается - имеет это смысл или нет.Это уже не раз всплывало.