امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
ساخت فایل
نویسنده پیام
Iran-PC آفلاین
كاربر دو ستاره
**

ارسال‌ها: 101
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۵

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #1
ساخت فایل
سلام.
میخوام یک فایل هدر برای کار با LCD برای فرانکلین بنویسم که مدام نخوام توابع مخصوص به LCD رو اونجا کپی کنم.
اما بلد نیستم فایل هدر بسازم.
توی کتابی هم که دارم هدری که ساخته با توابع یک خطی نوشته.
لطفا ساختن فایل هدر رو به من هم یاد بدید.
متشکرم.
۰۸-مهر-۱۳۸۵, ۰۰:۲۳:۳۹
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #2
 
همون فایل c رو بنویس تمام توابع رو هم توش بزار فقط پسوندش رو موقع ذخیره کردن .h بزار همین

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۸-مهر-۱۳۸۵, ۰۰:۳۷:۳۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
Iran-PC آفلاین
كاربر دو ستاره
**

ارسال‌ها: 101
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۵

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #3
 
همین کار رو کردم اول ولی ارور میگیره.
توی کتاب همون تابع یک خطی رو با #define تعریف کرده بود.
اونجوری هم نتونستم ازش استفاده کنم.
یه مثال که خودت تست کنی و کار کنه میتونی برام بگذاری؟
ممنون.
۰۸-مهر-۱۳۸۵, ۰۲:۴۷:۴۷
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #4
 
کد:
#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
ببین این یه فایل هیدر که توش دو تا فایل هیدر دیگه رو هم صدا می زنه هیچ چیز خاصی هم نداره

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۸-مهر-۱۳۸۵, ۱۱:۱۰:۳۸
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
Iran-PC آفلاین
كاربر دو ستاره
**

ارسال‌ها: 101
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۵

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #5
 
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

اینها مال چیه؟
۰۸-مهر-۱۳۸۵, ۲۱:۱۴:۱۹
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #6
 
نقل قول: Missing function Prototype
شما هر تابع که استفاده می کنی باید اول فایل توی یک خط تابع رو تعریف کنی اگه این رو نتونه پیدا کنه این ارور و میده اون دومی رو هم نمی دونم ولی شاید این رو حل کنی حل بشه
فایل رو هم باید اول فایل دوم انکلود کنی آگه بالای اون از تابعی استفاده کنی این مشکل پیش می یاد

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۸-مهر-۱۳۸۵, ۲۳:۱۵:۳۵
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
Iran-PC آفلاین
كاربر دو ستاره
**

ارسال‌ها: 101
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۵

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #7
 
منم از اول همینو پرسیدم.
حالا تابع چطور تعریف میشه؟
یعنی مثلا اینجوری؟

کد:
#define Lcd(char *text, int len);
l
و بعد توی برنامه اصلی فراخوانی بشه؟
اینجوری برای همین کد میره روی فایل h روی این تابع و میگه
syntax error near "char"
l
این مال چیه؟
۰۹-مهر-۱۳۸۵, ۰۱:۴۱:۱۸
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #8
 
define برای تعریف یه کلمه به جای یه کلمه دیگست (یا یکم پیچیده تر) برای تعریف تابع نیست
کد:
void func1(int);

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

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۰۹-مهر-۱۳۸۵, ۲۱:۵۶:۲۳
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
Iran-PC آفلاین
كاربر دو ستاره
**

ارسال‌ها: 101
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۵

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #9
 
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
حالا این که چرا اینیت نکردم و دستورات ناقصه بی خیال این برای تست فایل هدر بود.
حالا ارورش چی هست به نظر شریفتون؟
۰۹-مهر-۱۳۸۵, ۲۲:۵۱:۵۸
ارسال‌ها
پاسخ
ha_60 آفلاین
بنيانگذار سايت
******

ارسال‌ها: 4,637
موضوع‌ها: 216
تاریخ عضویت: آبان ۱۳۸۳

تشکرها : 560
( 6556 تشکر در 2385 ارسال )
ارسال: #10
 
کد:
void Lcd (char *, int);
void Delay_10ms();
void Lcd_Command(unsigned char);
void Lcd_Init();
void Lcd_Data(unsigned char);
کلمه void رو اولش جا انداختی و char نیست * char هست برای تمام توابع هم باید بنویسی من یه چند تاشو نوشتم که بقیش رو هم همینطور اضافه کن

هادی امین زاده
دیدن چیزی که همه می بینند هنر نیست
بانک اطلاعات صنایع ایران.
۱۰-مهر-۱۳۸۵, ۰۰:۵۱:۰۹
وب سایت ارسال‌ها
پاسخ
تشکر شده توسط : 1نفر
Iran-PC آفلاین
كاربر دو ستاره
**

ارسال‌ها: 101
موضوع‌ها: 6
تاریخ عضویت: شهریور ۱۳۸۵

تشکرها : 0
( 5 تشکر در 5 ارسال )
ارسال: #11
 
سلام.
ممنون.
توی اون توابعی که پارامتر نداره جواب میده اما اونهایی که پارامتر داره نه. باز هم ارور میده.
باز یه نگاه میکنی؟
۱۰-مهر-۱۳۸۵, ۰۲:۲۱:۵۶
ارسال‌ها
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  ساخت فایل 15 2,003 ۱۲-مهر-۱۳۸۵, ۰۰:۰۲:۳۶
آخرین ارسال: Guest

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 5 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS