Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: franke - 17 Kasım 2017, 21:31:50

Başlık: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: franke - 17 Kasım 2017, 21:31:50
bir buton ile led yakmak istiyorum.. butona bir kes basıldığında led yansın.. ikinci kez basıldığında led sönsün.. şeklinde
arkadaşlar yardımlarınızı bekliyorum..
Başlık: Ynt: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: sifirzero - 19 Kasım 2017, 15:49:26
Uygun olurmu acaba blog sitemde var
Başlık: Ynt: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: sifirzero - 19 Kasım 2017, 15:51:40
Yeni gördum kodlar ccs c de calisiyor. Atmel bilgim yok
Başlık: Ynt: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: tbt777 - 19 Kasım 2017, 18:13:17
if(butonDurumu == 1)
{
    butonSayacı = butonSayacı + 1;
    if(butonSayacı%2)
         ledON();
    else                     
         ledOFF();
    while(butonDurumu);
}


şeklinde olabilir fakat bunun kötü yanı butona basılı tutulan süre boyunca programın while döngüsünde takılı kalması olacaktır.


daha iyi bir yöntem, butonu harici kesme tetikleyicisi olarak kullanmak olabilir.
Başlık: Ynt: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: crazy - 20 Kasım 2017, 15:09:15
#define F_CPU 16000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define LED_ON PORTB |= (1<<PORTB5)
#define LED_OFF PORTB &=  ~(1<<PORTB5)
#define LED_TOGGLE PINB |= (1<<PINB5)
#define BUTON_BASILI_ISE !(PINB & (1<<PINB7))


ISR(PCINT0_vect)
{
if (BUTON_BASILI_ISE)
{
LED_ON;
}
else
{
   LED_OFF;
}
}



int main(void)
{
    DDRB |= (1<<DDB5);
    DDRB &=  ~(1<<DDB7);
    PCMSK0 |= (1<<PCINT7);
    PCICR |= (1<<PCIE0);
    sei();
    while (1)

    {



}

    }
Başlık: Ynt: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: fide - 20 Kasım 2017, 20:09:55
Merhaba.
Kodu denemedim ama şu yöntem işe yarar.
Ccs c için


Buton a0, led b0 pinine bağlı olduğunu varsayıyorum.



Unsigned int8 eski;
Unsigned int8 yeni;




Void main()
{
eski=yeni;
delay_ms(5);
yeni= input_pin(pin_a0);
if ((eski!=yeni)&[/size]&((yeni==1))
{
output_toggle(pin_b0);
}


}
buton durumunu oku. Durum değişirse ve butona basılı ise ledin durumunu değiştir. Butonu bırakma durumunu dikkate alma.


Kolay gelsin.
Başlık: Ynt: 1buton ile led yakmak (c dili ya da assembly)
Gönderen: mehmet - 21 Kasım 2017, 22:35:20
Led pini okunur, buton ile karşılaştırılır. Sadece debounce
kısmı unutulmamalı...