PDA

Просмотр полной версии : Макросы. работа с битами



CFC-ST
02.09.2019, 12:53
Добрый день!
Изучив руководство пользователя на СП307 не могу написать макрос и решить следующую проблемы
например
1. Присвоить регистру PSB300 - значение нулевого бита регистра PSW 600.
2. Присвоить первому биту регистра PSW 600 - значение регистра PSB301.


3. пытаясь написать цикл аналогично примеру 3 - не получается.

пример 3 стр.177 руководства пользователя СП307 17.06.2019 версия 2.0

присвоить значение бита PSB400 биту PSB300.
if ( (PSW[400] & (1<<4)) != 0 ) // PSW400.4
{
SetPSB(300);
}
else
{
ResetPSB(300);
4. пытаясь написать цикл аналогично примеру 4 - не получается.
пример 4 см стр 177 руководства пользователя СП307 17.06.2019 версия 2.0

записать значение четвертого бита регистра PSW400 в бит PSB300.
if ( (PSW[400] & (1<<4)) != 0 ) // PSW400.4
{
SetPSB(300);
}
else
{
ResetPSB(300);
}

просьба написать правильные коды макросов для вышеизложенных четырёх проблем.

Загадка - что означает (PSW[400] & (1<<4)) != 0 - фраза. просьба пояснить

Евгений Кислов
02.09.2019, 13:07
Добрый день.

Например, так (жирным выделены места, где подставляется номер бита регистра):



if ( (PSW[600] & (1<<0)) != 0 )
{
SetPSB(300);
}
else
{
ResetPSB(300);
}




if (GetPSBStatus(301))
{
PSW[600] = PSW[600] | (1<<1);
}
else
{
PSW[600] = PSW[600] & ~(1<<1);
}



Загадка - что означает (PSW[400] & (1<<4)) != 0 - фраза. просьба пояснить

http://chipenable.ru/index.php/programming-avr/item/4-uchebnyy-kurs-kak-rabotat-s-bitami-makroopredeleniya.html