Herkese selamlar,
Bu konuda PIC16F628A mikrokontrolcüsü kullanarak, bir butona veya 5V lojik sinyale her basışta (tetiklendiğinde) çıkıştaki röleyi ON / OFF (Mandalama - Toggle) yapan örnek bir proje paylaşıyorum. İlk basışta röle çeker, ikinci basışta bırakır.

Bu konuda PIC16F628A mikrokontrolcüsü kullanarak, bir butona veya 5V lojik sinyale her basışta (tetiklendiğinde) çıkıştaki röleyi ON / OFF (Mandalama - Toggle) yapan örnek bir proje paylaşıyorum. İlk basışta röle çeker, ikinci basışta bırakır.
Devre Bağlantı Detayları:
- Tetik / Buton Girişi: RA0 (17. Pin) -> 5V tetik veya buton girişi için uygundur.
- Röle Çıkış Pini: RB0 (6. Pin) -> Sürücü devre (transistör/optokuplör) üzerinden röleye bağlanır.
- Kritik Not: 16F628A'da PORTA pinlerinin analog modda başlamaması için yazılım içinde CMCON = 0x07; tanımı yapılmıştır.
C Kaynak Kodu (Kenar Tetiklemeli Toggle)
Kod:
void main() {
unsigned char role_durumu = 0; // Değişkeni fonksiyonun en başına aldık
// Tüm analog birimleri kapat, PORTA ve PORTB tamamen dijital olsun
CMCON = 0x07;
VRCON = 0x00;
// Pin yönleri: RA0 giriş (tetik), PORTB çıkış (röle/LED)
TRISA = 0b00000001;
TRISB = 0b00000000;
// Başlangıçta çıkışımız 0 (kapalı)
PORTB.F0 = 0;
while(1) {
// RA0 pinine +5V sinyal geldi mi?
if (PORTA.F0 == 1) {
Delay_ms(50); // Kararlılık (debounce) gecikmesi
// Kısa bir süre sonra hâlâ basılı mı diye kontrol et
if (PORTA.F0 == 1) {
// Rölenin durumunu tersle (Aç / Kapat)
role_durumu = !role_durumu;
PORTB.F0 = role_durumu;
// Tetiğin (butonun) bırakılmasını bekle
while (PORTA.F0 == 1) {
Delay_ms(10);
}
// Çift tetiklenmeyi önlemek için kısa bekleme
Delay_ms(50);
}
}
}
}
PIC16F628A HEX Dosyası:
Aşağıdaki HEX kodunu kopyalayıp bir metin belgesine yapıştırın ve uzantısını .hex olarak kaydederek (Örn: toggle_role.hex) doğrudan programlayıcınızla entegre yükleyebilirsiniz:
Kod:
:
:100000000428FF3FFF3FFF3F03138312A001073087
:100010009F0083169F010130850086018312061020
:1000200001300505F1007108013A031D60284130D7
:10003000FB00FF30FA00FB0B1E282128FA0B1E28BC
:100040001B28C330FA00FA0B2328000001300505F5
:10005000F1007108013A031D602820080130031DDA
:100060000030F0007008A000003070180130060663
:100070000139860601300505F1007108013A031DBA
:1000800051280D30FB00FF30FA00FB0B48284B28AD
:10009000FA0B48284528F330FA00FA0B4D280000E7
:1000A0003A284130FB00FF30FA00FB0B58285B2850
:1000B000FA0B58285528C330FA00FA0B5D280000C7
:1000C00010286128FF3FFF3FFF3FFF3FFF3FFF3FFB
:02400E00303F41
:00000001FF

Eklentiler
Son düzenleme:
