Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
PIC Programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
PIC Programlama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Mart 2011 Pazartesi

16F877A işlemcisinde input bacağı tanımlama




void main(){
TRISA = 0;
// 0x01 ile TRISB nin 0. bacağını giriş olarak belirledik
TRISB = 0x01;
TRISC = 0;
TRISD = 0;
TRISE = 0;

PORTA = 0;
// giriş bacağına anlık olarak ilk başlangıçta 1 değeri atıyoruz ama
// sinyal gelir gelmez input bacağı yeni değerine kavuşur.
PORTB = 0b00000001;
PORTC = 0;
PORTD = 0;
PORTE = 0;

while(1){
// Eğer bacaktaki sinyal 1 ise (bacakta voltaj varsa)
if(PORTB.f0==1){
// tüm bacakları high a çekiyor
PORTB.f1 = 1;
PORTB.f2 = 1;
PORTB.f3 = 1;
PORTB.f4 = 1;
PORTB.f5 = 1;
PORTB.f6 = 1;
PORTB.f7 = 1;
}else{
// bacakta voltaj yoksa low a çek
PORTB = 0;
}
}
}

// NOT: LM78L Direnci sıcaklık ölçmek içindir. 3 bacaklı olup birisi 5V ikincisi
// topraktır. Sıcaklık değiştikçe üstünden geçen akım miktarıda doğrusal değiştiği için
// potansiyel fark (V = I x R) ın karşılık düştüğü değere göre sıcaklığı ölçebiliriz.
// Potansiyel farktaki bu değişim sıcaklığın kaç olduğunu verecektir.
// www.digchip.com/data/1090/LM78L06.pdf

2 Mart 2011 Çarşamba

16F877A İşlemcisiyle karaşimşek



void main(){
unsigned int i=1;


// ww1.microchip.com/downloads/en/devicedoc/39582b.pdf
// adresindeki datasheetin 6. sayfasında 40 pinlik işlemcimizin
// portlarının bacaklarını görebiliriz.
// A portunda 6 bacak olduğunu görüyoruz.
//
// A portunun yönünü belirlemek için TRISA registerı ile ulaşıyoruz.
// Tüm portları Portları OUTPUT olarak ayarlıyoruz.
TRISA = 0x00;
TRISB = 0x00;
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;

// 1) A portunun f0 dan f5 e kadar nın da 0 verelim
PORTA.f0 = 0;
PORTA.f1 = 0;
PORTA.f2 = 0;
PORTA.f3 = 0;
PORTA.f4 = 0;
PORTA.f5 = 0;

// 2) Yukarıdakini kısaca tüm portun bacaklarını 0 lamak için aşağıdaki gibi:
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;

// 1 deki durumda tek bir bacak (1 bit) olduğu için 0 değerini atamamız yetti.
// 2 deki durumda ise 8 biti hexadecimal olarak 0x00 ile tüm bacakları 0 ladık.
// Eğer B portunun (8 bacaklı) son iki bacağı 1 ama diğerlerini 0 lamak
// istersek 0b00000011 (binary olarak) ya da 0x03 (hexadecimal) olarak ayarlayabiliriz.

while(1)
{
i=1;
while(i<128)
{
PORTB=i;
i=i<<1;
delay_ms(100);
}
i=128;
while(i>0)
{
PORTb = i;
i = i>>1;
delay_ms(100);
}
}
}

16F877A İşlemcisiyle LED yakıp söndürme


void main(){
// Eski programlama dili olduğu için önce değişkenlerimizi tanımlayalım
int i = 0;

// Tüm portlarımızı çıkış olarak ayarlıyoruz
// neticede led yakıp söndüreceğiz
TRISA = 0x00;
TRISB = 0x00;
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;

// Tüm port bacaklarının aşlangıç değerlerini vereceğiz
// Önceki programlamadan üstünde değer kalmış olma ihtimaline karşı
// Yukarıda ANALOG ayarlama registerını kullanmadığımız için hepsi dijital
// Bu portların bacaklarının çıkış sinyaline 0 veriyoruz.
PORTA = 0x00;
PORTB = 0x00;
PORTC = 0x00;
PORTD = 0x00;
PORTE = 0x00;

delay_ms(5000); // Çalıştıktan 5 saniye sonra


// sonsuz döngüde i == 5 oluncaya kadar
while(i<5){
// RD2 bacağına sinyal verelim
PORTD.F2 = 1;
// Yandığında biraz yanık kalsın ledimiz
delay_ms(500);


// Sinyali keselim
PORTD.F2 = 0;
// Södüğünde de biraz sönük kalsın ledimiz
delay_ms(500);

i++;
}
}