Şimdi Ara

PIC16F84A YAZILIM YARDIM LÜTFEN

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
3
Cevap
0
Favori
587
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • SAYGIDEĞER ARKADAŞLAR PIC16F84A İLE BİR RÖLE KONTROLÜ DEVRESİ YAPMAK İSTİYORUM.YAZDIĞIM BU PROGRAMI NASIL DEĞİŞTİRMELİYİM Kİ, BİR BUTONA DEVAMLI BASILINCA BİR LEDİ 3- 5 SANİYE YAKIP SÖNDÜREBİLEYİM.BENİM BURDA YAPMAK İSTEDİĞİM, BİR BUTONU BİR RÖLE VASITASIYLA BİRBİRİNE DEVAMLI DEYDİREREK BİR LEDİ YADA BAŞKA BİR DEVREYİ BELLİ BİR SÜRE 3 - 5 SANİYE KADAR YAKIP SÖNDÜRMEK.AŞAĞIDA ÖRNEK BİR YAZILIM YAZDIM.LÜTFEN BU KONU HAKKINDA BANA YARDIMCI OLURSANIZ SEVİNİRİM.

    Bir butona bir kere basınca ledi yakan, iki kere basınca söndüren pic programı.

    ;******************************************************
    ;**bir butona basarak bir ledi yakan pic programıdır **
    ;**03.08.2001. ali sütçü **
    ;******************************************************
    ;RA0 a bagli butona basıldıgında RB0 a bağlı led yanar
    ;RA0 a tekrar basılınca led söner....
    ;------------------------------------------------------
    ;-- ANA PROGRAM BAŞLANGICI-----------------------------
    ;------------------------------------------------------
    LIST P=16F84 ; kullandığımız pic'i tanıttık.
    #INCLUDE<P16F84.INC> ; mplab da bulunan 16f84 dosyalarını çagırdık
    BSF STATUS,5 ; bank 1'e gec
    MOVLW 0XFF ; w<--< 0xff yükledik
    MOVWF TRISA ; portanın hepsi giriş
    CLRF TRISB ; portbnin hepsi çıkış
    BCF STATUS,5 ; bank 0'a geç
    CLRF PORTB ; portb yi sıfırla
    BUTON BTFSC PORTA,0 ; portanın 0'ıncı pini 0' mı?
    GOTO BUTON ; hayırsa tekrar kontrol et
    BUTON1 BTFSS PORTA,0 ; portanın 0'ıncı pini 1' mi?
    GOTO BUTON1 ; hayırsa tekrar kontrol et
    BTFSC PORTB,0 ; led sönükmü?
    GOTO SON ; hayırsa sön'git
    BSF PORTB,0 ; evetse ledi yak
    GOTO BUTON ; tekrar butonu kontrol et
    SON BCF PORTB,0 ; ledi söndür
    GOTO BUTON ; tekrar butonu kontrol et
    END ; programı bitir



    HEX AŞAĞIDA

    :100000008316FF30850086018312860105180628B5
    :10001000051C082806180E280614062806100628AF
    :00000001FF







  • niye bu kadar programı döndrğyorsun ki aşağıdaki şekilde yapsan daha mantıklı bence

    LIST P=16F84 ; kullandığımız pic'i tanıttık.
    #INCLUDE<P16F84.INC> ; mplab da bulunan 16f84 dosyalarını çagırdık
    SAYAC EQU '0C'
    BSF STATUS,5 ; bank 1'e gec
    MOVLW 0XFF ; w<--< 0xff yükledik
    MOVWF TRISA ; portanın hepsi giriş
    CLRF TRISB ; portbnin hepsi çıkış
    BCF STATUS,5 ; bank 0'a geç
    MOVLW 0XFF ; w<--< 0xff yükledik
    MOVWF SAYAC
    CLRF PORTB ; portb yi sıfırla
    BUTON BTFSS PORTA,0
    GOTO BUTON
    DONGU
    DECFSZ SAYAC
    GOTO DONGU
    BSF PORTB,0
    END
  • Selam,

    "BİR LEDİ YADA BAŞKA BİR DEVREYİ BELLİ BİR SÜRE 3 - 5 SANİYE KADAR YAKIP SÖNDÜRMEK"

    bunun için bir zaman döngüsü yapman gerek. Eğer 4Mhz lik kristal kullanıyorsan, bu programa yazdığın her satırın 1 mikrosaniyede işleme alındığı anlamına gelir. bir ledi 3 saniye yakmak için 3 milyon satıra ihtiyacın var, bu da 16F84 için bellek aşımı anlamına gelir. Yani aşağıdaki gibi bir döngüyi ihtiyacın var...Burada W registerine atayacağın sayı 255 (decimal) ı geçemez. Buna göre gecikme istediğin zamana göre döngü sayısını artırabilirsin (3lü döngü, 4lü, 5li, vs...) daha fazla gecikmeler için TMR0 timer registerini kullanman gerekir. iyisimi şimdi ona hiç kasma aşağıdaki senin işini görür...Kolay gelsin

    MOVLW D'25'
    MOVWF SAYAC1
    DON1
    MOVLW D'25'
    MOVWF SAYAC2
    DON2
    MOVLW D'250'
    MOVWF SAYAC3

    DON3
    DECFSZ SAYAC3,F
    GOTO DON3
    DECFSZ SAYAC2,F
    GOTO DON2
    DECFSZ SAYAC1,F
    GOTO DON1




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