pic basic puls saydımak

Başlatan devreci22, 25 Şubat 2015, 12:36:18

devreci22

opamptan gelen  kare dalgaları (0-100hz )  16f877  ekranın da okumak istiyorum pic basic dilinde nasıl yazabilirim yardımlarınız için şimdiden teşekkürler

ete

Şemanı değiştirmen gerekecek.
Puls girişi olarak PORTB.0 pinini kullan. PORTB.0 kesmesini aktif hale getir. Pals geldikçe program kesme kısmına atlar. Orada pals değerini bir artır.
Hepsi bu.
Ete

devreci22

#2
Hocam programlama derslerinize yeni başladım daha şemayı değiştirdim , programı  örnek yapabilir misiniz bizde üzerinde çalışalım !

ete

Linkte verilen ders notlarında detaylı anlatılmış ve örneği de verilmiş olması gerek.
Biraz çalış halledersin zor değil.
Ete

http://etepic.com/index.php/topic,17.0.html

devreci22

teşekkür ederim hocam sağolun

devreci22

#5
selam  hocam pic e Timer da mı saydırmalıyım hassas olsun diye ben bu kadar çıkabildim
20 mhz osilatör  frekansına göre hesaplayabilirmisiniz ben içinden çıkamadım ? müsait zamanınız da
  0-100 hz arasında PORTB.0 puls varsa HIGH PORTA.0  led yandı diye programı derlemiye uğraşıyorum ama çıkamadım içinden LCD ekranda puls yazdırmak istiyorum yardım edermisiniz  ???

'****************************************************************
'*  Name    : LED_kes.BAS                                      *
'*  Author  : [ete]                    *
'*  Notice  : Copyright (c) 2015 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 28.02.2015                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F628A                      'işlemci 16F628                               
@ DEVICE pic16F628A, WDT_on              'Watch Dog timer açık
@ DEVICE pic16F628A, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628A, PROTECT_OFF         'Kod Protek kapalı
@ DEVICE pic16F628A, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT  'Dahili osilatör kullanılacak
'-------------------------------------------------------------------
DEFINE LCD_DREG     PORTB   'LCD Data bacakları hangi porta bağlı
DEFINE LCD_DBIT     4       'LCD data bacakları hangi bitten başlıyor
DEFINE LCD_EREG     PORTB   'LCD    ENABLE bacağı hangi porta bağlı
DEFINE LCD_EBIT     3       'LCD enable bacağı hangi bite bağlı
DEFINE LCD_RWREG    PORTB   'LCD RW Bacağı hangi bite bapğlı
DEFINE LCD_RWBIT    2       'LCD RW Bacağı hangi bit bağlı
DEFINE LCD_RSREG    PORTB   'LCD RS Bacağı hangi bite bağlı
DEFINE LCD_RSBIT    1       'LCD RS bacağı hangi bite bağlı
DEFINE LCD_BITS     4       'LCD 4 BIT MI 8 BIT MI
DEFINE LCD_LINES    2       'LCD KAÇ sıra yazabiliyor
'-----------------------------------------------------------

TRISB=%00000001                  'Tüm kesmeler aktif
TRISA=%00000000                  'portb giriş diğerleri çıkış yapıldı
CMCON=7                     'comparatör pinleri iptal hepsi giriş çıkış
'---------------------------------------------------------------------------------
I var word

symbol led=portA.0
LCDOUT $FE,1

PAUSEUS 200
ON INTERRUPT GOTO KESME     'Kesme olusursa KESME adlı etikete git
OPTION_REG=%01000000       'dahili pull up dirençleri aktif edildi
INTCON=%10010000               'Tüm kesmeler aktif RB0/INT kesmesi aktif

BASLA:
IF LED=1 THEN
I=0
while LED=1
  I=I+1
  IF I=5000 THEN LED=0
wend 
ENDIF

GOTO BASLA

'--------------------------------------------------------------------------------
DISABLE  'yeniden kesme oluşması önleniyor 
KESME: 'program buraya geldiğinde kesme oluşmuş demektir.
led=1
       INTCON.1=0  'RB0/INT Bayrağı (flag) silindi.
       Resume      'geldiğin yere dön.
   Enable      'kesmeler yeniden aktif.
End


ete

Mesaj içinde bir kod vermeniz gerekince lütfen KOD TAG'ı kullanın. Bu mesajkutusu üzerinde bulunan ve "#" işaretli buton yardımı ile yapılmaktadır. kodunbaşlangıcını (Code) ile bitişinide (/Code) ile yapmaktadır. Bu ifadeler normal parantez değil köşeli parantez içinde olacaktır.

Ne yazıkki, buraya koyduğun kodlar tamamen alakasız sağdan soldan toplanmış şeyler. Sigorta ayarları 16F877 için program 16F628 için. Halbuki yolda gösterdim orada bizzat çalışanbir kod vardı. Onu alıp ufak bir tadilat yapıp kullanacak idin.  Hiç olmazsa KESME etiketinide yerleştirseydin. Hiçmi dikkat etmiyorsun programda ;
ON INTERRUPT GOTO KESME     'Kesme olusursa KESME adlı etikete git
diye bir satır yazmışsın (kopyalamışsın) ama kendine sormamışsın nerede bu KESME etiketi diye. Senin adına üzüldüm doğrusu.
Yazacak çok şey var ama yazmayayım artık bunları buraya.

Ayrıca istediğin şeyi de tam olarak açıklayamadığını düşünüyorum. Birinci istek puls geliyor ise PORTA.0 daki led yansın bunu anladım ama LCD ekranda Puls yazdırmak ne demek oluyor. Pals var mı yazacak ne yazacak program.?
Her neyse ben yalnızca PortA daki ledin yanmasını sağladım. Gerisini kendin hallet artık.
Yazdıklarımı senin yazdıklarınla değiştirdim oradan alabilirsin.

Ete

devreci22

ete hocam kabahatimin farkındayım sizi üzdüğümden dolayı çok  özür dilerim . derslarinize devam

Powered by EzPortal