CCS C PIC PROGRAMLAMA B4...B7 PİNLERİNDE DEĞİŞİKLİK KESMESİ

Katılım
24 Mar 2011
Mesajlar
6
Puanları
1
Yaş
37
Merhaba arkadaşlar,

CCS C'de yazdığım aslında basit olması gereken işlem;

Butonlar ile sayaçları 1 artırmak. B4 pinine bağlı olan butona basılınca cycle değeri 1 artsın, B5 pinine bağlı butonda ise zaman değeri 1 artsın ve bu değişiklikleri LCD'de göstersin.

Bunun için kesme kullanmam gerekiyor diye düşünüyorum.

B4 e bağlı butona basınca cycle değeri 1 artıyor, ardından bastığım da değişiklik olmuyor.

Eğer B5'e bağlı butona B4'ten sonra basarsam hem cycle hem de zaman 1 artıyor.

Flag'lerle alakalı bir durum gibi.
Adsız.png


Yazdıklarımı paylaşıyorum, yardımlarınızı bekliyorum.
 

Ekli dosyalar

  • Yeni Metin Belgesi.txt
    1 KB · Görüntüleme: 23
Aşağıdaki şekle göre yaptım oldu kendi isisinde lcd bacaklarını değiştirirsen iyi olur...

resim adresi....

Rb0W9Z.png


#include <18F45K20.h>
#device ADC=16

#FUSES NOWDT //No Watch Dog Timer
#FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(crystal=20000000)


#include <LCD.C>
int cycle,zaman,sayici;

#INT_RB
void RB_isr(void)
{
if(input(pin_b4))
{
cycle=cycle+1;
}

if(input(pin_b5))
{
sayici=sayici+1;
}
printf(lcd_putc,"\f Cycle Time Sayici Reset Manuel\n %d %d sn %d",cycle,zaman,sayici);
}


#define LCD_ENABLE_PIN PIN_D0
#define LCD_RS_PIN PIN_D1
#define LCD_RW_PIN PIN_D2
#define LCD_DATA4 PIN_D4
#define LCD_DATA5 PIN_D5
#define LCD_DATA6 PIN_D6
#define LCD_DATA7 PIN_D7

#include <lcd.c>

void main()
{
lcd_init();

enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);

lcd_init();
cycle=3;
zaman=2;
sayici=7;
printf(lcd_putc,"\f Cycle Time Sayici Reset Manuel\n %d %d sn %d",cycle,zaman,sayici);
while(TRUE)
{

}

}
 
Teşekkürler Tacettin. Dediğin gibi yazılım doğru basit olan şematikte ölümcül bir bağlantı hatası yapmışım ve butonu çalıştıramamışım. Peki kesmelerin içerisinde delay veya printf kullanamıyor muyuz?
 
kullanılmaması iyi olur. bayraklar yardımı while döngüsü içerisinde kontrol edersen çok daha güzel olur...
 

Forum istatistikleri

Konular
127,969
Mesajlar
913,977
Kullanıcılar
449,614
Son üye
Canipk

Yeni konular

Geri
Üst