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..
Uygun olurmu acaba blog sitemde var
Yeni gördum kodlar ccs c de calisiyor. Atmel bilgim yok
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.
#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)
{
}
}
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.
Led pini okunur, buton ile karşılaştırılır. Sadece debounce
kısmı unutulmamalı...