16F877a Sönük Led Problemi

Başlatan micelow, 16 Mayıs 2015, 10:16:21

micelow

Merhabalar,
Basit bir soru olacak ama devrede RB0 portuna bağlı bir led mevcut. Aşağıdaki kodu yazdığımda led sorunsuz olarak yanıp sönüyor.
While(1)
{
RB0=1;
__delay_ms(1000);
RB0=0;
__delay_ms(1000);
}


Fakat bu ledi RE0 da bulunan butonla kontrol etmek için aşağıdaki kodu yazdığımda ise butona basılmadığında led parlak yanarken butona basıldığında ise yalnızca parlaklığı düşüyor tam olarak sönmüyor.
Buton için RE0 pullup durumda ölçü aletiyle kontrolünü yaptım butona basıldığında düzgün bir şekilde 0 a çekiyor. Proteusta düzgün çalışırken devrede böyle bir problem var.

int main()
{
  TRISE=1;
  TRISB=0;
  ADCON1.PCFG=4;

  RB0=1;
  if(RE0==0)
  {
      RB0=0;
  }
}
"Bir tek şeye ihtiyacımız var çalışkan olmak."

vitruvius

Devre şemanı görebilir miyiz? Koda buton için debounce algoritması ekleyip deneyin bir de.

Tagli

Kodda sonsuz döngü yok. Her seferinde sonlanıyor ve PIC baştan başlıyor. Baştan başlayınca da ilk yaptığı şey tekrardan LED'i yakmak oluyor. Yani butona basmaz isen sürekli olarak yan emri gidiyor. Basarsan bir sön bir yan emri gidiyor gibi düşünebilirsin. Bu durumda da sönük yanıyor.
Gökçe Tağlıoğlu

ipek

C'den anlamam ama RE port'u analog ihtiva ediyor,digital hale getirdinizmi ?

mehmet



Bu kodlar test içindir, gerçekte kullanmak için
düzenlenmesi gerekir. Debounce gecikmesi
ilave etmek gerekir...

/* 
 * File:   main.c
 * Author: Mehmet
 *
 * Created on 16 Mayıs 2015 Cumartesi, 14:00
 * MCU : PIC16F877a
 */

#include <stdio.h>
#include <stdlib.h>
#include <xc.h>

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG
#pragma config FOSC = HS        // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = ON       // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
#pragma config WRT = HALF       // Flash Program Memory Write Enable bits (0000h to 0FFFh write-protected; 1000h to 1FFFh may be written to by EECON control)
#pragma config CP = ON          // Flash Program Memory Code Protection bit (All program memory code-protected)

#define _XTAL_FREQ  8000000

int main(void)
{
  TRISE = 0x01;   // RE0 giriş
  TRISB = 0x00;   // B portu çıkış
  PORTB = 0x00; // B portuna 0 degeri gönder

// PCFG = 0x04
//    A7  A6  A5   A4  A3  A2  A1   A0  Vref+  Vref-                
//    D   D   D    D   A   D   A    A   Vdd    Vss
  ADCON1bits.PCFG = 0x04; //

  while(1)
  {
    if(PORTEbits.RE0 == 0)   // RE0 sıfır ise RB0 sıfır, değilse bir
    {
          PORTBbits.RB0 = 0;
    }
    else PORTBbits.RB0 = 1;
  }
}
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

sifirzero

arkadaşlar bir sorum olacak.pic devresinde nötr söktüğümde led yanıyor.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

burç tankal

Nötr'den kastınız Gnd midir? Devrenizin resmini paylaşsanız daha kolay olacak gibi duruyor.

mehmet

Başlangıç olarak benim verdiğim örneği denediniz mi?
Ayrıca her ne olursa olsun Vcc ucunu sökmeden GND ucunu
sökmemeye gayret ediniz. Başka bir bağlantı üzerinden
şase bulmaya çalışır. Başka cihaz, komponent, vs. üzerinden
devre tamamlanır ve hasar göerebilir...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

sifirzero

nötr demek istediğim pic in vss ucuna girelen eksi uç gnd.led yanmıyor simülasyonda çalışıyor çok güzel ama bread borda kurdum çalışmıyor.daha sonra buton basınca led yanan devrekurdum çalışıyor herşey ama.diğer kurduğum devre 40 derece devreyi açcak devre kurdum 40 derece kadar led yancak ama led yanmıyor.18b20 kullandım.
sifirzero.blogspot.com [email]sifirrzero@gmail.com[/email] iman hem nurdur hem kuvvettir

mc_307

Led le mcu arasına direnc taktınmı. Ayrıca devreye kaç volt veriyorsun. 5v u 7805 gibi bir regülator le besleyin.
Bugün buna benzer bisey geldi başıma. Bir devrede röle aktif olunca yanıp deaktif olunca sönecek bir led bağlıydı. Yanlış voltaj sonucu devrede hasar oluşmuştu. Gerekli değişiklikleri yaptım. Role falan hepsi calıstı ama role kapalıyken bu ledde kapanması gerekirken kısık yaniyordu. Role aktifkende normal yaniyordu. İslemciyi yenileyince düzeldi.
Yani bazen pin calışsa da bozulmuş olabiliyor.