MicroC sorunu ?

Başlatan kaypic38, 24 Şubat 2012, 22:10:23

kaypic38

MikroC ile ilk defa lcd uygulaması yapıyorum ve bulduğum bir dökümandan bir program parçasını derleyemedim ADCON1=6; bu komutu hatalı yazım olarak görüyor derleyici acaba dökümanda mı yanlış verilmiş ?
void ayarlar () {
PORTB=0;
TRISB=0×00;
INTCON = 0; // Tüm kesmeler iptal edildi
Lcd_Init(); // Lcd_Init PORTB LCD için hazırlandı
LCD_Cmd(_LCD_CURSOR_OFF); // LCD kursör kapatıldı
LCD_Cmd(_LCD_CLEAR); // LCD de radtgele karekter oluşmaması için silindi
ADCON1 =6; // ADC pinleri Dijitale ayarlandır
CMCON=0×07; // karşılaştırıcı modülleri dijitale ayarlandı
}
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

emosamca

Kullandığın PIC nedir?

kaypic38

Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

kaypic38

Programın tamamını vereyim;

/***********************************************/
void main() {
unsigned int i,a,l,x;
char *text1; /*karakter tipinde işaretçi tanımlanıyor.İşaretçiler oldukça geniş konudur.sadece * la gösterildiğini bilmek yeterlidir*/
char *isim ;
sbit LCD_RS at RB2_bit; /*LCD bağlantıları ayarlanıyor*/
sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
}
/**************************************************************/

void ayarlar() {
PORTB=0;
TRISB=0x00;
INTCON=0;
Lcd_init();
LCD_Cmd(_LCD_CURSOR_OFF);
LCD_Cmd(_LCD_CLEAR);
ADCON1=6;
CMCON=0x07;
}
/*********************************************/
void main() {
ayarlar()
for (;;) {
text1="BAŞLANGIÇ";
for(i=0;i<56;i++) {
text1++;
Lcd_out(1,1,text1);
delay_ms(1000);
}
LCD_Cmd(_LCD_CLEAR);
delay_ms(50)
isim="DENEME BAŞARILI";
for(i=0;i<63;i++)
{
isim++;
Lcd_out(2,1,isim);
delay_ms(100);
}
LCD_Cmd(_LCD_CLEAR);
i=0;
Delay_ms(200);
for(i=0;i<3;i++){
text1= "BURASI 1.SATIR";
LCD_Cmd(_LCD_CLEAR);
Lcd_out(2,1,text1); /*ekranın 2.satırına sabit yazı 1 karakterden itibaran basılıyor*/
delay_ms(800);
text1= "BURASI 2.SATIR";
LCD_Cmd(_LCD_CLEAR);
Lcd_out(1,1,text1); /*ekranın 1.satırına sabit yazı 1 karakterden itibaran basılıyor*/
delay_ms(800);
LCD_Cmd(_LCD_CLEAR); /*lcd Ram hafızası siliniyor LCD görüntüsü temizleniyor.*/
}
}
}



DERLEYİCİNİN HATALI OLARAK GÖZTERDİĞİ SATIRLAR;

sbit LCD_EN at RB3_bit;
sbit LCD_D4 at RB4_bit;
sbit LCD_D5 at RB5_bit;
sbit LCD_D6 at RB6_bit;
sbit LCD_D7 at RB7_bit;
sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
ADCON1=6;
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

M_B

ADCON1=6; satırını kaldır.
Cunku 16f628a da ADC yok.
İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet

kaypic38

Teşekkürler ama neden hata veriyor ? adcon1 ve diğer sbit komutlarında yazım yanlışı mı var ?
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

muhittin_kaplan

16f628 de ADCON1 diye register yok ve sen buraya değer atamaya çalışıyorsun.. hatayı ondan veriyor.

kaypic38

Hocam olmadığını bende biliyorum bulduğum bir e-kitap da programın temeli aynen böyleydi ayrıca o satırı kaldırınca yine sbit ile başlayan satırları derleyici hatalı olarak gösteriyor.
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...

emosamca

Çünkü sbit lerin altında da ADCON1 satırı var. Onu kaldır.

kaypic38

Olmuyor işte adcon1=6 satırını kaldırdım yine sbit komutlarını hatalı olarak görüyor derleyici.
Bir şeyi gerçekten öğrenmek, yapmak istiyorsan o şeyi yapmışsın, öğrenmişsin demektir...