MPLAB & XC8 Öğreniyorum

Başlatan एक होना, 09 Temmuz 2014, 02:08:16

एक होना

Konuyu Kapata Bilirsiniz.

mehmet

Birden fazla seçenek var;
Biri buton sistemini pull-up dan pull-down' a
çevirmek.
Bir başkası (-ki bunun da bir çok seçeneği var) okunan butonları
tersleyerek lede çıkış vermek.
Örn: LED = (Button == 0) ? 1 : 0

Fakat yanık kalmasını ve farklı butona
basınca yananın sönmesini istiyorsunuz. Bunun için de;
bit işlemleri, while, if, switch-case gibi konuları incelemeniz gerekmekte...
Basılan buton ilgili ledi yakmadan önce tüm ledleri söndürecek, sonra
ilgili ledi yakacak. Algorirma çatısını bu şekide kurabilirisiniz...

http://www.cagataycebi.com/programming/c_programming/c_programming_3.html
Koşullu ifadeler bölümünden itibaren inceleyiniz...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

एक होना

hocam konuyu sildik ten 1 saat sonra cevap yazıyorsunuz nasıl oluyor ? sadece ben mi göremiyorum konuyu ?
garip bir durum.

mehmet

Firefox da açık kalmış. Ben de cevapladım.
Cevabı gönderdikten sonra konunun
silindiğini gördüm. İsterseniz cevabımı
da silebilirim...
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

एक होना

#4
Hocam Şema ve Kodları tekrar ekledim.
vermiş olduğunuz örnek ile LED kapalı konum da buton a basıldığında LED açık konumda.

şema ilk hali





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


// CONFIG1
#pragma config FOSC = INTOSCIO        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF             //on konumundayd? RA5 aktif yapabilmek için kapat?ld? // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
#pragma config BOREN = OFF      // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CCPMX = RB0      // CCP1 Pin Selection bit (CCP1 function on RB0)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// CONFIG2
#pragma config FCMEN = OFF      // Fail-Safe Clock Monitor Enable bit (Fail-Safe Clock Monitor disabled)
#pragma config IESO = OFF       // Internal External Switchover bit (Internal External Switchover mode disabled)


#define _XTAL_FREQ 4000000      // Calisma Frekansi


#define Led PORTBbits.RB0       // RB0 Pini Led olarak Isimlendiriliyor
#define Led1 PORTBbits.RB1      // RB1 Pini Led olarak Isimlendiriliyor
#define Led2 PORTBbits.RB2      // RB2 Pini Led olarak Isimlendiriliyor
#define Led3 PORTBbits.RB3      // RB3 Pini Led olarak Isimlendiriliyor
#define Led4 PORTBbits.RB4      // RB4 Pini Led olarak Isimlendiriliyor

#define Loc  PORTBbits.RB5      // RB5 Pini Loc olarak Isimlendiriliyor
#define Loc1 PORTBbits.RB6      // RB6 Pini Loc olarak Isimlendiriliyor
#define Loc2 PORTBbits.RB7      // RB7 Pini Loc olarak Isimlendiriliyor
#define Loc3 PORTAbits.RA5      // RA5 Pini Loc olarak Isimlendiriliyor
#define Loc4 PORTAbits.RA6      // RA6 Pini Loc olarak Isimlendiriliyor


#define Button PORTAbits.RA0    // RA0 Pini Button Olarak Isimleniriliyor
#define Button1 PORTAbits.RA1   // RA1 Pini Button Olarak Isimleniriliyor
#define Button2 PORTAbits.RA2   // RA2 Pini Button Olarak Isimleniriliyor
#define Button3 PORTAbits.RA3   // RA3 Pini Button Olarak Isimleniriliyor
#define Button4 PORTAbits.RA4   // RA4 Pini Button Olarak Isimleniriliyor




int main(void) {
    ANSEL=0;                    // PORTA Dijital Giris/Cikis. Analog Iptal.
    TRISBbits.TRISB0=0;         // RB0 Pini Cikis Olarak Ayarlaniyor
    TRISBbits.TRISB1=0;         // RB1 Pini Cikis Olarak Ayarlaniyor
    TRISBbits.TRISB2=0;         // RB2 Pini Cikis Olarak Ayarlaniyor
    TRISBbits.TRISB3=0;         // RB3 Pini Cikis Olarak Ayarlaniyor
    TRISBbits.TRISB4=0;         // RB4 Pini Cikis Olarak Ayarlaniyor

    TRISBbits.TRISB5=0;         // RB5 Pini Cikis Olarak Ayarlaniyor
    TRISBbits.TRISB6=0;         // RB6 Pini Cikis Olarak Ayarlaniyor
    TRISBbits.TRISB7=0;         // RB7 Pini Cikis Olarak Ayarlaniyor
    TRISAbits.TRISA5=0;         // RA5 Pini Cikis Olarak Ayarlaniyor
    TRISAbits.TRISA6=0;         // RA6 Pini Cikis Olarak Ayarlaniyor

    TRISAbits.TRISA0=1;         // RA0 Pini Giri? Olarak Ayarlan?yor
    TRISAbits.TRISA1=1;         // RA1 Pini Giri? Olarak Ayarlan?yor
    TRISAbits.TRISA2=1;         // RA2 Pini Giri? Olarak Ayarlan?yor
    TRISAbits.TRISA3=1;         // RA3 Pini Giri? Olarak Ayarlan?yor
    TRISAbits.TRISA4=1;         // RA4 Pini Giri? Olarak Ayarlan?yor



    Led,Led1,Led2,Led3,Led4=0;  // Led(RB0) Sifirlaniyor
    Loc,Loc1,Loc2,Loc3,Loc4=0;
    for(;;){                    // Program Sonsuz Donguye Sokuluyor
    Led=(Button==0)?1:0;                 // Button'un durumunu Led'e Yukle
    Led1=Button1;               // Button'un durumunu Led'e Yukle
    Led2=Button2;               // Button'un durumunu Led'e Yukle
    Led3=Button3;               // Button'un durumunu Led'e Yukle
    Led4=Button4;               // Button'un durumunu Led'e Yukle

    Loc=(Button==0)?1:0;                 // Button'un durumunu Loc'e Yukle
    Loc1=Button1;               // Button'un durumunu Loc'e Yukle
    Loc2=Button2;               // Button'un durumunu Loc'e Yukle
    Loc3=Button3;               // Button'un durumunu Loc'e Yukle
    Loc4=Button4;               // Button'un durumunu Loc'e Yukle
    
                                // Button=0 => Led=0, Button=1 => Led=1
    }                           // Dongu Sonu
}                               // Program Sonsel=0;


link vermiştiniz oradan inceliyorum
teşekkürler.

Gökhan BEKEN

#5
#define Led PORTBbits.RB0       // RB0 Pini Led olarak Isimlendiriliyor
#define Led1 PORTBbits.RB1      // RB1 Pini Led olarak Isimlendiriliyor
#define Led2 PORTBbits.RB2      // RB2 Pini Led olarak Isimlendiriliyor
#define Led3 PORTBbits.RB3      // RB3 Pini Led olarak Isimlendiriliyor
#define Led4 PORTBbits.RB4      // RB4 Pini Led olarak Isimlendiriliyor


kısımlarını

#define Led LATBbits.LATB0       // RB0 Pini Led olarak Isimlendiriliyor
#define Led1 LATBbits.LATB1      // RB1 Pini Led olarak Isimlendiriliyor
#define Led2 LATBbits.LATB2      // RB2 Pini Led olarak Isimlendiriliyor
#define Led3 LATBbits.LATB3      // RB3 Pini Led olarak Isimlendiriliyor
#define Led4 LATBbits.LATB4      // RB4 Pini Led olarak Isimlendiriliyor



değiştirmenizi tavsiye ederim.
Çıkış vereceğiniz pinleri LAT olarak kullanın. Mesela PORTB1 pinine bağlı ledi yakmak istiyorsanız: LATBbits.LATB1=1; yazın.
Ama giriş olan pinleri(buton okuyacağınız pinleri) "port" ile okuyun. Mesela  Mesela PORTB3'e bağlı butonu okumak istiyorsanız if(PORTBbits.RB3==1) veya if(PORTBbits.RB3==0) olarak kullanın.

mesaj birleştirme:: 10 Temmuz 2014, 22:00:59

Led=(Button==0)?1:0;                 // Button'un durumunu Led'e Yukle

yazarsanız "Button" 0 olduğu zaman "Led" 1 olur,
bu uzun yöntemdir.
Led=Button;

deseniz yine aynı işi yapar.
Özel mesaj okumuyorum, lütfen göndermeyin.

एक होना

#define _XTAL_FREQ 4000000      // Calisma Frekansi


#define Led LATBbits.LATB0       // RB0 Pini Led olarak Isimlendiriliyor
#define Led1 LATBbits.LATB1      // RB1 Pini Led olarak Isimlendiriliyor
#define Led2 LATBbits.LATB2      // RB2 Pini Led olarak Isimlendiriliyor
#define Led3 LATBbits.LATB3      // RB3 Pini Led olarak Isimlendiriliyor
#define Led4 LATBbits.LATB4      // RB4 Pini Led olarak Isimlendiriliyor 


#define Loc  LATBbits.LATRB5      // RB5 Pini Loc olarak Isimlendiriliyor
#define Loc1 LATBbits.LATRB6      // RB6 Pini Loc olarak Isimlendiriliyor
#define Loc2 LATBbits.LATRB7      // RB7 Pini Loc olarak Isimlendiriliyor
#define Loc3 LATBbits.LATRA5      // RA5 Pini Loc olarak Isimlendiriliyor
#define Loc4 LATBbits.LATRA6      // RA6 Pini Loc olarak Isimlendiriliyor


#define Button PORTAbits.RA0    // RA0 Pini Button Olarak Isimleniriliyor
#define Button1 PORTAbits.RA1   // RA1 Pini Button Olarak Isimleniriliyor
#define Button2 PORTAbits.RA2   // RA2 Pini Button Olarak Isimleniriliyor
#define Button3 PORTAbits.RA3   // RA3 Pini Button Olarak Isimleniriliyor
#define Button4 PORTAbits.RA4   // RA4 Pini Button Olarak Isimleniriliyor


hocam bu şekilde mi olacak ?


*************
if(PORTBbits.RB3==1) veya if(PORTBbits.RB3==0)

int main(void)  altında mı kullanacağım

Gökhan BEKEN

#define Loc  LATBbits.LATRB5      // RB5 Pini Loc olarak Isimlendiriliyor
#define Loc1 LATBbits.LATRB6      // RB6 Pini Loc olarak Isimlendiriliyor
#define Loc2 LATBbits.LATRB7      // RB7 Pini Loc olarak Isimlendiriliyor
#define Loc3 LATBbits.LATRA5      // RA5 Pini Loc olarak Isimlendiriliyor
#define Loc4 LATBbits.LATRA6      // RA6 Pini Loc olarak Isimlendiriliyor

kısmında yazım hatası var.
doğrusu böyle olacak:
#define Loc  LATBbits.LATB5      // RB5 Pini Loc olarak Isimlendiriliyor
#define Loc1 LATBbits.LATB6      // RB6 Pini Loc olarak Isimlendiriliyor
#define Loc2 LATBbits.LATB7      // RB7 Pini Loc olarak Isimlendiriliyor
#define Loc3 LATBbits.LATA5      // RA5 Pini Loc olarak Isimlendiriliyor
#define Loc4 LATBbits.LATA6      // RA6 Pini Loc olarak Isimlendiriliyor

siz, fazladan 'R' harfi koymuşsunuz.

Yaptığımız bütün operasyonlar, bir fonksiyon içinde olmalıdır.

int main(void)
fonksiyonu bizim ana fonksiyonumuz olduğu için orda kullanabilirsiniz. Dilerseniz yeni bir fonksiyon oluşturup bu işlemleri orda da yapabilirsiniz.
Özel mesaj okumuyorum, lütfen göndermeyin.

एक होना

teşekkürler hocam. değişiklikleri yapıp sonucu yayınlarım.