Ben C# Üzerinde Geliştirilen Arayüzle RS232 Modülü Kullanarak Seri Haberleşme Uygulaması Yapmaya Uğraşıyorum . Xc8 konusunda acemiyim, öğrenmeye çalışıyorum. İlk olarak şöyle bir yol izledim . Xc8 konusunda bilgim fazla olmadığından Fırat DEVECİ'nin yazmış olduğu Hitech Programlama kitabındaki uygulamayı xc8'e uyarlamaya çalıştım .(Uygulama :Seri porttan gelen bilgiyi LCD'ye yazdırma) Daha sonra xc8 kütüphanelerini ekledim(Uart ,Delay , LCD) ve gerekli değişiklikleri yaptım .(Bu adımı yapıp c# da arayüz yapmaya çalışıp ikisini birleştirecektim.adım adım gidim dedim ama olmadı :)) Ortaya böyle bir şey çıktı .
#include <xc.h>
#include <stdio.h> // printf için gerekli C standart giri? ç?k?? kütüphanesi
#include "delay.h"
#include "lcd.h"
#include "uart.h"
// CONFIG
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config CP = OFF // FLASH Program Memory Code Protection bits (Code protection off)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF // Low Voltage In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection (Code Protection off)
#pragma config WRT = OFF // FLASH Program Memory Write Enable (Unprotected program memory may not be written to by EECON control)
#define _XTAL_FREQ 20000000
void main(void){ // Ana fonksiyon alan?
char i,j;
TRISB=0x00; // LCD için ç?k??
TRISC=0xF0; // USART pinleri giri? olarak kabul ediliyor
PORTB=0x00;
lcd_init(); // LCD ilk ayarlar? yap?l?yor
UART_Init(); // USART ilk ayarlar? yap?l?yor
lcd_yaz(" LCD / USART ");
lcd_gotoxy(2,1);
lcd_yaz(" LCD / USART");
DelayMs(250);
lcd_clear();
lcd_komut(ImlecYanSon); // Imlec yan?p sönecek
printf("\n\rLCD ve USART Denemesi");
printf("\n\rIstenilen Yazi LCD'de Gozukur!\n\r\n\r");
printf("1x16:");
for(;;)
{
j++;
i=UART_Read();// Karekter al?n?yor
veri_yolla(i); // LCD'ye bas?l?yor
UART_Write(i); // Virtual terminal'e bas?l?yor
if(j==16) // ?lk sat?ra geçiliyor
{ printf("\n\r2x16:");
lcd_gotoxy(2,1);
}
else if(j==32) // 2. sat?ra geçiliyor
{ veri_yolla(i);
lcd_clear();
printf("\n\r1x16:");
j=0;
}
}
}
Şu Hataları Aldım:
uart.h:57: warning: (346) declaration of "i" hides outer declaration
rs232.c:27: error: (187) too few function arguments
make[2]: *** [build/default/production/rs232.p1] Error 1
make[1]: *** [.build-conf] Error 2
make: *** [.build-impl] Error 2
(908) exit status = 1
nbproject/Makefile-default.mk:100: recipe for target 'build/default/production/rs232.p1' failed
make[2]: Leaving directory 'C:/Users/MPLABXProjects/rs232.X'
nbproject/Makefile-default.mk:84: recipe for target '.build-conf' failed
make[1]: Leaving directory 'C:/Users/MPLABXProjects/rs232.X'
nbproject/Makefile-impl.mk:39: recipe for target '.build-impl' failed
BUILD FAILED (exit value 2, total time: 455ms)
Şimdi direk bir şeyler yazamadığım için hitechten xc8'e değiştirip yapmaya çalıştım. Öncellikle böyle yapmam hatalı mı olmuş?
Nasıl bir yol izlemeliyim ?
Hatalar neyden kaynaklı ?
Bu konuda önerebileceğiniz döküman vs. bir şey var mı ?
Yardımlarınızı bekliyorum .