kurtis 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба Напишите сначала программу которая просто выдает 1 байт в порт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба Пойти изучать Баском АВР чтоли, все таки для себя самому сделать охота.. JAVA. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
мега16 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба Байт то в порт выводит, в том же коде есть,просто из массива вытаскивать не умею. На JAVA для АВР компилятор есть чтоли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба Приведите код который у вас выводит байт в порт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба Байт то в порт выводит, в том же коде есть,просто из массива вытаскивать не умею. Все просто. (code&(1<<j))?1:0 Разберем. code Это просто берем значение с индексом i из массива (вектора) code. (1<<j) Напишите прогу (для ПС) for (int i=0;i<10;i++) printf ( " i= %i 1<<i= %i\n" i, (1<<i)); Полученные 10 значений переведите в бинарную форму из десятичной. Потом сами догадаетесь что значит 1<<i Ну а & просто http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%...%86%D0%B8%D1%8F В С, переменная истинна, если хоть один бит в ней не равен 0. На JAVA для АВР компилятор есть чтоли? На java можно писать для более хорошо оплачиваемых вещей, кроме как AVR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
мега16 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 (изменено) · Жалоба Приведите код который у вас выводит байт в порт for (counter = 0; counter < 64; counter++){ // цикл DS = 1; //записываем в линию данных 1 //Дергаем ногой чтоб пропихнуть бит в регистр-отправляем через порт на сдвиговые регисты SH_CP = 1; SH_CP = 0; } //Дергаем ногой и защёлкиваем данные ST_CP = 1; ST_CP = 0; -отправляются 64 бита и горят все светодиоды Ах да,вы про байт,я про бит Изменено 26 декабря, 2010 пользователем мега16 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба #include <limits.h> typedef unsigned char my_type; my_type code[]={0x38,0x7C,0x38,0xFE,0xFE,0x7C,0x38,0x7C}; int main() { unsigned int i, j; DDRD = 0x0F; RESET = 1; for (i=0; i<sizeof(code)/sizeof(code[0]); i++) { for (j=0; j<(sizeof(my_type)*CHAR_BIT); j++) { if (code[i] & j) { DS = 1; } else { DS = 0; } SH_CP = 1; SH_CP = 0; } } ST_CP = 1; ST_CP = 0; return 0; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба #include <limits.h> typedef unsigned char my_type; my_type code[]={0x38,0x7C,0x38,0xFE,0xFE,0x7C,0x38,0x7C}; int main() { unsigned int i, j; DDRD = 0x0F; RESET = 1; for (i=0; i<sizeof(code)/sizeof(code[0]); i++) { for (j=0; j<(sizeof(my_type)*CHAR_BIT); j++) { if (code[i] & j) { DS = 1; } else { DS = 0; } SH_CP = 1; SH_CP = 0; } } ST_CP = 1; ST_CP = 0; return 0; } Это чё? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kurtis 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба это автору Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
мега16 0 26 декабря, 2010 Опубликовано 26 декабря, 2010 · Жалоба ВОТ СПАСИБО- это работает ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
мега16 0 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба Блин,работает,но неправильно вытаскивает байты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 14 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба for (i=0; i<sizeof(code)/sizeof(code[0]); i++) { for (j=0; j<(sizeof(my_type)*CHAR_BIT); j++) { if (code[i] & j) { В последней строчке надо if (code[i] & (1 << j)) { Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба Вот так оптимальнее будет:-) uint8_t temp = code[i]; for (uint8_t j=0; j<8; j++, temp>>=1) { if (temp & 1) { ... } else { ... } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
мега16 0 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба Почему же так? my_type code[]={11111111,00000000,11110000,11100111}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Methane 0 28 декабря, 2010 Опубликовано 28 декабря, 2010 · Жалоба Почему же так? my_type code[]={11111111,00000000,11110000,11100111}; 11110000 это десятичное число. И причем my_type должно быть 32 бита. Лучше сделайте себе файлик, #define BIN0000_0000 0x00 #define BIN0000_0001 0x01 #define BIN0000_0010 0x02 #define BIN0000_0011 0x03 и инклюдьте его туда где вам нужно что-то в бинарном виде рисовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться