Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Atmel => Konuyu başlatan: Cetinal - 16 Mart 2007, 21:16:14

Başlık: seri bilgi
Gönderen: Cetinal - 16 Mart 2007, 21:16:14
s.a beyler
89c2051 in birinden diğerine seri bilgi göndermem gerekiyo keil ile yazmaya çalıcaktım ama atmelin seri portu nasıl kullanılıo bilmiyorum
mantık ve bilgi paylaşımı yaparmısınız....

(http://img409.imageshack.us/img409/8264/adszjx7.jpg)
Başlık: seri bilgi
Gönderen: Cetinal - 17 Mart 2007, 23:31:20
yokmu bişey
Başlık: Re: seri bilgi
Gönderen: AST - 18 Mart 2007, 20:15:10
Alıntı yapılan: "RoMeO123"atmelin seri portu nasıl kullanılıo bilmiyorum

 89c2051  8051 MCS-51 ailesinden, Atmel üretiyor.
Bu linkte seri portun nasıl kullanılacağı  anlatılıyor.
http://www.ume.tubitak.gov.tr/lablar/ozel_olcumler/8051a5.htm

 Linkteki bilgiler asm dilin için anlatılıyor.Aşağıdaki kod c dili için bir örnek.

#include <89c51rd2.H> // işlemci başlık dosyası
#include <stdio.h> // C dili başlık dosyası

void main (void)
{
 SCON=0x40; // 8 bit uart modu
 TMOD=0x20; // Z/S 1 için 8 bit otomatik yükleme modu
 TH1=0xF3; // yaklaşık 2400 bit/s(12 Mhz)
 TR1=1; // Z/S'i çalıştır.
 TI=1; // gönderilmeye hazır
 while(1)
 { // Bilginin gönderilmesi
   printf("Seri kanaldan karakter gonderme\n");
 }
}
Başlık: seri bilgi
Gönderen: Cetinal - 20 Mart 2007, 23:21:20
msj için teşekkürler
bu kısım tmm(http://img151.imageshack.us/img151/9500/dilimdilim2ge7ak5.jpg) (http://imageshack.us) şimdi diğer işlemciden gelen bilgiyi almak için hangi ayarları yapacağız

kolay gelsin
Başlık: seri bilgi
Gönderen: AST - 21 Mart 2007, 00:29:50
Alıcı için SCON register'ındaki REN(Receive_enable) biti 1 olmalıdır.Buna göre SCON register'ı ayarlanmalıdır.

Diğer ayarlar yine aynı olacak.SBUF register'ından bilgi almak için,

ALICI:
    JNB   RI,  $               ; RI 1 olana kadar dön
    MOV  A,   SBUF         ; SBUF'I ACC'ye yaz.
    CLR   RI
    RET
 
[/b]

bu kod kullanılır.

Başlık: seri bilgi
Gönderen: Cetinal - 21 Mart 2007, 18:45:49
cevap ve ilginiz için teşekkür ederim
sanırım bu C deil ben onu sormuştum
tekrar teşekkür ederim kolay gelsin
Başlık: seri bilgi
Gönderen: AST - 22 Mart 2007, 11:08:48

 Ben teşekkür ederim.Bu kod C dilinde yazılmış bir örnek.Seri haberleşme
iki yönlü yapılıyor.Burdan bişiler çıkartabilirsin.Seri bilgiyi almak için
"scanf()" komutu kullanılmış.Kolay gelsin.

/******************************************************************/
/* Uygulama Adı : Seri Haberleşme Uygulaması 2        */
/* Dosya Adı : Seri_Haberlesme_Uyg2            */
/* Tarih    : Mayıs 2005        */
/* Hedef İşlemci: MCS-51        */
/*  */
/* Bu uygulamada 4 işlem yapan hesap makinası gerçekleştirilmiştir*/
/* Sayılar ve işlem seçiminin girilmesi ile ilgili menü bilgileri */
/* seri haberleşme ile gönderilmekte yapılan bilgi girişi ise yine*/
/* seri haberleşme ile alınmaktadır.Hesap makinası tamsayılar ile */
/* çalışmaktadır.    */
/******************************************************************/
#include <89c51rd2.H> // işlemci başlık dosyası
#include <stdio.h> // C dili başlık dosyası

void main (void)
{
 char islem;
 int sayi_1,sayi_2;
 long int sonuc;
 SCON=0x50; // 8 bit uart modu, REN=1
 TMOD=0x20; // Z/S 1 için 8 bit otomatik yükleme modu
 TH1=0xFD; // yaklaşık 9600 bps(11.0592Mhz)
 TR1=1; // Z/S 1'i çalıştır.
 TI=1; // gönderilmeye hazır

 while(1)
 { //Menünün hazırlanması
   printf("*******************************\n");
   printf("*    4 ISLEM HESAP MAKINASI   *\n");
   printf("*******************************\n");
   printf("\n");
   printf(" Mevcut islemler:\n");
   printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
   printf(" Toplama (+)\n");
   printf(" Çikarma (-)\n");
   printf(" Çarpma  (*)\n");
   printf(" Bölme   (/)\n");
   printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
   printf(" Birinci sayiyi giriniz=");
   scanf("%d",&sayi_1); // Formatlı olarak 1.sayının girilmesi
   printf(" Ikinci sayiyi giriniz=");
   scanf("%d",&sayi_2); // Formatlı olarak 2.sayının girilmesi
   printf(" Yapmak istediginiz islemi seciniz=");
   scanf("%c",&islem);
   islem=getchar(); // Yapılacak işlemin girilmesi

  // Yapılacak işlemin belirlenmesi
   switch(islem)
   {
case '+': sonuc=sayi_1+sayi_2; break;

case '-': sonuc=sayi_1-sayi_2; break;

case '*': sonuc=sayi_1*sayi_2; break;

case '/': sonuc=sayi_1/sayi_2; break;
   }
   printf("\n");
   printf(" SONUC=%ld\n",sonuc);
 }
}

 

 [/b]
Başlık: seri bilgi
Gönderen: Cetinal - 23 Mart 2007, 17:18:34
mesaj ve ilginizden dolayı Allah Razı olsun

@ast hocam siz de ilgileniyosunuz galiba c keil ile peki daha önceden
hangi kaynaklardan yararlandınız bu konu ile ilgili önerebiliceğiniz kitap
v.s şeyler varmı

teşekkürler kolaygelsin
Başlık: seri bilgi
Gönderen: AST - 23 Mart 2007, 20:07:17
Kardeş ben C bilmiyorum.ASM dilinde yazıyorum programlarımı.

  8051 Mikrodenetleyici Uygulamaları adlı kitap piyasada mevcut.C ve 8051
KEIL ile beraber anlatılmış.Kitabın resmi sitesi, www.8051turk.com (//www.8051turk.com)

İngilizce dökümanlar var bir kaç tane 8051 ve C üzerine.İstersen gönderirim.

kolay gelsin.
Başlık: seri bilgi
Gönderen: Cetinal - 23 Mart 2007, 22:58:58
zahmet olmassa rica edeyim ben onları kardeşim çok teşekkürler
Allah razı olsun