Вт ноя 16, 2021 16:17:24
ее результат - не логическая константа
Вт ноя 16, 2021 16:20:34
while (PINB&(1 << PB4)){}
Вт ноя 16, 2021 16:36:58
while (PINB & (1 << PB4) == (1 << PB4)){}
Вт ноя 16, 2021 16:46:33
while ((PINB&(1 << PB4)) == 0){} // Ждем пока на выводе PB4 лог. 0
Вт ноя 16, 2021 17:18:16
while (!(PINB & (1 << PB4)); // висим, пока на пине 0
while (PINB & (1 << PB4); // висим, пока на пине 1
Ср ноя 17, 2021 00:33:54
#define F_CPU 9216000UL
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>
int main()
{
CLKPR = (1 << CLKPCE);
CLKPR = (0 << CLKPCE) | (0 << CLKPS3) | (0 << CLKPS2) | (1 << CLKPS1) | (0 << CLKPS0);//Делим на 4
DDRB= 0b01101110;
PORTB=0b001011101;
TCCR0A=0;
TCCR0B=0;
TCCR0A|= (1<<WGM01); //Выставляем режим CTC
TCCR0A|= (1<<COM0A0); //Инвертируем значение OC0A по срабатыванию таймера.
TCCR0B|= (1<<CS02); //Ставим предделитель на значение 256. Запускаем генерацию
OCR0A=134;
TCCR1A = (1 << COM1A1) | (1 << WGM12) | (1 << WGM10); // Выставляем FAST PWM
TCCR1B = (1 << CS12) | (1 << CS10); // Предделитель
TCNT1=0; // clear counter
ICR1=23039; // 100 Hz from 9216000/4 MHz clock
TCCR1A=0b10000010; // non-inverting, fast PWM
TCCR1B=0b00011001; // fast PWM, full speed
OCR1A=20000; // 86% strobe
while(1) {
while (PINB&(1 << PB4)){} // Ждем пока на выводе PB4 лог. 1
_delay_ms(50); // Задержка
if ((PINB&(1 << PB6)) == 0) // Если на выводе PB0 лог. 0
{
PORTB |= (1 << PB6); // Лог. 1 на выводе PB0
PORTB &= ~(1 << PB5); // Лог. 0 на выводе PB1
OCR0A=134;
}
else
{
PORTB &= ~(1 << PB6); // Лог. 0 на выводе PB0
PORTB |= (1 << PB5); // Лог. 1 на выводе PB1
OCR0A=99;
}
while (!(PINB & (1 << PB4))) // Ждем пока на выводе PDO лог. 0
_delay_ms(50);}// Задержка
if (PORTB &= ~(1 << PB0))
{PORTB |= (1 << PB1);
_delay_ms(500);
PORTB &= ~(1 << PB1);}
}
Ср ноя 17, 2021 00:41:07
if (!(PORTB & (1 << PB0)))
{
PORTB |= (1 << PB1);
_delay_ms(500);
PORTB &= ~(1 << PB1);
}
} // Задержка
Ср ноя 17, 2021 00:52:16
Ср ноя 17, 2021 00:56:55
} // Задержка
while (!(PINB & (1 << PB4))); // Ждем пока на выводе PDO лог. 0
_delay_ms(50);}// Задержка
Ср ноя 17, 2021 01:19:06
Ср ноя 17, 2021 01:33:46
TCCR1A = 0b10000010; // non-inverting, fast PWM
TCCR1B = 0b00011001; // fast PWM, full speed
TCCR0A = 0;
TCCR0B = 0;
TCCR0A |= (1 << WGM01); //Выставляем режим CTC
TCCR0A |= (1 << COM0A0); //Инвертируем значение OC0A по срабатыванию таймера.
TCCR0B |= (1 << CS02); //Ставим предделитель на значение 256. Запускаем генерацию
CLKPR = (1 << CLKPCE);
CLKPR = (0 << CLKPCE) | (0 << CLKPS3) | (0 << CLKPS2) | (1 << CLKPS1)
| (0 << CLKPS0); //Делим на 4
TCCR1A = (1 << COM1A1) | (1 << WGM12) | (1 << WGM10); // Выставляем FAST PWM
TCCR1B = (1 << CS12) | (1 << CS10); // Предделитель
TCNT1 = 0; // clear counter
ICR1 = 23039; // 100 Hz from 9216000/4 MHz clock
TCCR1A = 0b10000010; // non-inverting, fast PWM
TCCR1B = 0b00011001; // fast PWM, full speed
Ср ноя 17, 2021 09:24:08
Просто словами опишите, где кнопки, и что хотите получить.
Иначе, получается разговор глухого с немым.
Ср ноя 17, 2021 10:38:47
if (PORTB &= ~(1 << PB0))
{
PORTB |= (1 << PB1);
_delay_ms(500);
PORTB &= ~(1 << PB1);
}
if ( (PORTB & (1 << PB0)) != 0 ) // Сработает, если PB0 = 1. Если нужно наоборот, то писать нужно так: if ( (PORTB & (1 << PB0)) == 0 )
{
PORTB |= (1 << PB1);
_delay_ms(500);
PORTB &= ~(1 << PB1);
}
Чт ноя 18, 2021 06:42:37
Чт ноя 18, 2021 15:57:05
Чт ноя 18, 2021 16:58:59
Чт ноя 18, 2021 19:18:42
честно говоря, мне по барабану, во что они превращаются - хоть в тыкву... хотя предположу, что таки да, в эти ассемблерные конструкции (если аргументы однобайтовые, конечно)DX168B писал(а):Они случайно не превращаются после компиляции
Пт ноя 19, 2021 23:29:17
if ( (PORTB & (1 << PB0)) != 0 )
{
PORTB |= (1 << PB1);
_delay_ms(500);
PORTB &= ~(1 << PB1);
}
if ( (PORTB & (1 << PB0)) == 0 )
{
PORTB |= (1 << PB1);
_delay_ms(500);
PORTB &= ~(1 << PB1);
}
Сб ноя 20, 2021 16:04:57
char str[] = "\0";
char *str = "\0";
Сб ноя 20, 2021 16:57:35