Уважаемые посетители! Форум CQHAM.RU существует исключительно за счет показа рекламы. Мы будем благодарны, если Вы не будете блокировать рекламу на нашем Форуме. Просим внести cqham.ru в список исключений для Вашего блокировщика рекламы.
Страница 2 из 11 ПерваяПервая 12345 ... ПоследняяПоследняя
Показано с 11 по 20 из 101

Тема: К561ИЕ19 Детский вопрос

  1. #11
    Аватар для Vladimir_S
    Регистрация
    25.12.2017
    Адрес
    Умань, Украина
    Сообщений
    263
    Позывной
    UR5CAF
    Мне кажется, удобнее подобные "моргалки" делать на сдвиговых регистрах, и одним корпусом скорее всего не получится. Тактовый генератор тоже нужен, кагбе...
    С уважением, Владимир С.


  2. #12

    Регистрация
    28.04.2005
    Адрес
    Московская обл., г. Мытищи
    Сообщений
    3,920
    Позывной
    ex RW3DKC
    Вот такой светофорчик делали. Не совсем правильно по таймингам с желтым, правда.


  3. #13
    Спасибо за помощь. Реально помогли. Если не делом, то советом.
    Что по итогу. Скачал, распечатал и занимаемся с сыном по посоветованной WALET книге. Медленно, но движемся. Это раз. В качестве бонуса за апгрейд, малой сел за изучение СИ и СИ++. Уже прописал в качестве задания расчёт квадратного уравнения (ч/з дискриминант и т.д. если кто подзабыл). Так что светофор будет, но попизже и немного по другому (привет UN-NS)
    Караван идёт.
    Ещё раз, спасибо всем.

  4. #14
    Никогда такого не было и вот опять...

  5. #15
    Что б закончить вопрос -
    Цитата Сообщение от Громов Посмотреть сообщение
    светофор будет, но попизже и немного по другому
    Ниже программа, написанная сыном и видео работы его светофора. Светодиоды на панельке - PD0-PD3. Включение - общий анод на плюсе. Поэтому пришлось "переворачивать " программу. Естественно, программу малой написал с образца. Можно было проще сделать, но сделали специально так, что б понять логические операции и их работу. Я сегодня, ради интереса пол дня уложил, что б переписать эту программу без "детских" болезней. Зато и сам въехал.
    ещё раз - спасибо за советы и подсказки.

    #define F_CPU 1000000UL
    #include <xc.h>
    #include <avr/io.h>
    #include <util/delay.h>


    int main(void)
    {
    while(1)
    {
    int redlong = 5000;
    int greenlong = 5000;
    int yellow = 1000;
    int redshot = 500;
    int greenshot = 1000;
    int pause = 500;
    DDRD |= (1 << PD0);
    DDRD |= (1 << PD1);
    DDRD |= (1 << PD2);

    PORTD &= ~(1 << PD0);
    _delay_ms(redlong);
    PORTD |= (1 << PD0);
    _delay_ms(pause);
    PORTD &= ~(1 << PD0);
    _delay_ms(pause);
    PORTD |= (1 << PD0);
    _delay_ms(pause);
    PORTD &= ~(1 << PD0);
    _delay_ms(pause);
    PORTD |= (1 << PD0);
    _delay_ms(pause);
    PORTD &= ~(1 << PD0);
    _delay_ms(pause);
    PORTD |= (1 << PD0);

    PORTD &= ~(1 << PD1);
    _delay_ms(yellow);
    PORTD |= (1 << PD1);

    PORTD &= ~(1 << PD2);
    _delay_ms(greenlong) ;
    PORTD |= (1 << PD2);
    _delay_ms(pause);
    PORTD &= ~(1 << PD2);
    _delay_ms(pause);
    PORTD |= (1 << PD2);
    _delay_ms(pause);
    PORTD &= ~(1 << PD2);
    _delay_ms(pause);
    PORTD |= (1 << PD2);
    _delay_ms(pause);
    PORTD &= ~(1 << PD2);
    _delay_ms(pause);
    PORTD |= (1 << PD2);

    PORTD &= ~(1 << PD1);
    _delay_ms(yellow);
    PORTD |= (1 << PD1);
    }
    }

    https://www.youtube.com/watch?v=2i4AEv9zKqs

  6. #16
    Цитата Сообщение от Громов Посмотреть сообщение
    Ниже программа, написанная сыном и видео работы его светофора.
    Хорошая иллюстрация того, как не надо делать. И не надо с самого начала приучать к такому. Вся Ваша программа может иметь три строчки. Ну не три, чуть больше.. Подумайте как это сделать и Вы сделаете следующий шаг в программировании. В качестве подсказки - почитайте, что такое функции.
    Последний раз редактировалось Владимир_К; 22.03.2021 в 22:43.

  7. #17

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Ну, для начала ведь очень даже неплохо. Как прочитавший свой первый даташит два года назад, прекрасно понимаю состояние начинающих. Для примера ещё один вариант нерационального решения, его цель - показать, как макросы повышают читаемость кода, и в некоторых случаях справляются с задачами функций. Главное, чтобы не пропало желание учиться, и время оставалось.



    #include <avr/io.h>
    #include <util/delay.h>


    #define INIT() { DDRB |= (1 << PB0 | 1 << PB1 | 1 << PB2); }
    #define GREEN_LIGHT() { PORTB |= (1 << PB0); _delay_ms(3000); PORTB ^= (1 << PB0); }
    #define GREEN_BLINK() { for(uint8_t i=0; i<6; i++) { PORTB ^= (1 << PB0); _delay_ms(500); } }
    #define YELLOW_LIGHT() { PORTB |= (1 << PB2); _delay_ms(1000) ; PORTB ^= (1 << PB2); }
    #define RED_LIGHT() { PORTB |= (1 << PB1); _delay_ms(3000); PORTB ^= (1 << PB1); }
    #define REDYELL_LIGHT() { PORTB |= (1<<PB2 | 1<<PB1); _delay_ms(1000); PORTB &= ~(1<<PB2 | 1<<PB1); }


    int main(void){
    INIT();
    while(1){
    RED_LIGHT(); REDYELL_LIGHT();
    GREEN_LIGHT(); GREEN_BLINK();
    YELLOW_LIGHT();
    }
    }
    Последний раз редактировалось ozforester; 23.03.2021 в 14:08.

  8. #18
    Ну увлечение дефайнами также может быть лишним. Зачем дефайн для инициализации порта, если инициализация в данном случае делается всего один раз. Кроме того, функция может вызываться с аргументами. А может быть совсем в другом файле.
    С чем полностью согласен, так с тем, что Вы, там где надо, воспользовались циклом, а не подряд несколько одинаковых строк. А дефайнить все подряд...

  9. #19

    Регистрация
    14.06.2018
    Адрес
    Санкт-Петербург
    Сообщений
    1,000
    Да, так и написал, что код нерациональный. Просто еще один взгляд.


  10. #20
    Цитата Сообщение от Владимир_К Посмотреть сообщение
    Хорошая иллюстрация того, как не надо делать.
    А вы напишите как надо.

Страница 2 из 11 ПерваяПервая 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вопрос по ГИ-21Б
    от aser в разделе Усилители мощности
    Ответов: 24
    Последнее сообщение: 20.03.2022, 07:10
  2. вопрос по NRD-525
    от Vangog в разделе Трансиверы, приемники КВ/УКВ
    Ответов: 1
    Последнее сообщение: 16.05.2012, 01:19
  3. УС-9 громко пищит транзисторный преобразователь
    от RD3ACE в разделе Старое радио (Ламповые души)
    Ответов: 6
    Последнее сообщение: 22.02.2010, 23:51
  4. П-18
    от Александр Мащуков в разделе Антенная механика
    Ответов: 1
    Последнее сообщение: 30.08.2007, 14:46
  5. Вопрос по Р 326
    от Boris в разделе Технический кабинет
    Ответов: 11
    Последнее сообщение: 19.04.2006, 10:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •