-
Постов
667 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Сообщения, опубликованные Knazev33
-
-
Я только начинающий в деле с програмированием и мк поэтому проблеммы, эту идею я попробывал, получилось только вот с одним диодом, но для второго диода код
неработает и первый диод невыключает.Пробывал с переменными работать но с ними вообще ноль реакций.
код который я пробывал:
while (1)
{
// led1 первый диод
while (PIND.0==1){}// SB1
delay_us(500);
if(PINB.0==1)
{PORTB.0=0;}
else
{PORTB.0=1;}
while (PIND.0==0){}
delay_us(500);
//led2 // этот кусок неработает и запарывает первый
while (PIND.2==1){}// SB2
delay_us(500);
if(PINB.2==1)
{PORTB.2=0;}
else
{PORTB.2=1;}
while (PIND.2==0){}
delay_us(500);
};
}
0 -
подскажите что нужно исправить в программе для того чтоб она
работала так:
при нажатии SB1 загорался диод1
при нажатии SB2 загорался диод2
при нажатии SB3 загорался диод3
при повторном нажатии на эти кнопки они также выключались.
я уже много всего перепробовал но неполучается...
сусок кода проги:
while (1)
{
// ON
if(PIND.0==1){} //SB1
{delay_us(200);
PORTB.0=0;} //диод1
//
if(PIND.1==1){} //SB2
{delay_us(200);
PORTB.1=0;}
//
if(PIND.2==1){} //SB3
{delay_us(200);
PORTB.2=0;}
//
//OFF
if((PIND.0==1)|(PORTB.0==1)){} //SB1
{delay_us(200);
PORTB.0=1;}
//
if((PIND.1==1)|(PORTB.1==1)){} //SB2
{delay_us(200);
PORTB.1=1;}
//
if((PIND.2==1)|(PORTB.2==1)){} //SB3
{delay_us(200);
PORTB.2=1;}
};
}
0 -
я написал программу которая должна при нажатии 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
Радиационный Индикатор
в Измерительная техника
Опубликовано
Я ту схему собирал ещё в 2006 году перед уходом в армию, она бы очень мне пригодилась бы в армии ибо
занимался там охраной объкта напичканый различными ядерными реакторами и магильниками, страшно было зделать шаг в право и лево с пропы наряда, в опасении облучится.
в той схеме я поставил другой преобразователь напржения на 400в, ибо тот никак неполучался,
для уменьшения габоритов и чувствительности я поставил параллельно два счётчика СИ3БГ в стекляном корпусе
размеры 35х6х7мм.