msp 430 - iar dizileri lcd yazdıramama sorunsalı

Başlatan burak ozturk, 26 Ocak 2013, 21:16:16

burak ozturk

amacım seri porttan aldığım bilgileri pointer ile rx_buffer dizisinin içine kaydedip komple char şeklinde lcd ye yazdırmak ancak diziyi dümdüz lcd ye bile yazdırmaktan aciz oldugumu farkettim nerede hata yapıyorum ? aslında diziye deger vermekte sıkıtı yaşadığımı düşünüyorum.

#include "msp430.h"
#include "lcd_msp.h"

unsigned char rx_buffer[];
char *rx;
rx=rx_buffer[0];                                    //program burada hata veriyor 


void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
   
  BCSCTL1 = CALBC1_1MHZ;
  DCOCTL  = CALDCO_1MHZ;
  __delay_cycles(100000);
 
   
  lcd_init();
  
  lcd_goto(1,2);
  lcd_puts(rx_buffer);                 // buradada hata veriyor



  __bis_SR_register(LPM4_bits + GIE);  
}


diziye deger atamaya kalktıgımda yine hatayla karşılaşıyorum

unsigned char rx_buffer[0x33,0x3F];

bu arada fatih inanç hocamın çizgi tagem kiti için yazmış oldugu lcd kütüphane dosyalarını kullanıyorum

#include "msp430.h"
#include "lcd_msp.h"

void lcd_putch(char c)
{
  LCD_RS(1); 
  
  delay_us(200);       
         
  LCD_DATA =  (c & 0xF0);
  EN_ACKAPA();
  LCD_DATA = ((c & 0x0F)<<4);
  EN_ACKAPA();
}

void lcd_komut(unsigned char c)
{
  LCD_RS(0);
  
  delay_us(200);      
  
  LCD_DATA =  (c & 0xF0);
  EN_ACKAPA();
  LCD_DATA = ((c & 0x0F)<<4);
  EN_ACKAPA();
}

void lcd_temizle(void)
{  
  lcd_komut(0x01);
  delay_ms(2);
}

void lcd_puts(const char* s)
{ 
  while(*s)
    lcd_putch(*s++);
}

void lcd_goto(char x, char y)
{ 
  if(x==1)
    lcd_komut(0x80+((y-1)%16));
  else
    lcd_komut(0xC0+((y-1)%16));
}
	
void lcd_init()
{
  P1DIR |= BIT4 + BIT5 + BIT6 + BIT7; 
  P2DIR |= BIT6 + BIT7;
  P2SEL  = 0x00;
  P2SEL2 = 0x00;  
  P1OUT  = 0x00;
  P2OUT  = 0x00;
  
  LCD_RS(0);
  LCD_EN(0);

  lcd_komut(0x28);  // 4 Bit , Çift Satır LCD
  lcd_komut(0x0C);  // İmleç Gizleniyor
  lcd_komut(0x06);  // Sağa doğru yazma aktif
  lcd_komut(0x80);  // LCD Birinci Satır Konumunda
  lcd_komut(0x28);  // 4 Bit , Çift Satır LCD
  lcd_temizle();    // Ekran Temizleniyor 
}




/***********************************
*
* [url=http://www.fatihinanc.com]www.fatihinanc.com[/url]
* 
* Muhammed Fatih İNANÇ
* 25.10.2010
*
* MSP430 için 2x16 LCD Kütüphanesi
* 
*
***********************************/

#define delay_us(x)     __delay_cycles(x)
#define delay_ms(x)     __delay_cycles((x * 1000L))

#define LCD_DATA        P1OUT
#define LCD_CONTROL     P2OUT
#define	EN_ACKAPA()     LCD_EN(1),LCD_EN(0)

#define	LCD_RS(x)       ( (x) ? (LCD_CONTROL |= BIT7) : (LCD_CONTROL &= ~BIT7) )
#define LCD_EN(x)       ( (x) ? (LCD_CONTROL |= BIT6) : (LCD_CONTROL &= ~BIT6) )


void lcd_komut(unsigned char); // LCD ye komut göndermeye yarar
void lcd_temizle(void);        // LCD ekranı temizler
void lcd_puts(const char*);    // LCD ye string ifade yazar
void lcd_goto(char,char);      // LCD de satır ve stün olarak istenilen yere gider
void lcd_init(void);           // LCD başlangıç ayarları yapılır
void lcd_putch(char);          // LCD ye tek karakter yazmak için kullanılır.



sorunun sebebi dizi tanımını yanlış yapmammış iar de şu şekilde kullanmam gerekli imiş ;

char abc[]={'Y','E','T','E','R'};



happy coding :)
happy coding.