Микроконтроллеры | Корректный запуск/остановка таймера |
|
---|---|---|
Вот, к примеру, запустить/остановить таймер0 avr-ки можно так (изначально пусть TCCR0=0x00): TCCR0|=0b00000 001; или так: TCCR0=0b00000 001; А вот что корректнее, маскИрование или прямая запись в этом случае и почему? |
|
|
На асме будет, видимо, так: 1. LDS или IN, ORI, STS или OUT Думаю, именно для данного примера второй вариант предпочтительнее, поскольку никаких "левых" битов регистр TCCR0 не содержит. Это не TIMSK, к примеру, где в кучу свалены биты от нескольких разных устройств. |
|
|
Да, действительно, скомпилировал в cvavr оба варианта: 1) 2) Для других таймеров видимо тоже прямая запись предпочтительней. Вот нет привычки в .asm-листинг смотреть. Думал сначала, что перезаписать весь регистр "длиннее", чем выборочно по битам. |
|
|
Для некоторых регистров это так. Если бы Вы вели речь о регистре порта, я порекомендовал бы в точности наоборот, потому что до них "дотягиваются" команды SBI и CBI, и код, действительно, будет короче. |
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |