<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FxDev &#124; ße Different Everytime! &#187; 8051</title>
	<atom:link href="http://www.fxdev.org/etiket/8051/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fxdev.org</link>
	<description>FxDev &#124; This Evolution is Revolution</description>
	<lastBuildDate>Wed, 01 Feb 2012 22:16:58 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Oradan Buradan</title>
		<link>http://www.fxdev.org/oradan-buradan/</link>
		<comments>http://www.fxdev.org/oradan-buradan/#comments</comments>
		<pubDate>Fri, 14 May 2010 22:58:50 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[bubble]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[experiment]]></category>
		<category><![CDATA[kod]]></category>
		<category><![CDATA[örnek]]></category>
		<category><![CDATA[programcılık]]></category>
		<category><![CDATA[sort]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=720</guid>
		<description><![CDATA[Meslek seçiminizi elektronik olarak belirlemişseniz kesinlikle öğrenmeniz gereken şeylerden biri program yazmaktır. Bu yazma işlevini çok ya da az kullanırsınız o size kalmış, fakat eninde sonunda bir satırdan sonra &#8216;;&#8217; koyacaksınızdır. Bir programcının ana dili C&#8217;dir. C, aynı bir suya benzer. İsterseniz siz bu su ile kola, kahve ya da gazoz yapıp, onu kullanın fakat [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox"  title ="Bubble Sort" href="http://www.fxdev.org/wp-content/uploads/2010/05/bubble_sort.jpg"><img src="http://www.fxdev.org/wp-content/uploads/2010/05/bubble_sort.jpg" alt="" title="Bubble Sort" width="200" height="200" class="alignright size-full wp-image-721" /></a>Meslek seçiminizi elektronik olarak belirlemişseniz kesinlikle öğrenmeniz gereken şeylerden biri program yazmaktır.<br />
Bu yazma işlevini çok ya da az kullanırsınız o size kalmış, fakat eninde sonunda bir satırdan sonra &#8216;;&#8217; koyacaksınızdır.<br />
Bir programcının ana dili C&#8217;dir. C, aynı bir suya benzer. İsterseniz siz bu su ile kola, kahve ya da gazoz yapıp, onu kullanın fakat ne olursa olsun her programcı C&#8217;yi ucundan, köşesinden bilir, bilmelidir.<br />
Bizlere üniversite birinci sınıfın, ikinci yarısında öğretilen bu dili başta anlamak çok zor olsa da, mantığını oturttuktan sonra, oldukça kolaylaştığını, tüm C severler bilecektir.<br />
C dili ile uğraşanların çoğu, fonksiyon çağırma, diziler ve çok az da olsa pointer&#8217;lar ile uğraşırlar. Tüm bu işlemlerin kullanılabileceği, en çok sorulan program ise girilen sayıyı sıralayan programdır.<span id="more-720"></span></p>
<p>Günümüzde oldukça fazla sıralama algoritması olsa da, ben aşağıda bubble sort algoritmasının bir örneğini sizlere sunuyorum. Sınavlarında kullanmak isteyenlere yardımcı olabilir ki bizlere zamanında 8051 dersinin finalinde sormuşlardı. Program aşağıdakinin neredeyse aynıydı, tek farkı başta 8051 için seri port ayarları yapıyor oluşumuzdu.<br />
8051 demişken, bu müzelik mikrodenetleyiciyi kullanmak isteyen arkadaşlar için, timer kullanıp, tam olarak milisaniyelik ve mikrosaniyelik gecikmeler yaratan delay.h kütüphanesini de aşağıda bulabilirsiniz.</p>
<p>Son olarak sitemi takip edenler için, dönemin sonuna doğru güzel projeler yayınlayacağım, şimdilik bu kodlarla idare edelim..</p>
<p><b>bubble_sort.c dosyası:</b></p>
<pre class="brush: c">// Fırat Deveci
// www.FxDev.org
// Bubble sort kullanarak sayıları dizen programdır.
// Kullanımı serbesttir.

#include "stdio .h"
#include "stdlib .h"

void girdirici(int duzelt[], unsigned char boyut)
{
    unsigned char i;
    for(i=0;i< (boyut) ;i++)
    {
        printf("Duzenleyeceginiz %d. sayiyi giriniz: \n",i+1);
        scanf("%d", &#038;duzelt[i]);
    }
}

void duzeltici(int duzelt_2[] , unsigned char boyut)
{
    unsigned char i,j,temp;

    for(i=0;i<(boyut-1);i++)
    {
        for(j=0;j<(boyut-1);j++)
        {
            if(duzelt_2[j]>duzelt_2[j+1])
            {
                temp=duzelt_2[j+1];
                duzelt_2[j+1]=duzelt_2[j];
                duzelt_2[j]=temp;
            }
        }
    }
}

void yazdirici(int yazdir[] , unsigned char boyut)
{
    int i;
    for(i=0;i< (boyut) ;i++)
    {
        printf("dizi[%d]=%d\n", i, yazdir[i]);
    }
}

void main(void)
{
    int boyut,a,i;
    char b;
    printf("Sayi Duzenleme Programi\n");
    printf("Firat DEVECI\n");
    printf("http://www.fxdev.org\n\n");

    for(;;)
    {
        printf("Kac sayi duzenleyeceginizi giriniz: \n");
        scanf("%d", &#038;boyut);

        int dizi[boyut];
        girdirici(dizi,boyut);   /*Fonksiyonlarla çağırmak daha kolay*/
        duzeltici(dizi,boyut);
        yazdirici(dizi,boyut);

        printf("\nBaska sayilar kullanmak istiyor musunuz?\nE/H?\n");
        /*program tekrar kullanılmak isteniyor mu istenmiyor mu diye soruluyor*/
        scanf("%s", &#038;b);

        if(b=='e' || b=='E')
        {
            a=0;
        }
        else if(b=='H' || b=='h')
        {
            break;
        }
        else
        {
            printf("Yanlis secenek girdiniz program sonlandirilacak\n");
            break;
        }
    }
    printf("Programdan cikmak icin bir tusa basiniz");
}</pre>
<p><b>8051 için delay.h dosyası:</b>
</pre>
<pre class="brush: c">//Firat Deveci
//www.fxdev.org

void Delay_Us(unsigned char m)		//Mikrosaniyelik gecikmeler
{
	TMOD=0x02;
	TR0=0;
	TL0=0x00;
	TH0=256-m;
	TF0=0;
	TR0=1;
	while(!TF0);
	TF0=0;
	TR0=0;
}

void Delay_Ms(unsigned int a)		//Milisaniyelik gecikmeler
{
	int i;
	for(i=0;i< (a) ;i++)
	{
		TMOD=0x01;
		TH0=0xFC;
		TL0=0x17;
		TF0=0;
		TR0=1;
		while(!TF0);
		TR0=0;
		TF0=0;
	}
}</pre>
</pre>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/oradan-buradan/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/oradan-buradan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>8051: Müzelik Mikrodenetleyici</title>
		<link>http://www.fxdev.org/8051-muzelik-mikrodenetleyici/</link>
		<comments>http://www.fxdev.org/8051-muzelik-mikrodenetleyici/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 19:39:39 +0000</pubDate>
		<dc:creator>FxDev</dc:creator>
				<category><![CDATA[İnceleme]]></category>
		<category><![CDATA[Mühendislik]]></category>
		<category><![CDATA[8051]]></category>
		<category><![CDATA[adc]]></category>
		<category><![CDATA[atmel]]></category>
		<category><![CDATA[CCP]]></category>
		<category><![CDATA[deney]]></category>
		<category><![CDATA[ege üniversitesi]]></category>
		<category><![CDATA[laboratuar]]></category>
		<category><![CDATA[mikrodenetleyici]]></category>
		<category><![CDATA[mikroişlemci]]></category>
		<category><![CDATA[pwm]]></category>

		<guid isPermaLink="false">http://www.fxdev.org/?p=704</guid>
		<description><![CDATA[Elektrik Elektronik Mühendisliği ikinci sınıfın, ikinci döneminde gördüğüm 8051, kullanımı da kendi gibi basit bir mikrodenetleyicidir. 1980 yılında üretilen bu mikrodenetleyici, dijital elektronik dersi alanların bileceği CISC mimari yapısına sahip ki bu mikrodenetleyiciyi kontrol eden çok fazla komut demek; 8 bitlik veri işleme özelliğine sahip 8051&#8242;de ise bu sayı 255 komuta kadar çıkabilmekte. Klasik bir [...]]]></description>
			<content:encoded><![CDATA[<p><a class="lightbox"  title ="8051" href="http://www.fxdev.org/wp-content/uploads/2010/03/8051.jpg"><img src="http://www.fxdev.org/wp-content/uploads/2010/03/8051.jpg" alt="" title="8051" width="259" height="132" class="alignright size-full wp-image-705" /></a>Elektrik Elektronik Mühendisliği ikinci sınıfın, ikinci döneminde gördüğüm 8051, kullanımı da kendi gibi basit bir mikrodenetleyicidir. 1980 yılında üretilen bu mikrodenetleyici, dijital elektronik dersi alanların bileceği CISC mimari yapısına sahip ki bu mikrodenetleyiciyi kontrol eden çok fazla komut demek; 8 bitlik veri işleme özelliğine sahip 8051&#8242;de ise bu sayı 255 komuta kadar çıkabilmekte. </p>
<p>Klasik bir 8051&#8242;in (örneğin AT89C52) iki adet dış kesme, bir adet seri port kesmesi ve iki adet timer kesmesi ile toplam beş kesmeye ve 256 Byte RAM ile 8 kByte ROM&#8217;a sahiptir. Tek ek komponent olarak ise USART birimi ile günümüzün PIC ve ATMEGA gibi popüler mikrodenetleyicilerinin yanında oldukça sönük kalmaktadır. Bir örnekle açıklamak gerekirse, potansiyometre bilgisine göre doluluk oranı değişen bir sinyal yapmaya çalıştığımızda 8051 için ayrı bir ADC entegresi ve içine ise stabil bir kod yazılması gerekmektedir. Oysa bunu Pic ile yapmış olsak sadece ADC&#8217;si olan bir PIC kullanmamız ve doluluk oranı değişecek sinyali ise yine PIC&#8217;in CCP biriminden oluşturmamız yeterli olacaktır.<span id="more-704"></span></p>
<p>Her ne kadar 8051, genç nesil mikrodenetleyicilerinin yanında sönük kalsa da gerek kullanım, gerekse öğretim kolaylığı nedeniyle bir çok okulda, üniversitede hâlen öğrencilere gösterilmektedir. Bunun için ben de mikroişlemciler dersindeki laboratuar notlarımı ve dönem projemi bu konuda çalışmak isteyen arkadaşlar için paylaşma gereği duydum.<br />
Laboratuar konuları aşağıdaki gibidir;<br />
<b>1-</b> (ASM) Keil Programının Kullanımı<br />
<b>2-</b> (ASM) Register Bankı Seçme, Portlardan Değer Okuma, Adres Modları<br />
<b>3-</b> (ASM) 8051 Komutlarının Kullanımı: ADDC, SUBB, MUL, DIV, CPL, XCH, SWAP<br />
<b>4-</b> (ASM) 8051 Uygulaması: Rasgele Verilen Sayıları Tek veya Çift Olarak Yerleştirme<br />
<b>5-</b> (ASM) 8051 Uygulaması: Rasgele Verilen Sayıları Büyükten Küçüğe ve Küçükten Büyüğe Sıralama<br />
<b>6-</b> (ASM) 8051 Uygulaması: Timer&#8217;ların Kullanımı<br />
<b>7-</b> (ASM) 8051 Uygulaması: Seri Port Kullanımı<br />
<b>8-</b> (C) Kronometre Yapımı<br />
<b>9-</b> (C) Bankamatik Yapımı<br />
<b>10-</b> (C) LM35 ve AD0831 ile Klima Yapımı<br />
<b>11-</b> (C) Sinyal Üreteci Yapımı</p>
<p><b>Dönem Projesi:</b> (C) Çok Fonksiyonlu Sıcaklık ve Zaman Uygulaması</p>
<p>Deneylerle ilgili detaylı açıklamara ve dönem projesine <a href="http://www.4shared.com/file/QGjPSDOv/8051.html" target="_blank"><b>buradan</b></a> veya <a href="http://www.fxdev.org/muhendislik/"><b>Mühendislik</b></a>/<a href="http://www.fxdev.org/muhendislik/digerleri/"><b>Diğerleri</b></a> bölümünden ulaşabilirsiniz.<br />
Herkese iyi çalışmalar.</p>
<div name="googleone_share_1" style="position:relative;z-index:5;float: left; margin-right: 290px;"><g:plusone size="standard" count="1" href="http://www.fxdev.org/8051-muzelik-mikrodenetleyici/">{lang: 'tr'}</g:plusone></div>]]></content:encoded>
			<wfw:commentRss>http://www.fxdev.org/8051-muzelik-mikrodenetleyici/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

