Knazev33 Опубликовано 19 июня, 2008 Поделиться Опубликовано 19 июня, 2008 я написал программу которая должна при нажатии SB1 сдвигать массив на одно положение, следующем нажатии сдвинуть на второе третье и т д. Но у меня получается при нажатии SB1 1раз, массив сам передвигается от начало до конца. вот код #include <tiny2313.h> #include <delay.h> // COLOR flash unsigned int tabkd1[] = {0,1,1,1,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,1,1,1,0,1,1,1,1,0,1,1}; // R flash unsigned int tabkd2[] = {1,0,1,1,0,1,1,1,0,1,0,1,0,1,0,1,0,1,1,1,1,0,1,1,1,1,1,0,1,0}; // G flash unsigned int tabkd3[] = {1,1,0,1,1,1,0,10,1,1,1,0,1,1,1,1,1,0,0,0,0,0,1,0,0,1,0,0,0}; // B void main(void) { unsigned int i; //counter #pragma optsize- CLKPR=0x80; CLKPR=0x00; #ifdef _OPTIMIZE_SIZE_ #pragma optsize+ #endif PORTA=0x00; DDRA=0x00; PORTB=0xFF; DDRB=0xFF; PORTD=0x7F; DDRD=0x00; TCCR0A=0x00; TCCR0B=0x00; TCNT0=0x00; OCR0A=0x00; OCR0B=0x00; TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; GIMSK=0x00; MCUCR=0x00; TIMSK=0x00; USICR=0x00; ACSR=0x80; while (1) { if (PIND.1==1) {} //SB1 кнопка else { delay_us(200); // антидребезг for (i=0; i<30; i++ ) { delay_ms(200); // задержка переключений PORTB.0=tabkd1; // r PORTB.2=tabkd2; // g PORTB.3=tabkd3; // b } } }; } 0 Электроника это целый океан творчества... Ссылка на комментарий Поделиться на другие сайты Поделиться
Prividenie Опубликовано 20 июня, 2008 Поделиться Опубликовано 20 июня, 2008 (изменено) я не программирую на си под микроконтроллеры, но очень хочу. может цикл следует просто заменить на i++ (или i=i+1), сначала положив туда 0, и проверять каждый раз i>30 delay_us(200); // антидребезг i++; if (i>30) i=0; PORTB.0=tabkd1; ..... Изменено 20 июня, 2008 пользователем Prividenie 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.