Добрый день! Прошу помощи в следующем:
Есть 24 бита, хранятся в переменной pack
pack = 0b000000000000000000001111; ( как пример)
В итоге надо получить запись, в зеркальном отражении:
pack = 0b111100000000000000000000;
Каким образом это осуществить?
Спасибо!
unsigned long revers(unsigned long pack){
unsigned long result = 0;
unsigned char i;
for(i=0; i<32;i++){
result <<=1;
result |= pack & 1;
pack >>= 1;
}
return result;
}
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Pink-Pank,
Проблема в том что он тут-же просыпается самостоятельно. С чем это может быть связано, нужно еще какой-нибудь таймер отключить, а при пробуждении включить?
Up
Отключал всё! Не спит зараза. Блин, что делать...
отключать нужно все таймеры, если не хотите, чтобы он просыпался. Проснутся он также может по прерыванию от АЦП и по внешнему прерыванию. Еще SPI по моему будит его.. В общем, курите даташит!
Здрасьте.Кто-нибудь знает почему при написании:
PORTF.7=1 или PORTG.3=1
компилятор(CV AVR) выдаёт ошибку? При побитовом обращении к другим портам ошибки нету.МК АТмега 64.Подскажите,в чём причина?
Спасибо...
The bit level access to the I/O registers can be also accomplished by using bit selectors appended after the name of the I/O register.
Because bit level access to I/O registers is done using the CBI, SBI, SBIC and SBIS instructions, the register address must be in the 0 to 1Fh range for sfrb and in the 0 to 1Eh range for sfrw.
Т.е. на портах, которые находятся в адресах 0 to 1Fh, например PORTB.1=1; будет работать.
Порты, адрес который находится в RAM, например PORTF.1=1; не будет работать.
Note: Bit selector access to I/O registers located in internal RAM above address 5Fh (like PORTF for the ATmega128 for example) will not work, because the CBI, SBI, SBIC and SBIS instructions can't be used for RAM access.
Есть в CV хидер iobits.h там макросы для работы с битами:
SETBIT(port,b) - sets bit b of port to logic 1 state, CLRBIT(port,b) - sets bit b of port to logic 0 state и т.д.
Или же писать стандартно:
PORTF |= 1<<1; //установить бит 1 в порту F
PORTF &= ~(1<<1); //сбросить бит 1 в порту F