Пишу программу на mega8515. К биту A6 припаян через резистор светодиод. DDRA = 0xff; PORTA = 0xff; PORTA = 0xBF; светодиод на зажигается PORTA.6=0; зажигается! В листинге ассемблер правильный. Подскажите, кто знает, что это?
Marian
Jun 1 2011, 16:46
Цитата(sealbi @ Jun 1 2011, 18:46)
Пишу программу на mega8515. К биту A6 припаян через резистор светодиод. DDRA = 0xff; PORTA = 0xff; PORTA = 0xBF; светодиод на зажигается PORTA.6=0; зажигается! В листинге ассемблер правильный. Подскажите, кто знает, что это?
Думаете чудо? Посмотрите куда идет второй конец цепи и все поймете.
sealbi
Jun 1 2011, 23:33
Второй конец цепи подключен к +питания. Да и как это влияет, команды ведь логически аналогичные?
demiurg_spb
Jun 2 2011, 04:31
В CodeVision ваяете? Покажите код инициализации, листинг и фьюз-биты. Альтернативные функции порта не используете?
Сергей Борщ
Jun 2 2011, 06:14
QUOTE (sealbi @ Jun 2 2011, 02:33)
Второй конец цепи подключен к +питания. Да и как это влияет, команды ведь логически аналогичные?
Нарисуйте на схеме путь протекания тока через светодиод. Кокда вы выводите в порт единицу, на выходе появляется напряжение около +5в. На втором выводе светодиода у вас тоже +5в, т.е. на обоих выводах по +5в. Откуда взяться току? Тока нет, светодиод не светится. Все правильно.
demiurg_spb
Jun 2 2011, 07:13
Цитата(Сергей Борщ @ Jun 2 2011, 10:14)
Тока нет, светодиод не светится. Все правильно.
Так он должен зажигаться и при
Код
PORTA &= ~(1<<6); //0xBF
MrYuran
Jun 2 2011, 07:33
Есть пред[по]ложение. Прогоните через порт бегущий ноль. Возможно, с/д висит не на 6, а на другом разряде. Либо закорочен с соседними. Это в том случае, если эти две строки
Код
PORTA = 0xBF; светодиод на зажигается PORTA.6=0; зажигается!