Şimdi Ara

sayıcı ve timer

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
16
Cevap
0
Favori
488
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • PIC C compiler ile (windows PCW) PLC lerde yaptığımız gibi sayıcı ve timer beraber kullanmak istedim ...
    C ile yazmaya yeni başladık... Biraz zorlandım... Şu programı nasıl yazarız... (16F84A) ile

    RA0 girişine bağlı butona 10 kere basıldıktan (10.seferden) 10 sn sonra RB0 a bağlı LED yansın...
    Teşekkürler...



  • İşine yararmı bilmiyorum asm'de 10 defa basınca led yakma


    ;================================
    ;=======DENEME===================
    ;================================
    LIST P=16F84
    INCLUDE "P16F84.INC"
    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
    SAYAC EQU h'0C'
    ORG 0X00
    GOTO BASI
    BASI
    CLRF PORTB
    BSF STATUS,5
    CLRF TRISB
    MOVLW h'FF'
    MOVWF TRISA
    BCF STATUS,5
    BASLA
    MOVLW d'10'
    MOVWF SAYAC
    TEST
    BTFSC PORTA,1
    GOTO TEST
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    DECFSZ SAYAC,F
    GOTO TEST
    BSF PORTB,0
    END




    Diğer örnek;




    ;========PROGRAM.ASM=============,
    LIST P=16F84
    INCLUDE "P16F84.INC"
    __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
    SAYAC1 EQU h'0C'
    SAYAC2 EQU h'0D'
    MEM EQU h'0E'
    CLRF PORTB
    BSF STATUS,5
    CLRF TRISB
    BSF TRISA,1
    BCF STATUS,5
    CLRF MEM
    TEKRAR
    BTFSC PORTA,1
    GOTO TEKRAR
    INCF MEM
    MOVF MEM,W
    SUBLW d'10'
    BTFSC STATUS,2
    GOTO YAK
    CALL GECIKME
    GOTO TEKRAR
    YAK
    MOVLW h'FF'
    MOVWF PORTB
    DONGU
    GOTO DONGU
    ;================GECIKME PROGRAMI=======
    GECIKME
    MOVLW h'FF'
    MOVWF SAYAC1
    DONGU1
    MOVLW h'FF'
    MOVWF SAYAC2
    DONGU2
    DECFSZ SAYAC2,F
    GOTO DONGU2
    DECFSZ SAYAC1,F
    GOTO DONGU1
    RETURN
    END



    < Bu mesaj bu kişi tarafından değiştirildi MK102 -- 19 Ağustos 2006; 10:02:19 >




  • Burdaki işlemlerde registere 10 desimal sayısını atayıp,her basışta "1"azaltıp registeri ,register "0" olunca ledi yakma...Alttaki programla ise, status registerinin 2bitini(zeroflag) test ederek sonunda ledi yakıyor...
  • Bunu anladım...Sağol ...

    PİC C compilerde de de olsa çok işime yarayacak...
    Bu dil ile program yazan varmıdır aramızda...
  • c ile pic programlıyorum ama hi tech te derliyorum ona gore bi program yazdım. fikir vermesi acisindan

    #include "htc.h"
    #include "delay.c"

    int counter=0,i=0;

    void main(void) {
    TRISA = 0xFF;
    TRISB = 0;
    while(1){
    if(RA0 == 1)
    counter++;
    if(counter == 10){
    for(i=0;i<10000;i++)
    DelayMs(1);
    RB0 = 1;
    break;
    }
    }
    }

    gibi düşündüm. yanlis yazmis olabilirim.
  • DEVICE 16F84A 'KULLANILACAK PICI SEÇ
    REMARKS ON


    D1 VAR BYTE
    D2 VAR BYTE

    TRISB=%00000000
    TRISA=%00011111
    PORTB=0 ' CIKISLARI SIFIRLA



    DONGU1:
    BUTTON PORTA.1,0,1,0,D1,1,DONGU2 'BUTON BASILI .SINYAL VARSA DONGU 2 GIT
    GOTO DONGU1

    DONGU2:
    DELAYMS 500
    BUTTON PORTA.1,0,1,0,D1,1,DONGU3 'BUTON BASILI .SINYAL VARSA DONGU 3 GIT
    GOTO DONGU2

    DONGU3:
    DELAYMS 500
    BUTTON PORTA.1,0,1,0,D1,1,DONGU4 'BUTON BASILI .SINYAL VARSA DONGU 4 GIT
    GOTO DONGU3

    DONGU4:
    DELAYMS 500
    BUTTON PORTA.1,0,1,0,D1,1,DONGU5 'BUTON BASILI .SINYAL VARSA DONGU 5 GIT
    GOTO DONGU4

    DONGU5:
    DELAYMS 500
    BUTTON PORTA.1,0,1,0,D1,1,DONGU6 'BUTON BASILI .SINYAL VARSA DONGU 6 GIT
    GOTO DONGU5


    DONGU6:
    HIGH 0
    BUTTON PORTA.2,0,1,0,D1,1,DONGU7 'BUTON BASILI .SINYAL VARSA DONGU 7 GIT
    GOTO DONGU6

    DONGU7:
    LOW 0
    GOTO DONGU1

    END


    BURADA PORTA.1 BÜTONUNA 5 DEFA BASINCA ÇIKIS 1 OLUYOR.SEN DÖNGÜLERİ ARTTIRARAK ÇIKIŞIN YANMASINI AYARLAYABİLİRSİN.PORTA2 İSE ÇIKIŞI RESETLİYOR.




  • Teşekkürler ,arkadaşlar...
    Bir de şunu sorayım...
    Çok sayıda giriş -çıkış ,örneğn bir PLC de yaptığımız geniş çaplı bir programın benzerini ( Mesela 8 giriş ,16 çıkış olan bir program) Hangi dilde daha rahat ve hatasız kodlama imkanımız fazladır... PİC BASIC , PICC veya Asembler .... Fikriniz nedir...
  • Port çoğatma işlemi yapsan nasıl olur?Çıkışlar için(PIC 16F84 -13pin var giriş yada çıkış olarak kullanılabiliniyor..) PIC'te asm'den kolayı yoktur herhalde
    http://www.elektromania.net/forum/forum_posts.asp?TID=242&PN=1



    < Bu mesaj bu kişi tarafından değiştirildi MK102 -- 20 Ağustos 2006; 10:21:49 >
  • asm.. diyorsunuz ... Ok...
  • MK 102 SAYICI PROGRAMINI DENEDİN Mİ? A1 girişine her basıldığında PORTB 0 LED i yanıyor...
    10 uncu seferde değil.Benmi yanlış yaptım acaba...
  • ilk program çok hassas butonlarda çok az ark oluşması bile butona 10 defa basılmış gibi algılıyor..Bunu nop komutunu artırarak çözülebilir..Ama alttaki program kesin çalışır denedim
    ben ikinci programda h"FF" yani b"11111111" yüklediğimde hepsi yanar bunu,binary olarak değiştirebilirsin..
    Asm benim tercihimdi ama professionel arkadaşlar bu konuda ne düşünüyor bilmiyorum onlarda görüşlerini yazarsa çok iyi olur...



    < Bu mesaj bu kişi tarafından değiştirildi MK102 -- 21 Ağustos 2006; 19:27:42 >
  • Yukarıda yazdığım basıc dilinde programı çalıştırıp öyle forma ekledim.Ben çoğu programı denedim.Basıc biraz daha mantıklı geldi.Bazen basit bir uygulamayı asm de birçok satırda yaparken basıc te bir kaç satırda yapabiliyorsun.Tabi her programlama dilinin getirmiş olduğu artılar ve eksiler var.Onun için bu program iyidir veye bu program kötüdür diyemem.Bunda kişilerin alışkanlıkları ön planda oluyor.Yani kimine kolay gelen bir program bir başkasına kolay gelebilir.Bunu anlayışla karşılamak lazım.Kolay gelsin.
  • basıc te yazdığın programı deneyemedim... Croncwil mi neydi bi editör vardı,kuacaktım bulamadım bilgisayarımda... MPLAB da BASIC derleyebiliyormuyuz... Bildiğimden değil ama.MPLAB IDE açtım yazdığın kodları kopyaladım.. project ten Build All seçeneğini yıkladım "nothıng to build ..." mesajı verince uğraşmadım...Croncwil i kurarsam deneyeceğim...
    Teşekkürler...
  • MPLAB dada oluyor am ben pbp_editör kullanıyorum.o daha kolay geliyor.programı yazıyorsun ekranın yukarısında test düğmesi var ona basıyorsun.eğer devreni mantıklı yaptıysan yeşil işareti veriyor.yanlışsa kırmızı.sonrada yazdığın programı pıcup programıyla pıc atıyorsun.
  • Ok. Programı buldum... PBP editor programını yazdım hata vermedi... Proteusda devreyi çizdim... HEX i aldım... Yalnız 5 basışta LED yanmadı..Burada 5 basma sonra PORT B çıkışını 1 yapan komut hangisi?
  • Sağolun form sayesinde az öğrendik galiba Bende bir program yaptım.... 5 sayma sonra çıkış veriyor... Sizin programlara uyarladım...Çalışıverdi...


    DEVICE 16F84A 'KULLANILACAK PICI SEÇ



    D1 VAR BYTE
    D2 VAR BYTE
    S VAR BYTE
    Led0 var PortB.0
    TRISB=%00000000
    TRISA=%00001111

    PORTB=0 ' CIKISLARI SIFIRLA
    Butonkontrol:
    D1=0: D2=0
    Button PortA.1,0,254,0,D1,1,say
    Button PortA.0,0,254,0,D2,1,LEDsondur
    Goto Butonkontrol


    say:
    S=S+1
    IF S=5 THEN LEDyak
    Goto Butonkontrol

    LEDyak:
    High Led0
    pause 200
    Goto Butonkontrol

    LEDsondur:
    Low Led0
    Goto Butonkontrol
    End
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.