Pic16F877 ile Switch ile LED kontrolü (Yardım)

shy

Üye
Katılım
16 Ara 2006
Mesajlar
8
Puanları
1
Yaş
40
Merhaba Arkadaslar...
Yapacak oldugum bir Elektoronik Dart oyunu için başlandıç aşamasındayım...
Ancak Koymus oldugum Tus' a karsilik, istedigim LED' leri kontrol edemiyorum...

Anahtar Kapali iken L2, açık iken ise L1 yanmali...

Ancak sürekli olarak L1 yanıp sönüyor...
Nerede hata yapıyorum, yardımcı olabilirseniz sevinirim...
İyi geceler...

Kod:
**********************************************************
DEFINE LCD_DREG PORTB 'LCD data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RWREG PORTB 'LCD RW Bacağı PortB de bağlı
DEFINE LCD_RWBIT 2 'LCD RW Bacağı 2. bite bağlı
DEFINE LCD_RSREG PORTB 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 1 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2 'LCD 2 sıra olarak çalışıyor.

PAUSE 200 ' LCD nin kullanıma hazır hale gelebilmesi için gerekli süre

LCDOUT $FE,1 'Önce Ekranı siliyoruz.
LCDOUT $FE,2," ************" 'ilk sıra baştan itibaren yazdırıyoruz.
LCDOUT $FE,$C5,"******" 'ikinci satıra yazdırıldı.

TRISE=%001 'E.0 pini giriş diğerleri çıkış olarak ayarlandı.

SYMBOL TUS= PORTE.0 ' PortE.0 pinine sembol ismi olarak TUS adı verildi.
SYMBOL LED1= PORTE.1
SYMBOL LED2= PORTE.2 ' PortE.2 pinine sembol ismi olarak LED adı verildi.

BASLA:
IF TUS= 0 THEN ' Anahtar kapalı ise
HIGH LED1 ' LED'i yak
LOW LED2
ELSE ' Değilse
HIGH LED2 ' LED'i söndür
LOW LED1
ENDIF ' IF sorgulaması sonu
GOTO BASLA ' BASLA isimli etikete git.
END

End 'Program sonu
 
Bazi IDE ler sizin yerinize isleri buyuk olcude yapsa da guvenmemek lazim.
- MCU modeli belirlenmemis,
- Configuration bitleri tanimlanmamis,
- TRIS ve PORT REG ayarlari yapilmamis (PBP da Lcd Define' lar yapilinca TRIS ayarlari yapiliyor mu idi hatirlamiyorum);(TRIS_E icin ayar yapilmis PORT_E icin ilk deger atamasi yapilmamis) ,
- PortB ve PortE gibi birden fazla fonksiyonu olan portlarda mod secimi ve secilen moda gore ayarlamalarin yapilmasi lazim.
Ilgili MCU ya ait *.pdf dosyalarini incelemenizi tavsiye ederim.
 
@katana hocam bu işleri iyi bilir , uyarılarının her birine dikkat et.

Mesela PORTD kullansa idin aşağıdaki gibi olacaktı.Neden ki ? :rolleyes:

Nasıl kırpışıyor ? Osiloskopun yokmu bağlayıp bakıverseydin.Sinyal şekli arıza bulmada çok çok önemlidir.

MCSP da pic seçimi ide den yapılınca belirtmeye gerek kalmıyor.Lcd tanımlamalarını da kendisi yapıyor.Bu yüzden pratik ama kabiliyetleri sınırlı.İlk başlayanlar için heveslendirici.:eek:

Örnek bir projeden alıntı :

Kod:
@ DEVICE PIC16F877, XT_OSC,WDT_OFF,BOD_ON,CPD_OFF
@ DEVICE PIC16F877, PWRT_OFF,LVP_OFF,PROTECT_OFF

define OSC 20 
Define LCD_DREG  PORTD                                             
Define LCD_DBIT  4
Define LCD_RSREG PORTD
Define LCD_RSBIT 2
Define LCD_EREG  PORTD             
Define LCD_EBIT  3
'############################################
ON INTERRUPT GoTo KESME   
ADCON1=7                           'veya ADCON1=%0111
OPTION_REG=%00000000 
INTCON=%10010000  	               'Kesmeler-RB CHANGE aktif     
TRISB=%00000111 : TRISC=%11111111 : TRISD=%00000000                
'#############################################
SAY   var word 
SAYI  VAR word
SAYIH VAR WORD
SAYIL VAR WORD
 CLEAR
 LCDOUT $FE,1
'############################################# 
SAYICI:       
      LCDOUT $FE,$80," HEDEF : ",DEC5 SAYI
      LCDOUT $FE,$C0," YER     ",DEC5 SAY 
   goto SAYICI          
'##############################################
DISABLE            'kesmeler pasif
KESME:
  SAY=SAY+1 
   INTCON.1=0       'RB0/INT Bayrağı silindi
     Resume         'geldiğin yere dön
       Enable       'kesmeler aktif  
     END 
'###############################################
 

Ekli dosyalar

  • Sorun.rar
    19.2 KB · Görüntüleme: 8
Son düzenleme:

Forum istatistikleri

Konular
129,877
Mesajlar
930,959
Kullanıcılar
452,744
Son üye
ProCan

Yeni konular

Geri
Üst