HC-06 ile PIC16F88

Başlatan TheHowitzer, 01 Mayıs 2015, 03:55:43

TheHowitzer

Arkadaşlar merhaba,

Ön not: Öncelikle belirtmeliyim ki, bu başlığı ASM alanına açıyorum. Fakat kullandığım dil ASM değil. Ben XC8 kullanıyorum. Ne yazık ki forumda "XC8" için ayrılan bir yer yok. O yüzden ben de en yakın hissettiğim öteki dile, ASM bölümüne açtım konuyu. Eğer kurallara aykırı ve kabul edilemez bir davranış ise yaptığım, o halde özür dilerim. Ama bilgi bilgidir diye düşünüyorum. Üstelik sorum "arkadaşlar şunu nasıl yapıyoz ya el atsanıza" tadında bir soru da değil. Günlerdir araştırdığım bir konu ile ilgili.
Ek olarak, zamanında Ete hocama bir mailde "XC8" kodu gönderdiğimde, "Sen niye ASM gibi analog okumaya çalışıyorsun?" gibi bir tepki almıştım. Demek ki XC8 ile ASM az da olsa benzer.

Konuya geçecek olursam...

Arkadaşlar, bir kaç gündür HC-06 aracılığı ile, Android cep telefonumu kullanarak, PIC16F88 ile iletişime geçmeye ve LED yakıp/söndürmeye çalışıyorum.
Uzun süredir PIC16F88 datasheet okuyorum. Fakat öncesinde yine datasheet okuyarak, PIC16F877A ile modülü iletişime geçirmeyi başardım. Bu iletişim kusursuz değildi. LED bazen isteğime göre yanıp/sönüyor, bazen ise komut almıyordu. Onun da niçin öyle olduğunu anlamadım. Lakin çözmek istediğim
Fakat olay PIC16F88'e geldiğinde, lamba hiç bir şekilde yanmadı. Hiç bir şekilde iletişime geçemedim.
Bu konuda sizden yardım istiyorum. Kodumu aşağıda paylaşacağım. Eğer yardımcı olursanız gerçekten çok sevinirim.

Saygılarımla

Kod:

void generateLight(unsigned short counter); //

void main ()
{
    unsigned short SerialResult;  // this will contain the serial result

    OSCCON=0b01101110; // 4mhz

    TRISB= 0b00100100; // Rx and Tx are inputs

    TXSTAbits.BRGH = 1; // high speed baud rate generator will be used

    SPBRG = 25; // Setting the baud rate to approximately 9600

    TXSTAbits.SYNC = 0;  // asynchronous mode selected

    RCSTAbits.SPEN = 1; //serial port enabled

    RCSTAbits.CREN = 1; //continious receive enabled

    while(1)
    {
        __delay_us(5); // waiting for pic to settle

        while (PIR1bits.RCIF == 0) // waiting for serial to be completed
        {
            __delay_us(1);
        }

     SerialResult = RCREG; // reading the RCREG

    generateLight(SerialResult); // lighting LEDs accordingly
    }
}


void generatelight(unsigned short bluetooth)
{
    if(bluetooth == 0x01)  // set RB0 when read 1
    {
        RB0=1;
        RB1=0;
    }

    else if (bluetooth == 0x00) // turn off all LEDs when read 0
    {
        RB0=0;
        RB1=0;
    }
    else if (bluetooth == 0x02) // turn on all LEDs when read 2
    {
        RB1=1;
        RB0=1;
    }
}

~ENES~

Ustam xc8 nasil bir dildir hic duymadim doğrusu nerede öğretiliyor onuda merak etmiyor değilim:) soruya gelirsek mantik olarak baktigimda sanki usart kesmesinin gerekli ayarlari yapilmamis gibi anladim programdan .. Gerekli tanimlamalari yapip bir daha deneyip sonucu yazarsan ona gore tekrar bakalim

Enes
ALLAH'a teslim olmuş bir insan ! Ne sultan tanir , ne sadrazam !

rodyum

XC8 derleyicisi Hi-tech C nin yeni versiyonu gibi bişey. microchip firması kendi C derleyicisi ile Hi-tech'i satın aldıktan bir zaman sonra bu ikisini birleştirerek yeni bişey çıkardı. Bit sayısına göre 3 farklı türü var. XC8, XC16, XC32. Hi-tech ise artık desteklenmiyor.
bu ASM ile değilde eski Hi-tech C ile bire bir uyumlu. forumda ilgili bölüm mevcuttu.

yazılımında ise register ayarlarını iyi kontrol etmelisin. bunlar PIC türleri arasında asla uyumlu değildir.

Powered by EzPortal