зачем так много действий, и зачем вообще if, которые ничего не делают?uuuu писал(а):как переключаться между тремя портами по сигналу
Код: Выделить всё
while(1)
{
PORTD = ~PINB;
}зачем так много действий, и зачем вообще if, которые ничего не делают?uuuu писал(а):как переключаться между тремя портами по сигналу
Код: Выделить всё
while(1)
{
PORTD = ~PINB;
}мне нужно от переключателя с тремя положениями управлять led индикатором,и чтоб на входах была логическая 1 ,а на выходах 0(led индикатор с общим анодом)unalex писал(а):зачем так много действий, и зачем вообще if, которые ничего не делают?Код: Выделить всё
while(1) { PORTD = ~PINB; }
Код: Выделить всё
#define MASK 0b00000111
temp =PINB &MASK; Код: Выделить всё
char show[]={0b00000001, 0b00000010, 0b00000100, 0b00000111} Код: Выделить всё
#define MASK 0b00000111
// объявление переменных
char temp=0,show[]={0b11111110, 0b11111101, 0b11111011, 0b00000111};
//-------------основной цикл
temp =PINB &MASK;
switch (temp){
case (0b00000001): PORTD =show[1];break;
case (0b00000010): PORTD =show[2];break;
case (0b00000100): PORTD =show[3];break;
default : PORTD =show[4] ;
}//end of switch vitalik_1984 писал(а):Спойлер
Код: Выделить всё
#define MASK 0x00000111 // объявление переменных char show[]={0x11111110, 0x11111101, 0x11111011, 0x00000111}; //Error: must declare first in block //-------------основной цикл temp =PINB &MASK; //Error: undefined symbol 'temp' switch (temp){ //Error: undefined symbol 'temp' case (0x00000001): PORTD =show[1];break; case (0x00000010): PORTD =show[2];break; case (0x00000100): PORTD =show[3];break; default : PORTD =show[4] ; }//end of switch
Код: Выделить всё
//определение переменных
unsigned char temp =0; zero648 писал(а):uuuu, замени все иксы "х" на "b"
Код: Выделить всё
while(1)
{
PORTD = ~(PINB & 0x07);
}ну тут явно больше 255uuuu писал(а):char show[]={0x11111110, 0x11111101, 0x11111011, 0x00000111};
проверяете в железе или симуляторе? На первый взгляд должно работать, но нужны подтягивающие к корпусу резисторы на всех входах. Если их нет, то можно предположить, что при включении на входах вначале низкий уровень, переключатель сразу дает высокий на одном входе, срабатывает нужный while, выставляет нужное значение на выходе, далее входы "подплывают" к логической единице и ни один while уже не сработает.uuuu писал(а):вы как будто меня не слышите?
Ваш код работает так,что светодиод горит только пока нажата кнопка или какой либо выключатель.А uuuu, похоже, нужно чтобы при нажатии переключалось.unalex писал(а): проверьте сначала, потом пишите что не так