Показано с 1 по 6 из 6
  1. #1
    Без позывного
    Регистрация
    21.01.2006
    Сообщений
    28
    Поблагодарили
    0
    Поблагодарил
    0

    mega16 - дуб или ?

    здравствуйте всем, возник такой вопрос по atmege16, собрал аппаратную клавиатуру чтобы после нажатия клавиши получить готовое число и это число должен был принять через порт "С" микроконтроллер, все было неплохо когда проверял отладку в PROTEUSe, но когда зашил в микросхему пошли не понятки, нажимаешь кнопку видно что клавиатура сформировала число, но порт С упорно не принимает байт. потом проэксперементировал с одним битом порта PINC.0, с одним битом работает. в helpe на микросхему вроде нчего такого не нашел. число выставляет клавиатура положительным сигналом (т.е. единички), вот небольшой пример:
    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
    PORTC=0x00;
    DDRC=0x00;

    while (mem==1)
    {
    if (PINC==15) {lcd_clear(); delay_ms(50);
    printe();};//очистка экрана (15)

    if (PINC==22) {lcd_clear(); kdn=1;test=0;
    kdе();};//ввод (22)
    }


  2. #2
    Low Power
    Регистрация
    05.12.2005
    Адрес
    Волжский, Волгоградская обл.
    Возраст
    69
    Сообщений
    59
    Поблагодарили
    1
    Поблагодарил
    0
    Ну вопервых уверен что (mem) всегда = 1 чтобы быть в цикле?
    Во вторых, что за схема?
    Если просто каждая кнопка подает единицу на свой вывод PINC
    тогда есстественно работать не будет.
    В этом случае надо проверять шестнадцатиричные числа типа
    1 2 4 8 16 ...
    Лучше проверять не число а разряд, типа:
    if(PINC & 0x1) {
    //------------ нажата кнопка на ножке PINC0
    ...
    }
    А еще правильнее присвоить каждому разряду порта С имя. Тогда так.
    В хидере:
    #define BUTTON_1 0
    #define BUTTON_2 1
    ...
    #define BUTTON_8 7

    В программе:
    if(PINC & (1<<BUTTON_2)) {
    //----------- нажата кнопка 2
    ...
    }
    А если кнопки называть не BUTTON а по функциональному назначению
    тогда и коментариев не надо, и так понятно будет.

  3. #3
    Без позывного
    Регистрация
    21.01.2006
    Сообщений
    28
    Поблагодарили
    0
    Поблагодарил
    0
    не совсем правильно, клавиатура аппаратная как я уже сказал ранее и формирует байт (т.е. от 1 - 255), процессор только считывает готовое значение на своем порту и далее идет по программе.
    но выяснилось еще вот что, порт С не реагирует на то если подать на его выход все единички например PORTC=255 на выходе полное молчание

  4. #4
    Low Power
    Регистрация
    05.12.2005
    Адрес
    Волжский, Волгоградская обл.
    Возраст
    69
    Сообщений
    59
    Поблагодарили
    1
    Поблагодарил
    0
    А перенастроить порт на выход незабыл?
    DDRC = 0xFF

    Кстати вот, как раз в тему:
    http://www.telesys.ru/wwwboards/mcon...es/63444.shtml

  5. #5
    Без позывного
    Регистрация
    21.01.2006
    Сообщений
    28
    Поблагодарили
    0
    Поблагодарил
    0
    зачем его настраивать на выход когда он должен работать на вход?

  6. #6
    Low Power
    Регистрация
    05.12.2005
    Адрес
    Волжский, Волгоградская обл.
    Возраст
    69
    Сообщений
    59
    Поблагодарили
    1
    Поблагодарил
    0
    Как зачем?
    А это кто писАл:
    >но выяснилось еще вот что, порт С не реагирует на то если подать на его выход все единички например PORTC=255 на выходе полное молчание
    Я на это и отвечал.
    А вообще на телесисе возможно правильно посоветовали проинить все порты, даже если они не используются. Я с такой байдой не сталкивался, но возможно в каких то кристалах это присутствует.

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×
Рейтинг@Mail.ru
eXTReMe Tracker


Похоже, что вы используете блокировщик рекламы :(
Форум QRZ.RU существует только за счет рекламы, поэтому мы были бы Вам благодарны если Вы внесете сайт в список исключений!
как отключить
×