;program yazmayı biliyorsanız istenen gayet basit birşey.
;Örneğin RB0 butonuna basıldığında RC0 (çıkışta) 1kHz kare dalga
;üreten program
;BAŞLANGIÇTA KULLANILAN CİHAZ VE BACAKLARIN GİRİŞ ÇIKIŞ TANIMLAMALARI YAPILMALIDIR
KNT1 BTFSC PORTB,0 ;RB0 BUTONUNA BASILDI MI?
GOTO KNT1 ;HAYIR, TEKRAR KONTROL ET
;EVET ARTIK BUTONA TEKRAR BASILANA
;KADAR RC0 DA 1 kHz KARE DALGA ÜRETECEĞİZ
KNT2 BTFSC PORTB,0 ;RB0 BUTONUNA TEKRAR BASILDIMI?
CALL K_DALGA ;HAYIR ÖYLEYSE KARE DALGAYI BİR PERİYOT ÜRET
;K_DALGA 1 kHz KARE DALGA ÜRETEN ALT PROGRAMIMIZ
;EVET RB0 BUTONUNA BASILDI,
; BCF PORTC,0 ; KARE DALGA ÇIKIŞINI SIFIR YAP
;BUNU YAPMAYA GEREK YOKTUR ÇÜNKÜ KARE DALGA ÜRETİCİ
;RB0 I 0 YAPARAK DÖNER
GOTO KNT1 ;KARE DALGANIN TEKRAR ÜRETİLİP ÜRETİLMEYECEĞİNİ
; KONTROL ETMEK İÇİN İLK KONTROL NOKTASINA GİT
;------------------ALTPROGRAMLAR-------------------------------------------------
K_DALGA
BSF PORTC,0 ;KARE DALGA ÇIKIŞINI 1 YAP
CALL BEK_500_US ;500 MİKROSANAYİ BEKLEME ALTPROGRAMINI ÇAĞIR
BCF PORTC,0 ;KARE DALGA ÇIKIŞINI 0 YAP
CALL BEK_500_US ;500 MİKROSANİYE BEKLE
RETURN ;ÇAĞRILDIĞIN YERİN BİR ALT SATIRINA DÖN
BEK_500_US ;500 US BEKLEME ALTPROGRAMI BUNU KENDİNİZ YAZARSINIZ
;.
;.
;.
RETURN
;----------------------------------------------------------------------------------
END
;ŞİMDİ EĞER BUTONA TEKRAR BASILDIKTAN 10 DARBE SONRA SİNYALİN KESİLMESİ İSTENİYORSA
;YAPACAĞIMIZ DÜZENLEME ŞUDUR PROGRAMIN BÜYÜK KISMINI AYNEN KULLANIYORUZ
;SADECE BUTONA TEKRAR BASILDIMI KONTROLÜNÜ DEĞİŞTİRECEĞİZ
;BUTONA TEKRAR BASILDIYSA KARE DALGA ÜRETİMİNİ DİREK SONLANDIRMAYACAĞIZ
;ARAYA BİR SAYAC EKLEYİP 10 PERİYOT DAHA KARE DALGA ÜRETTİRECEĞİZ
SAYAC EQU 20H ;GİBİ BİR TANIMLAMA İLE KULLANILAN
;DENETLEYİCİDE UYGUN YERE SAYAC TANIMLANMALIDIR
KNT1 BTFSC PORTB,0 ;RB0 BUTONUNA BASILDI MI?
GOTO KNT1 ;HAYIR, TEKRAR KONTROL ET
;EVET ARTIK BUTONA TEKRAR BASILANA
;KADAR RC0 DA 1 kHz KARE DALGA ÜRETECEĞİZ
KNT2 BTFSS PORTB,0 ;RB0 BUTONUNA TEKRAR BASILDIMI?
GOTO SON_10 ;EVET,SON 10 U ÜRETMEYE GİT
CALL K_DALGA ;HAYIR ÖYLEYSE KARE DALGAYI BİR PERİYOT ÜRET
;K_DALGA 1 kHz KARE DALGA ÜRETEN ALT PROGRAMIMIZ
GOTO KNT_2 ;BUTONA TEKRAR BASILDIMI KONTROLÜNE GİT
SON_10
MOVLW .10
MOVWF SAYAC
KNT3 CALL K_DALGA ;1 PERİYOT KARE DALGA ÜRET
DECFSZ SAYAC,F ;SAYACI BİR EKSİLT 0 OLDUMU KONTROL ET
GOTO KNT3 ;HAYIR 0 OLMADI YANİ 10 PERİYOT TAMALANMADI
;DEVAM ;EVET SAYAC=0 OLDU YANİ BUTONA BASILDIKTAN SONRA
;10 PERİYOT KARE DALGA ÜRETİLDİ
GOTO KNT1 ;KARE DALGANIN TEKRAR ÜRETİLİP ÜRETİLMEYECEĞİNİ
; KONTROL ETMEK İÇİN İLK KONTROL NOKTASINA GİT
;ALTPROGRAMLAR OLACAK TABİKİ, YAZARSINIZ
;3. SORU İSE YİNE BENZER YÖNTEMLE HALLEDİLİR, YAPAMAZSANIZ YİNE YARDIMCI OLMAYA ÇALIŞIRIM