ايران ويج

نسخه‌ی کامل: ساخت فایل
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3
سلام.
میخوام یک فایل هدر برای کار با LCD برای فرانکلین بنویسم که مدام نخوام توابع مخصوص به LCD رو اونجا کپی کنم.
اما بلد نیستم فایل هدر بسازم.
توی کتابی هم که دارم هدری که ساخته با توابع یک خطی نوشته.
لطفا ساختن فایل هدر رو به من هم یاد بدید.
متشکرم.
همون فایل c رو بنویس تمام توابع رو هم توش بزار فقط پسوندش رو موقع ذخیره کردن .h بزار همین
همین کار رو کردم اول ولی ارور میگیره.
توی کتاب همون تابع یک خطی رو با #define تعریف کرده بود.
اونجوری هم نتونستم ازش استفاده کنم.
یه مثال که خودت تست کنی و کار کنه میتونی برام بگذاری؟
ممنون.
کد:
#include <lcd.h>
#include <delay.h>

#define LEDRed  PORTA.7
#define LEDGrn  PORTA.6
#define LEDYlw  PORTA.5
#define LEDBlu  PORTA.4

#define SW1  PINA.3
#define SW2  PINA.2
#define SW3  PINA.1
ببین این یه فایل هیدر که توش دو تا فایل هیدر دیگه رو هم صدا می زنه هیچ چیز خاصی هم نداره
ha_60 نوشته است:
کد:
#include <lcd.h>
#include <delay.h>

#define LEDRed  PORTA.7
#define LEDGrn  PORTA.6
#define LEDYlw  PORTA.5
#define LEDBlu  PORTA.4

#define SW1  PINA.3
#define SW2  PINA.2
#define SW3  PINA.1
ببین این یه فایل هیدر که توش دو تا فایل هیدر دیگه رو هم صدا می زنه هیچ چیز خاصی هم نداره

پس چرا برای من ارور میداد؟
من یه برنامه قبلا برای کار با ال سی دی نوشته بودم.
حالا توابعی که برای کار با ال سیدی بود رو کپی کردم توی یک فایل دیگه و پسوندش رو گذاشتم h.
ولی ارور میداد.
این ارورش بود.
Missing function Prototype
و
function definition Requires ANSI Style Parameter List

اینها مال چیه؟
نقل قول: Missing function Prototype
شما هر تابع که استفاده می کنی باید اول فایل توی یک خط تابع رو تعریف کنی اگه این رو نتونه پیدا کنه این ارور و میده اون دومی رو هم نمی دونم ولی شاید این رو حل کنی حل بشه
فایل رو هم باید اول فایل دوم انکلود کنی آگه بالای اون از تابعی استفاده کنی این مشکل پیش می یاد
منم از اول همینو پرسیدم.
حالا تابع چطور تعریف میشه؟
یعنی مثلا اینجوری؟

کد:
#define Lcd(char *text, int len);
l
و بعد توی برنامه اصلی فراخوانی بشه؟
اینجوری برای همین کد میره روی فایل h روی این تابع و میگه
syntax error near "char"
l
این مال چیه؟
define برای تعریف یه کلمه به جای یه کلمه دیگست (یا یکم پیچیده تر) برای تعریف تابع نیست
کد:
void func1(int);

void func1(int i){
}
در واقع یه خلاصه یه تابع رو بنویسی اسم متغیر ها رو نمی خواد فقط نوعشون رو آخرش هم ; رو فراموش نکن
ha_60 نوشته است:define برای تعریف یه کلمه به جای یه کلمه دیگست (یا یکم پیچیده تر) برای تعریف تابع نیست
کد:
void func1(int);

void func1(int i){
}
در واقع یه خلاصه یه تابع رو بنویسی اسم متغیر ها رو نمی خواد فقط نوعشون رو آخرش هم ; رو فراموش نکن
سلام.
همینکار رو کردم اما یه ارور دیگه هم اضافه شد.
Declaration Syntax Error

این متن فایل h هستش ببین.


کد:
sbit EN = P3^2;
sbit RS = P3^0;
sbit RW = P3^1;
Lcd (char, int);
void Delay_10ms()
{
int i;
for (i = 0;i<=500;i++) { };
}
//----------------
void Lcd_Command(unsigned char command)
{
P1 = command;
RW = 0;
RS = 0;
EN = 1;
EN = 0;
Delay_10ms();
}
//----------------
void Lcd_Init()
{
Lcd_Command(0x38);
Lcd_Command(0x0F);
Lcd_Command(0x01);
Lcd_Command(0x06);
}
//----------------
void Lcd_Data(unsigned char Data)
{
P1 = Data;
RW = 0;
RS = 1;
EN = 1;
EN = 0;
Delay_10ms();
}
//----------------
void Lcd_Cls()
{
Lcd_Command(0x01);
}
//----------------
void Lcd_Write_Tx(unsigned char x, unsigned char y, char *text, unsigned char len)
{
unsigned char adres;
unsigned char character;
unsigned char i;
if (y == 2){
adres = 0xBF;} else {adres = 0x7F;}
//if (x + len > 16) { x = 0;}
adres += x;
for (i = 0; i<=(len - 1); i++)
{
character = *(text + i);
Lcd_Command (adres);
Lcd_Data (character);
adres += 1;
}
}
//----------------
void Lcd (char *text, int len)
{
int i;
for (i=1;i<=len;i++) {
Lcd_Data(*(text + i));
}
}

خوب من تعریف این یک تابع رو یک بار تو خط اول هم نوشته بودم اما فرقی نکرد.

اینم فراخوانیش

کد:
#include <reg51.h>
#include "lcd.h"
void main()
{
lcd (" salam Chetory ?" , 16);
for ( ; ; ) {  
}
}
l
حالا این که چرا اینیت نکردم و دستورات ناقصه بی خیال این برای تست فایل هدر بود.
حالا ارورش چی هست به نظر شریفتون؟
کد:
void Lcd (char *, int);
void Delay_10ms();
void Lcd_Command(unsigned char);
void Lcd_Init();
void Lcd_Data(unsigned char);
کلمه void رو اولش جا انداختی و char نیست * char هست برای تمام توابع هم باید بنویسی من یه چند تاشو نوشتم که بقیش رو هم همینطور اضافه کن
سلام.
ممنون.
توی اون توابعی که پارامتر نداره جواب میده اما اونهایی که پارامتر داره نه. باز هم ارور میده.
باز یه نگاه میکنی؟
صفحه‌ها: 1 2 3