Bo to jest zero w systemie dwójkowym.
W Hexie ono się odbija ale nie widać tego na pierwszy rzut oka.
Gdy liczba dwójkowa ma na początku 0 to w Hexie będzie to liczba od 0x do 7x. Gdy Bedzie 1 na początku to w Hexie będzie to liczba od 8x do Fx.
Dlatego dane mają wartość "
C485"
a częstotliwość "
2E27"
Dodano po 1 [minuty]:
Acha, o to Ci chodzi. Czyta się tak jak zawsze. Najstarsze wartości po lewej a najmłodsze po prawej.
Dodano po 3 [minuty]:
Bardziej chodziło mi o częstotliwości stacji a nie o nazwy ;p
Dodano po 16 [minuty]:
Masz troche błędów w kodzie:
Negacja bitowa (logiczna) to "~" a nie "!".
Do tego trzeba pododawać "&" albo "|".
I jedna pomyłka. Przed pętlą for jedną liczbę pomyliłeś.
PORTB=!_BV(5);
PORTB=!_BV(7);
PORTB=_BV(6); //Wcześniej było 5.
Przerobiłem to trochę. Jak to zadziała to to będzie cud.
#include<avr/io.h>
int dane;
#define OSC 4
// definicja funkcji opóźniającej
void waitms(unsigned char x)
{
unsigned char a, b; // zmnienne licznikowe
for( ; x > 0; --x) // ta pętla zostanie wykonana x-razy
for(b = 10; b > 0; --b) // a ta 10 razy
for(a = 25 * OSC; a > 0; --a) // natomiast ta 100 razy
__asm("nop"); // dodatkowa instrukcja opóźniająca o 1 cykl
// razem to da opóźnienie ok. x * 1ms
// x od 0 do 255
// gdy x = 0 to opóźnienie = 256ms
}
int main()
{
int i;
DDRB=_BV(5) | _BV(6) | _BV(7); //Mam nadzieję że _BV(7) oznacza 128 a nie 7 ;p
dane=0xC485;
PORTB&=~_BV(5);
PORTB|=~_BV(7);
PORTB|=_BV(6);
waitms(5);
PORTB|=_BV(7);
waitms(5);
PORTB|=_BV(6);
waitms(5);
PORTB&=~_BV(6);
waitms(5);
for(i=0;i>=15;i++) //>= a nie >
{
PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));
waitms(5);
PORTB|=_BV(6);
waitms(5);
PORTB&=~_BV(6);
waitms(5);
}
PORTB&=~_BV(7);
waitms(5);
PORTB|=_BV(6);
waitms(5);
PORTB&=~_BV(6);
waitms(5);
PORTB|=_BV(7);
waitms(5);
PORTB|=_BV(5);
PORTB|=_BV(6);
waitms(100);
dane=0x2E27;
PORTB&=~_BV(5);
PORTB|=~_BV(7);
PORTB|=_BV(6);
waitms(5);
PORTB|=_BV(7);
waitms(5);
PORTB|=_BV(6);
waitms(5);
PORTB&=~_BV(6);
waitms(5);
for(i=0;i>=15;i++) //>= a nie >
{
PORTB = (PORTB & ~(5 << 1)) | (5 << ((dane >> i) & 1));
waitms(5);
PORTB|=_BV(6);
waitms(5);
PORTB&=~_BV(6);
waitms(5);
}
PORTB&=~_BV(7);
waitms(5);
PORTB|=_BV(6);
waitms(5);
PORTB&=~_BV(6);
waitms(5);
PORTB|=_BV(7);
waitms(5);
PORTB|=_BV(5);
PORTB|=_BV(6);
waitms(100);
}