Перейти к содержанию
    

Непонятный mega8515

Пишу программу на mega8515. К биту A6 припаян через резистор светодиод.

DDRA = 0xff; PORTA = 0xff;

PORTA = 0xBF; светодиод на зажигается

PORTA.6=0; зажигается!

В листинге ассемблер правильный.

Подскажите, кто знает, что это?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пишу программу на mega8515. К биту A6 припаян через резистор светодиод.

DDRA = 0xff; PORTA = 0xff;

PORTA = 0xBF; светодиод на зажигается

PORTA.6=0; зажигается!

В листинге ассемблер правильный.

Подскажите, кто знает, что это?

Думаете чудо?

Посмотрите куда идет второй конец цепи и все поймете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Второй конец цепи подключен к +питания. Да и как это влияет, команды ведь логически аналогичные?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В CodeVision ваяете?

Покажите код инициализации, листинг и фьюз-биты.

Альтернативные функции порта не используете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Второй конец цепи подключен к +питания. Да и как это влияет, команды ведь логически аналогичные?
Нарисуйте на схеме путь протекания тока через светодиод. Кокда вы выводите в порт единицу, на выходе появляется напряжение около +5в. На втором выводе светодиода у вас тоже +5в, т.е. на обоих выводах по +5в. Откуда взяться току? Тока нет, светодиод не светится. Все правильно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тока нет, светодиод не светится. Все правильно.
Так он должен зажигаться и при
PORTA &= ~(1<<6); //0xBF

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Есть пред[по]ложение.

Прогоните через порт бегущий ноль.

Возможно, с/д висит не на 6, а на другом разряде. Либо закорочен с соседними.

Это в том случае, если эти две строки

PORTA = 0xBF; светодиод на зажигается
PORTA.6=0; зажигается!

формируют одинаковый листинг.

 

Чудес не бывает, а дерьмо случается. ©

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...формируют одинаковый листинг.

Не могут они одинаковый листинг формировать.

PORTA = 0xBF - запись байта в порт

PORTA.6=0 - очистка одного бита в порту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не могут они одинаковый листинг формировать.

PORTA = 0xBF - запись байта в порт

PORTA.6=0 - очистка одного бита в порту.

Нормальный компилятор и в том, и в другом случае вставит однобайтную инструкцию очистки бита.

 

Хотя нет, наверно погорячился... Это если бы маску накладывать, то да...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пользуйтесь конструкцией (1<<x) при работе с масками и битами - мозг меньше будет уставать. Серьёзно.

 

Это если бы маску накладывать, то да...
Ага.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...