Найдено 26 результатов
Перейти к расширенному поиску
- mnirti
- Вт июн 13, 2017 10:40:26
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Этот блок нужен просто по условию упражнения: счет начинается по нажатию кнопки, также останавливается и продолжается после очередного нажатия. Может быть условия поместить до каждого цикла?
Код: Выделить всё
if ((PINB&0b00000001)==0))
{
while ((PINB&0b00000001)==0))
}
- mnirti
- Вт июн 13, 2017 08:07:20
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Константа была добавлена в дополнение к массиву, который посоветовали сделать константным. Указанный Вами блок выполняется только, если на ножке появляется логическая единица, то есть кнопка не нажата.
- mnirti
- Вт июн 13, 2017 07:50:28
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Список ошибок, выданных компилятором, теперь новый, код немного подправлен, в циклах есть дополнительные скобки.
#include <avr/io.h>
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
// unsigned int i; переменная не используется
int main(void)
{
unsigned char butcount=0;
DDRD ...
- mnirti
- Вс июн 11, 2017 16:21:59
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Теперь код переписан так, но отладчик выдает 7 ошибок:
#include <avr/io.h>
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
// unsigned int i; переменная не используется
int main(void)
{
unsigned char butcount=0;
DDRD = 0xFF;
DDRB = 0x00;
PORTD = 0b00000000; // Весь ...
- mnirti
- Пт июн 09, 2017 15:16:19
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Читаю и слушаю всех, код выходит таким:
#include <avr/io.h>
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
unsigned int i;
int main(void)
{
unsigned char butcount=0;
DDRD = 0xFF;
DDRB = 0x00;
PORTD = 0b00000000; // Весь регистр на выход
PORTB = 0b00000001; // Младший ...
- mnirti
- Пт июн 09, 2017 13:38:22
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Массив знаков получился такой:
for (i=0; i<10; i+1) // i должна быть от нуля до 9 включительно, т. к. строго меньше 10, шаг отсчета 1
char dig [10]= // Массив символов для индикатора
{
0b00000110;
0b01011011;
0b01001111;
0b01100110;
0b01101101;
0b01111101;
0b00000111;
0b01111111 ...
- mnirti
- Пт июн 09, 2017 12:46:24
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Конечно, лучше учить поэтапно. Но у меня получается, что выполняю такие задания параллельно с чтением теории, задания такие уже задают, знаний не хватает. Ищу по кускам, но куски вместе не склеиваются. В учебниках упражнения приводятся для выполнения непосредственно в ОС, как правило. Поэтому ...
- mnirti
- Пт июн 09, 2017 12:37:11
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Отладчик ошибки нашел в плане того, что не хватает скобок и точек с запятой. А при загрузке кода в МК и тестировании в протеусе получается, что питание на нулевую лапку изначально не подано, при нажатии кнопки часть сегментов не видна и счет останавливается сам по себе. Поэтому подозреваю, что циклы ...
- mnirti
- Пт июн 09, 2017 12:14:49
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Да, в пункте 3 кнопка не нажата, то есть при запуске счетчика нажимается один раз, для остановки еще раз.
Подскажите, пожалуйста, какие ошибки в структуре:
#include <avr/io.h>
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
unsigned int i;
int main(void)
{
unsigned char ...
- mnirti
- Пт июн 09, 2017 09:15:51
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
непонятно как отанавливается счетчик повторным нажатием или при отпускании или другой кнопкой
В предыдущих постах было: там одна кнопка на нулевую ножку.
1. При нажатии начинается отсчет.
2. Повторное нажатие - останавливается.
3. Кнопку отпускаю, отсчет продолжается с той цифры, на которой был ...
- mnirti
- Чт июн 08, 2017 15:40:09
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Уууух, не думал, что всё так запущено
Не запущено, запускать нечего, еще учиться, и учиться...
Если правильно понимаю:
while ((PINB&0b00000001)==0))
цикл будет сравнивать с 0, если приходит ноль, значит счет остановится.
Вы и вправду считаете, что есть такой оператор?
Нет, не считаю ...
- mnirti
- Чт июн 08, 2017 15:05:11
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Программу пишу в атмель студио, тренируюсь на ATmega8A, там на нулевую лапку подается 1, если кнопку нажимаю, то сразу ноль (синий значок на соединении, проверяю в протеусе).
Тогда, наверное, так:
if ((PINB&0b00000001)==0))
{
delay_ms(10);
while(1);
delay_ms(10);
}
В цикл помещаю 1, чтобы был ...
- mnirti
- Чт июн 08, 2017 14:09:34
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Обработчик кнопки с избавлением от дребезга контактов такой:
if (PINB.0==0){ per=1;
delay_ms(200);}
while(per==1)
{
if (PINB.1==0) {per=2;
delay_ms(200);}
}
Или обработка нажатия:
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show("button1 was clicked");
}
И ...
- mnirti
- Чт июн 08, 2017 12:33:29
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Аlex , исправлюсь, буду предоставлять код с тегами.
Кажется, что код написан все-таки не школьником. Вот адрес самого упражнения:
http://narodstream.ru/avr-urok-9-oformlenie-koda-funkcii/
Мне необходимо именно из этого исходного материала с циклом for сделать немного другой счетчик. Т. к ...
- mnirti
- Чт июн 08, 2017 10:46:25
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
А кто вам запретил пробовать?
Так в том-то и дело, что выполняю упражнение, код во втором случае нужно изменить без привлечения таймера.
- mnirti
- Чт июн 08, 2017 08:57:28
- Форум: AVR
- Тема: Изменение кода для счетчика
- Ответы: 43
- Просмотры: 10845
Здравствуйте. Помогите, пожалуйста.
Нужно дополнить код:
#include <avr/io.h>
#define F_CPU 8000000L
#include <avr/io.h>
#include <util/delay.h>
//unsigned int i;???
//----------
void segchar (unsigned char seg)
{
switch (seg)
{
case 1: PORTD = 0b11111001; break;
case 2: PORTD = 0b10100100 ...
- mnirti
- Пн май 29, 2017 10:00:12
- Форум: AVR
- Тема: Подключение нескольких кнопок к ATmga8A
- Ответы: 25
- Просмотры: 6187
Код стал рабочим в таком случае:
{
if (!(PINB&(1<<PINB0)))
butcount=0;
else
{
if (!(PINB&(1<<PINB1)))
butcount=1;
else
{
if (!(PINB&(1<<PINB2)))
butcount=2;
else
if (!(PINB&(1<<PINB3)))
butcount=3;
else
butcount=4;
}
}
}
switch (butcount)
{
case 0 ...
- mnirti
- Пт май 26, 2017 11:38:03
- Форум: AVR
- Тема: Подключение нескольких кнопок к ATmga8A
- Ответы: 25
- Просмотры: 6187
ARV , Ваша статья хорошая, но достаточно сложная для новичка. К тому же я знаю еще очень мало функций и их сочетаний.
Ivanoff-iv , спасибо за помощь. Свитч теперь в while, получается так:
while (1)
{
{
if (!(PINB&(1<<PINB0)))
butcount=0;
else
{
if (!(PINB&(1<<PINB1)))
butcount=1 ...
- mnirti
- Чт май 25, 2017 14:36:50
- Форум: AVR
- Тема: Подключение нескольких кнопок к ATmga8A
- Ответы: 25
- Просмотры: 6187
Не надо смеяться, подскажите, в чем ошибка. Учу программирование меньше недели, конечно, мне очень многое еще непонятно. Тем более, что стыдно не не знать, а не спрашивать и ничему не учиться. Просто выполняю упражнение, одно из многих.