Tek tuş ile 3 fonksiyon (Tek Tık, çift tık, Enter) + Debounce Ozelligi

Başlatan z, 24 Aralık 2013, 21:13:21

z

Bu yakinlarda z.lib kutuphanesine dahil edecegim LCD rutinlerini yazmaya henuz baslamistim ki LCD menulerde gezinmek icin ileri, geri ve sec gibi en az 3 butona ihtiyac oldugunu gordum.

STM32F4 Discovery de sadece 1 kullanıcı butonu oldugundan portlalara iki tane daha buton bağlamak yerine mavi butona 3 görev atadim.
Debounce free buton okuma rutinleri nerede ise 0 CPU yükü ile ASM olarak yazildi. Yani hand made.

Tek tık, Menülerde İLERLE yada GERİLE.
Çift tık ilerleme yönünü toggle et.
Uzun sureli basış ENTER.

Z.LIB kutuphane dosyasini indirmek icin tiklayin

LCD rutini de z.lib'e dahil edildiginde BIOS rutinlerimiz bitmis olacak ve artik daha ust seviyede programlar yazmaya baslayabilecegiz.

#include "STM32F4xx.h" 
#include "Zystem.h"

#define Mavi     0x8000
#define Kirmizi  0x4000
#define Kavunici 0x2000
#define Yesil    0x1000
#define TekTik   1
#define CiftTik  2
#define Enter    3


unsigned short Delay;

void BirMiliSaniye()
{
      if(Delay) Delay--;   
}

int main()
{
      while(1)
        {         
          switch(getch())
            {                  
              case TekTik: {
                              GPIOD->BSRRL=Yesil;           
                              break;
                           } 
              case CiftTik:{
                              GPIOD->ODR^=Mavi;             // Cift tik yapilinca mavi led toggle edilsin
                              break;
                           } 
              case Enter:  {
                              GPIOD->BSRRL=Kirmizi;
                              break;
                           } 
            } 

          if(Buton) // getch fonksiyonu basilan tusu Buton degiskenine yaziyor.
            {  
              Delay=500; while(Delay);            
              GPIOD->BSRRH=Kirmizi|Yesil;
            }
        }     
}


MVI 0017
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kapadokyali5042

arkadaslar bu uygulamayı yaparken boyle bi hata alıyorum sebebi ne  olabilir



kapadokyali5042

bu ozelligi kullanmam gerekiyorda yardımcı olursanız sevinirim