seri portta veri gönderme

Başlatan deserteagle, 19 Aralık 2007, 17:42:44

deserteagle

merhaba
önce herkesin bayramı mübarek olsun.
seri porttan veri alacak bir led devre tasarladım.
seri porttan aldığı verileri bir diziye atıyor ve dizinin benim program sırasında seçtiğim elemanına mesela dizi[3] e göre ledleri yakıyor
proteusta visual terminalde devre mükemmel çalışıyor fakat devreyi uyguladığımda çalışmadı.visula c# ile arayüz tasarladım fakat sanırım burada bir sorun var.birde max232'in invert  özelliği nden dolayı bunun çıkışına 74hc04 bağlamak gerekirmi.

pice yüklediğim kod
#include<pic18.h>
#include<delay.c>
void seri_hazirla(void);
 void bekle(unsigned int x){
 	int i;
   	for ( i=0;i<x;i++)
   	DelayMs(10);
   }   
void main (void)
{
unsigned char c,dizi[10];	  
 	ADCON1=0x07;
    TRISA=0;
    TRISB=0;
    TRISC=0b10000000; 
    TRISD=0;  
    TRISE=0b111;
    PORTB=0;
    PORTD=0;                   

    seri_hazirla();
    for(;;)
    {
	for(i=0;i<10;i++)
	{
		while(!RCIF)
		dizi[i]=RCREG;
		RCIF=0;
	}
	if(diz[3]=='a')
	PORTD=1;
    }
}
    void seri_hazirla(void)
	{ 
		SPBRG = 25;   
		BRGH = 1;    
		SYNC = 0;   
		SPEN = 1;   
		CREN = 1;   
		SREN = 0;   
		TXIE = 0;   
		RCIE = 0;   
		TX9 =  0;    
		RX9 = 0;    
		TXEN = 0;  
		TXEN = 1;}  



burada c# kodunda ise bir buton ve serial port nesnesi aldım ve butona basılınca bir string'e atadım.butona basınca seri porta serigönder yazısını gönderiyor.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
       
            if (!serialPort1.IsOpen)
                serialPort1.Open();
            string s1 = "serigönder";
            serialPort1.WriteLine(s1);
            

         }
    }
}

ferdem

Bu konu burda konuşulmuştu:
https://www.picproje.org/index.php/topic,18323&highlight=

Forumdaki ilgili diğer başlıkları da okumanızı tavsiye ederim. İyi çalışmalar

arslan74

Merhaba,

  for(i=0;i<10;i++)
   {
      while(!RCIF)
      dizi[i]=RCREG;
      RCIF=0;
   }


Bu kodunda hata var. Doğrusu söyle olmayıdı.


  for(i=0;i<10;i++)
   {
      while(!RCIF);
      dizi[i]=RCREG;
      RCIF=0;
   }


While içinde diziye atama opetaörü eklemiş durumda. yada söyle kullan ikiside aynı işi yapar.


  for(i=0;i<10;i++)
   {
      while(!RCIF){}
      dizi[i]=RCREG;
      RCIF=0;
   }



Selamlar

deserteagle

sayın arslan hocam doğru söylüyorsun noktalı virgülü unutmuşum.uyarı için teşekkürler
sayın ferdem hocam konuyu inceledim fakat önceden benimde başıma gelmişti dierk max 232 den bilgiyi alabilmiştim ama şimdi alamıyorum.