wapster

Msp430. Функция Опроса Клавиатуры

2 сообщения в этой теме

wapster    0

Прощу помощи, т.к. уже весь мозг себе взорвал. Пытаюсь сделать кодовый замок на клавиатуре, состоящей из 3 кнопок. Все примеры в сети только для клавиатур 4х4 или 3х4. Нашёл неплохой пример кода под авр на сайте http://datagor.ru/mi...yjj-zamok..html Хочу попробовать портировать его под msp430, но никак не могу понять функцию опроса клавиатуры.

char key_press()				 // функция опроса клавиатуры
{
while(1)
{
while((~PIND & 0b01111000)!=0); // ничего не делать, пока не отпустят кнопку
for(i=0;i<3;i++)				 // перебор столбцов
{
PORTD=0xff & ~(0x01 << i);
for(j=3;j<7;j++)			 // пребор строк
{
 if((PIND & (0x01 << j))==0) // проверка нажатия на кнопу
 {
 delay_ms(100);			 // пауза для исключения дребезга контактов
 if(buttons[i][j-3]=='*')	 // дополнительная проверка для кнопки смены пароля
 {
 for(k=0;((PIND & (0x01 << j))==0 && k<100);k++)
 {
 delay_ms(50);
 }
 if((PIND & (0x01 << j))==0) // если удерживаем кнопку смены пароля больше 5 сек
 {
 state=1;				 // то устанавливаем состояние 1 (смена пароля)
 return 0;				 // и выходим из функции, возвращая вместо символа ноль
 }
 else return buttons[i][j-3]; // если меньше 5 сек, то возвращаем символ
 }
 if((PIND & (0x01 << j))==0) return buttons[i][j-3]; // возвращаем символ
 }
}
}
}
}

Буду очень благодарен, если кто-нибудь сможет объяснить как переделать это под мою задачу. Смена пароля в моём случае не требуется.

Изменено пользователем wapster

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Zer    553

Зачем вам динамический опрос клавиатуры для 3-х кнопок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: mine1
      Наткнулся на библиотеку hal_xxx.c от TI для MSP430.
      Ни как не могу найти, где взять взять полное семейство этих библиотек. Поделитесь ссылочной  
      hal_UCS.c
    • Автор: Isaev_ivan
      Доброго времени суток всем!
      Недавно возникла потребность передачи данных из микроконтроллера в ПК. Написал код на ассемблере, опираясь на Code_examples от TI, и то, что получилось, приведено ниже:
      #include "msp430F1232.h"
      RSEG CSTACK
      DS16 0
      RSEG CODE
      ;---------------------------------------------------------------------
      ; Установка тактирования от кварца
      ;---------------------------------------------------------------------
      RESET mov #SFE(CSTACK),SP
      mov #WDTPW+WDTHOLD,&WDTCTL ;OSTANOVKA WDT
      BIC #OSCOFF, SR ; tAKTIROVANIE OT KVARCA
      BIS.B #XTS, BCSCTL1
      L1 BIC.B #OFIFG, &IFG1
      MOV #0FFh, R15
      L2 DEC R15
      JNZ L2
      BIT.B #OFIFG, &IFG1
      JNZ L1
      BIS.B #SELM_3, &BCSCTL2
      ;--------------------------------------------------------------------
      ; Инициализация USART
      ;--------------------------------------------------------------------
      mov.b #200,R7
      bis.b #SWRST,&UCTL0;
      bis.b #030h,&P3SEL; P3.4,5 - USART
      bis.b #UTXE0+URXE0,&ME2; Включение передачи и приема
      bis.b #CHAR, &UCTL0; Формат данных 8-разрядный
      mov.b #SSEL0, &UTCTL0; UCLK=ACLK
      mov.b #0100b,&UBR00; 5MHz/19200 = 260.4 = 100000100b
      mov.b #0001b,&UBR10;
      mov.b #0000, &UMCTL0; Без модуляции
      bic.b #SWRST,&UCTL0; Сброс USART не включен
      bis.b #URXIE0+UTXIE0,&IE2
      bis.b #UTXIFG0,&IFG2; Флаг гтовности к прерыванию
      Loop bis.w #LPM3+GIE,SR
      nop
      jmp Loop
      ;-------------------------------------------------------------------
      USART0TX_ISR;
      ;-------------------------------------------------------------------
      mov.b R7, &TXBUF0;
      reti
      ;--------------------------------------------------------------------
      ; Векторы прерываний
      ;--------------------------------------------------------------------
      COMMON INTVEC
      ORG RESET_VECTOR
      DW RESET
      ORG USART0TX_VECTOR
      DW USART0TX_ISR
      END.
      Из программы видно, что я просто хочу передать содержимое R7 в ПК. Трудность заключается в том, что это значение передается не всегда. Запускаю программу, которая считывает информацию с com порта (программа работает 100% правильно), она в тестовый файл записывает значение 200(правильное значение). В следующий раз, после перезапуска программы, в текстовый файл она записывает величину 14. Потом снова 200. И я не пойму, что с ней происходит! Кто знает, отзовитесь пожалуйста
    • Автор: yang
      I am Chinese student, now studying in St. Petersburg. I'm here one year, so i am not very good in Russian,written in English. I would like to know some new friends like programming and design, I want to participate in some professional game in Russia or complete some projects with my friends. If you need, I can help you buy some cheap things in China.If you have spare time or want to learn Chinese, hope you can help me learn the Russian language.This is part of my profile.




    • Гость Duck
      Автор: Гость Duck
      Стоит изучать MSP430?
      Как я понимаю cortex-m он превосходит только энергоэффективностью? Или уже нет?
    • Автор: tim-ua
      Я совсем новичок в МК, столкнулся с проблемой при подключении msp430 к bluetooth модулю. Модуль раньше работал на ардуине но с этой платой ни как не заводится.
      Подключить модуль к планшету получается (в терминале на планшете приходят обратно вводимые символы если замкнуть на модуле RX и TX). Но как дальше его подключить к msp430 я не понял. Пробовал так: P1.1 -> TX, p1.2 -> RX , пробовал менять комбинацию перемычек SW uart \ HW uart.
      Прошивка:

      void setup() { Serial.begin(9600); } void loop() { Serial.println("Test"); delay(100); }
      Возможно ли их вообще подключить?

  • Сообщения

    • Да лампочкой конечно на 220В.   Для начала этот до ума доведи.
    • Зачем вы такие злые? Как могу, так и понимаю... --- В общем и целом запустился, все работает, но... Осликом тыкал без развязки, хорошо не погорел, начинает потом глючить...но это ладно, надо от акума питать... Неисправность довольно непонятная...вышел из строя D015, заменил и все заработало.Проверял диод цешкой, кажет, что рабочий...непонятно. Он соединен не как в схеме, а идет последовательно с D08! Идем дальше... Вентиляторов 2, в момент запуска оба стартуют, потом один (первый) останавливается. Каждый старт, так происходит. Ну думаю, что-то с вентелем случилось. Вот теперь, внимательно, отпаиваю его, а теперь второй стартует и останавливается. Обратно запаиваю, все обратно вернулось...Что за чехарда такая???  И заключительный вопрос. Чем разрядить емкости? В сварочнике у меня стоит 4 банки по 560мкф. Впаивал 3 по 560к 0.5вт не помогает. Сварочник пытается сново запуститься...банки не разряжены!!! или больше резюков надо добавить? -------- Про микру читал...я понимаю, как примерно работает.  Я смотрю на сварочник на схему, снова на сварочник на схему и тут рождается мысль....можно проще сделать и надежнее аппарат...как думаете?
    • Недавича латунь старил в парах нашатыря. Покупается в аптеке. Проверить время выдержки на ненужном кусочке.
    • К примеру такой ШИМ: Его схема такова: Заменив транзисторы на низкоомные (например irfb3207) и пропаяв выводы толстыми шинами, обеспечив ne555 стабильным питанием(батарейка на 12 вольт например к C8), добавив активное охлаждение, добавив ёмкости, схема вытянет и 300 ампер.
    • Дык практически вышеуказанным тросиком, только наматывать его на ось (механизма подачи) в обратном направлении. В качестве рукава для этого тросика возьмите оболочку троса спидометра от какого-нибудь ТАЗика. Да и сам тросик в дело пойдет, только вам  его скорее всего нарастить придется (смотря как трос прокладывать будете от станка и до педали).
    • Если входное напряжение устраивает, то можно попробовать запараллелить 4 штуки. Регуляторами выходного напряжения выставить, чтобы ток делился поровну.