itfaiyeci_26
Üye
- Katılım
- 1 Kas 2006
- Mesajlar
- 30
- Puanları
- 1
- Yaş
- 40
Merhaba ustalar yapmaya uğraştığım 16f84 te iki farklı gecikme devresi kullanmak yani RA0 2 sn yanıcak 10 dk sönük kalacak bunu yapmak için nasıl bir kod kullanmam gerekiyor. Aşağıdaki gibi bir uygulam denedim fakat olmadı acaba hatam nerede ????
Yardımcı olursanız sevinirim....
Yardımcı olursanız sevinirim....
Kod:
;****************************************************************************
; PROGRAM BASLANGICINDA ISLEMCI ILE ILGILI TANIMLAMALAR YAPILMALIDIR
;****************************************************************************
TANIMLAMALAR:
list p=16F84 ; DERLEYICIYE ISLEMCI TANITILIR
#include <p16F84.inc> ; PIC16F84 TANIMLAMA DOSYASI
__CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _XT_OSC
;****************************************************************************
;
;****************************************************************************
DEGISKENLER:
SAYAC4 EQU H'0020'
SAYAC1 EQU H'0021'
SAYAC2 EQU H'0022'
SAYAC3 EQU H'0023'
msb EQU H'0024'
lsb EQU H'0025'
BASLANGIC:
PORTLARI_AYARLA:
CLRF PORTB ; RESET portb(port a yı sil)
CLRF PORTA ; RESET portA(port b yi sil)
BSF STATUS, RP0 ; BANK 1 GECILIR
MOVLW B'00000000' ; RA0-5=GIRIS
MOVWF TRISA
MOVLW B'00000000' ; RA0-5=GIRIS
MOVWF TRISB
BCF STATUS, RP0 ; BANK 0 GECILIR
;****************************************************************************
; makina deneme 2 zaman gecikmesi
;****************************************************************************
PROGRAM:
;1.ADIM
MOVLW B'00000001' ;AKU YE SABIT BIR SAYI YUKLENIR
MOVWF PORTA ;AKUDEKI SAYI PORTB YE YUKLENIR
CALL SAAT
;2.ADIM
MOVLW B'00000000' ;AKU YE SABIT BIR SAYI YUKLENIR
MOVWF PORTA ;AKUDEKI SAYI PORTA YA YUKLENIR
CALL BEKLET_100MS
;3.ADIM
MOVLW B'00000010' ;AKU YE SABIT BIR SAYI YUKLENIR
MOVWF PORTA ;AKUDEKI SAYI PORTA YA YUKLENIR
CALL SAAT
;4.ADIM
MOVLW B'00000000' ;AKU YE SABIT BIR SAYI YUKLENIR
MOVWF PORTA ;AKUDEKI SAYI PORTA YA YUKLENIR
CALL BEKLET_100MS
GOTO PROGRAM ;ALGORITMA TEKRARLANIR
; 4MHz CLOCK ICIN BEKLETME RUTINLERI
BEKLET_100MS:
bekle_10_dk
movlw 0x2A
movwf SAYAC1
movlw 0x16
movwf SAYAC2
movlw 0x24
movwf SAYAC3
movlw 0x04
movwf SAYAC4
Bekle_0
decfsz SAYAC1, f
goto $+2
decfsz SAYAC2, f
goto $+2
decfsz SAYAC3, f
goto $+2
decfsz SAYAC4, f
goto Bekle_0
nop
nop
RETURN
SAAT
DLY ;YAKLASIK 100 MILI SANIYE
CLRWDT
movlw D'600'
movwf msb
GOTO DLY1
DLY1
movlw D'300'
movwf lsb
DLY2
decfsz lsb,F
goto DLY2
decfsz msb,F
goto DLY1
RETURN
END
Moderatör tarafında düzenlendi: