Алгоритм: при нажатие кнопки (на вход PD0 подаем +5В) через каждые 4286 мс загораются последующие светодиоды от PB1 ... до PB7
При нажатие кнопки (на вход PD1 подаем +5В) через каждые 4286 мс тухнут последующие светодиоды от PB7 ... до PB1
Но первые тухнет и последний загорается (PD0 и PD8) при начале и конце отсчета.
Интервал загорания всех светодиодов 30 сек.
В эмуляции AVR Studio 4 все нормально.
На деле не работает (не загорается даже один светодиод).
Раздел: AVR
При нажатие кнопки (на вход PD1 подаем +5В) через каждые 4286 мс тухнут последующие светодиоды от PB7 ... до PB1
Но первые тухнет и последний загорается (PD0 и PD8) при начале и конце отсчета.
Интервал загорания всех светодиодов 30 сек.
В эмуляции AVR Studio 4 все нормально.
На деле не работает (не загорается даже один светодиод).
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 8000000UL
int m[7] = {0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F};
int t = 0, ct = 30000, h = 4286;
int main(void) {
PORTD = 0x00;
DDRD = 0x00;
PORTB = 0x00;
DDRB = 0xFF;
while(1) {
if (PIND &(1 << PD0)) { // OPEN
t = t + 300;
if (t >= ct) { t = ct; PORTB = 0xFF; }
else PORTB = PORTB | m[t/h];
} else
if (PIND &(1 << PD1)) { // CLOSE
t = t - 300;
if (t < 0) t = 0;
if (!t) PORTB = 0x00;
else PORTB = PORTB & m[t/h];
}
_delay_ms(300);
}
}
Раздел: AVR