“Arguments cannot have explicit memory specificator” Hatası

Gömülü sistem ile uğraşan arkadaşların karşılaşacağı bir problem de “Arguments cannot have explicit memory specificator”
hatası olabilir bu hatanın nedeni ise kullandığınız derleyicideki keywordlerden birini değişken olarak kullanmaya çalışmanızdır.
Mesela ben Micro C derleyicisine “data” isimli bir değişken verince böyle bir sorunla karşılaşıyorum. Eğer değişkenin ismini değiştirirseniz bu hata ortadan kalkacaktır.

Reklamlar

I2C Haberleşmesi Kullanılarak Sıcaklığı Lcd’de Yazdırma

İlk olarak ı2c modülünün ne olduğunu anlatarak başlayalım.
i2c Inter-Integrated Circuit ifadesinin kısaltması olup, iki tel arayüz olarak anılır. i2c protokolü philips firması tarafından bulunmuş olup, düşük hızlı çevre birimlerini birbirine bağlamak için kullanılır.Dijital sistemlerde kablolu seri haberleşme ile ilgili birçok standart vardır. SPI, I2C bunlara örnek olarak verilebilir.I2C protokolünde temel olarak iki hat vardır. Bunlar SCL ve SDA olup, SCL (SerialCLock) veri senkronizasyonu için kullanılan clock darbeleri hattı, SDA (SerialDAta) ise veri hattıdır.

Genel bir bilgi verdikten sonra projemiz de ne yapacağımızdan bahsedelim.Projemizin amacı i2c protokolünü kullanıp TC74 sensörüyle sıcaklığı Lcd ekrana yazdırmak.
Bununiçin ilk olarak aşağıdaki şemayı isisde çizmemiz gerekmektedir.

sicaklik

Kodlarımız da aşağıdaki şekildeki gibi olursa Lcd de Tc74 ile alınan sıcaklık değerini görebiliriz.

Kodlarımız şu şekildedir:

unsigned short temp;

sbit LCD_RS at Rb0_bit;
sbit LCD_EN at Rb1_bit;
sbit LCD_D7 at Rb7_bit;
sbit LCD_D6 at Rb6_bit;
sbit LCD_D5 at Rb5_bit;
sbit LCD_D4 at Rb4_bit;

sbit LCD_RS_Direction at TRISb0_bit;
sbit LCD_EN_Direction at TRISb1_bit;
sbit LCD_D7_Direction at TRISb7_bit;
sbit LCD_D6_Direction at TRISb6_bit;
sbit LCD_D5_Direction at TRISb5_bit;
sbit LCD_D4_Direction at TRISb4_bit;

void main() {
char temperature[6];
Lcd_Init();
Lcd_Cmd(_Lcd_Cursor_Off);

while(1){

I2C1_Init(10000);
I2C1_Start();
I2C1_Wr(0x92);
I2C1_Wr(0x00);
I2C1_Repeated_Start();
I2C1_Wr(0x93);
temp=I2C1_Rd(0);
shorttostr(temp,temperature);
I2C1_Stop();
Lcd_Out(1,2,”sicaklik”);
Lcd_Out(2,2,temperature);

delay_ms(10);
}
}