NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 5193 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 16 از 16

موضوع: برنامه نویسی

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    28
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    پیش فرض برنامه نویسی

    سلام - دستور زیر که معمولا در تابلوروان استفاده میشه به زبان سی چطوری میشه :

    به عنوان مثال : Rotate Scan ,Left,1

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    اینجوری نمیشه مهندس ، شما دقیق بگو چه کار میخوایی انجام بدی.
    توی زبان c وجود ارایه های دو بعدی کار رو راحت کرده . اگه میخوایید از این دستور توی تابلو روان استفاده کنید ، بهترین حالت استفاده از ارایه ها هست

  4. #3
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام

    جناب 1Nafar این سوال تا حالا بارها و بارها پیش اومده ، و منظور این دوستمون هم برای تابلو روان هست ، لطف کنید و بگید که دقیقا چطور میشه با آرایه های دو بعدی عملی شبیه به دستور Rotate رو انجام داد.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  5. #4
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    28
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    پیش فرض

    سلام خدمت شما و آقای 1nafar :
    منظور من از این دستور استفاده در تابلوروان است به عنوان مثال میخوام برنامه زیر رو به زبان سی بنویسم اگه ممکنه در تبدیل این برنامه به زبان سی کمک کنید چون این سوال خیلی از دوستانی است که با تابلو روان کار می کنند .:

    $regfile = "m8def.dat"
    $crystal = 8000000

    Config Portb = Output
    Config Portc = Output
    Config Portd = Output

    Dim Scan As Byte
    Dim Refresh As Byte
    Dim Index As Byte
    Dim S As Byte
    Dim M As Byte
    Dim E As Byte
    Dim A As Byte

    Do
    ' +-------------------------------------------+
    ' | Scrolling "Lachini" text to Left |
    ' +-------------------------------------------+

    For S = 0 To 79
    E = S + 4
    For Refresh = 1 To 7
    Scan = &H01
    For Index = S To E

    A = Index
    Portd = Lookup(a , Lachini)
    Portc = 1
    Portc = 0

    A = Index + 5
    Portd = Lookup(a , Lachini)
    Portc = 2
    Portc = 0

    A = Index + 10
    Portd = Lookup(a , Lachini)
    Portc = 4
    Portc = 0

    A = Index + 15
    Portd = Lookup(a , Lachini)
    Portc = 8
    Portc = 0

    Portb = Scan
    Rotate Scan , Left , 1
    Waitus 250
    Portb = &H00

    Next Index
    Next Refresh
    Next S

    Lachini:
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H7F , &H01 , &H01 , &H01 , &H01 ' "L"
    Data &H02 , &H15 , &H15 , &H15 , &H0F ' "a"
    Data &H0E , &H11 , &H11 , &H11 , &H02 ' "c"
    Data &H7F , &H08 , &H10 , &H10 , &H0F ' "h"
    Data &H00 , &H11 , &H5F , &H01 , &H00 ' "i"
    Data &H1F , &H08 , &H10 , &H10 , &H0F ' "n"
    Data &H00 , &H11 , &H5F , &H01 , &H30 ' "i"
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H00 , &H00 , &H00 , &H00 , &H00
    Data &H00 , &H00 , &H00 , &H00 , &H00

    مدار یک تابلو روان با چهار عدد آی سی 74573 و 4 عدد دات ماتریس 5در 7 است .

  6. تشکرها از این نوشته :


  7. #5
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    من خودم با زبان سی تابلو روان کار نکردم و فقط با بسکام اونم با یه ماتریس کار کردم ، ولی هسته ی اصلی کار رو تا حدود زیادی فهمیدم.

    حالا اینکه چطور میشه این برنامه رو به زبان C تبدیل کرد نمی دونم! اما اگه جناب 1Nafar بگن که چطور میشه بجای دستور Rotate از آرایه های دو بعدی استفاده کرد خیلی جالب میشه و مشکل خیلیها حل میشه. چون من این مشکل رو در سایتهای دیگه هم دیدم که عنوان شده بود.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  8. #6
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    28
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    پیش فرض

    سلام – میشه از دوستان خواهش کنم اگه کسی واقعا میتونه جواب بده " اینکه میگید من با بسکام کار کردم و سی بلد نیستم " جواب من نیست !!!
    از آقای 1nafar خواهش میکنیم که خودشون دست بکار بشن با تشکر از ایشان..........

  9. #7
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    چرا می زنی مهندس؟!

    من که حرف بدی نزدم. زدم؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  10. #8
    کاربر علاقه مند rbm آواتار ها
    تاریخ عضویت
    Jul 2009
    نوشته ها
    30
    تشکر
    18
    تشکر شده 16 بار در 10 پست

    پیش فرض

    سلام
    فکر نمى کنم پیدا کردن دستورى که بتونه اىن کار رو انجام بده سخت باشه!
    ميشه اگر سطر يا ستون با ىک فعال ميشه scan=1 کرد و بعد از دستور شيفت معمولى استفاده کرد و بعد از اونم يک if گذاشت که اگر scan برابر اخرين مقدار خود شده بود اونو به اولىن مقدار كه ۱ هست برگردونه. و اگر هم سطر يا ستون با صفر فعال ميشد مثل قبل عمل کرد و در انتها scan رو نات کرد.

  11. #9
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    نقل قول نوشته اصلی توسط nefel نمایش پست ها
    سلام - دستور زیر که معمولا در تابلوروان استفاده میشه به زبان سی چطوری میشه :

    به عنوان مثال : Rotate Scan ,Left,1



    با سلام
    من سورس كد شما رو نگاه كردم شما تو متن برنامه متغيري به نام scan رو به صورت يك بايت تعريف كردين كه معادلش تو زبان C ميشه : ; unsigned char scan
    اما برسيم سر اصل مطلب ، اگر اشتباه نكنم داره دستور شما اين كار رو انجام ميده كه محتواي متغير scan رو يك واحد به سمت چپ شيفت ميده كه معادل اين عمل در زبان C ميشه :
    (شرمنده هر كاري كردم نتونستم فرمت دستور رو به صورت صحيح تايپش كنم دست آخر مجبور شدم پيوستش كنم)

    فكر كنم با اين دستور مشكلت حل شه .
    فايل هاي پيوست شده فايل هاي پيوست شده
    • نوع فایل: txt C.txt (45 بایت, 37 نمايش)
    ویرایش توسط Division : 11-03-2010 در ساعت 01:59
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  12. #10
    کاربر علاقه مند rbm آواتار ها
    تاریخ عضویت
    Jul 2009
    نوشته ها
    30
    تشکر
    18
    تشکر شده 16 بار در 10 پست

    پیش فرض

    سلام
    این که مثل همون پست قبلی شد فقط یک if می خواد چون اینطوری بعد از 8 بار scan=0 میشه چون با این دستور صفر وارد میشه. ( البته تو بسکام که اینطوری بود.) پس روش درسته.

  13. #11
    مدیر انجمن Division آواتار ها
    تاریخ عضویت
    Jan 2010
    نام
    افشین علیزاده
    نوشته ها
    628
    تشکر
    206
    تشکر شده 1,013 بار در 407 پست

    پیش فرض

    نقل قول نوشته اصلی توسط rbm نمایش پست ها
    سلام
    این که مثل همون پست قبلی شد فقط یک if می خواد چون اینطوری بعد از 8 بار scan=0 میشه چون با این دستور صفر وارد میشه. ( البته تو بسکام که اینطوری بود.) پس روش درسته.



    فرمايش شما متينه دوست عزيز اما تو زبان C چاره اي به غير از استفاده اون دستوري كه اشاره كردم ندارين....:D
    مگر اينكه لابلاي دستورات زبان C از دستورات زبان اسمبلي استفاده كنين كه نهايتاً ميشه همون نتيجه دستور قبلي...
    سادگی نهایت کمال است
    یه مدتی میشه که نیستم... ولی به زودی بر می گردم...

  14. #12
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    28
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    Icon16

    سلام - برنامه صفحه قبل تابلوروان به زبان بیسسک همین تاپیک رو به زبان سی نوشتم با توجه به توضیحات شما دوستان اما متاسفانه جواب نمیده :

    اینم برنامه :

    #include<mega16.h>
    #include<delay.h>

    unsigned char scan;
    int refresh ,index;
    int s,e,a;



    flash unsigned char text[136]={
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x82 , 0xFE , 0xFE , 0x82 , 0x02 , 0x06 , 0x0E , 0x00 , //L//
    0x3E , 0x7E , 0xD0 , 0x90 , 0xD0 , 0x7E , 0x3E , 0x00 , //A//
    0x38 , 0x7C , 0xC6 , 0x82 , 0x82 , 0xC6 , 0x44 , 0x00 , //C//
    0xFE , 0xFE , 0x10 , 0x10 , 0x10 , 0xFE , 0xFE , 0x00 , //H//
    0x00 , 0x00 , 0x82 , 0xFE , 0xFE , 0x82 , 0x00 , 0x00 , //I//
    0xFE , 0xFE , 0x60 , 0x30 , 0x18 , 0xFE , 0xFE , 0x00 , //N//
    0x00 , 0x00 , 0x82 , 0xFE , 0xFE , 0x82 , 0x00 , 0x00 , //I//
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 ,
    0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00
    };






    void main(void)
    {
    DDRA=0xff;
    DDRC=0xff;
    DDRD=0xff;

    while(1)
    {
    for(s=0;s<=127;s++)
    {
    e=s+7;
    for(refresh=1;refresh<=7;refresh++)
    {
    scan=0x01;
    for(index=s;s<=e;index++)
    {
    a=index;
    PORTD=text[a];
    PORTC=1;
    PORTC=0;
    a=index+8;
    PORTD=text[a];
    PORTC=2;
    PORTC=0;
    a=index+16;
    PORTD=text[a];
    PORTC=4;
    PORTC=0;
    a=index+24;
    PORTD=text[a];
    PORTC=8;
    PORTC=0;

    PORTA=scan;
    scan=(1<<scan);
    delay_us(250);
    PORTA=0x00;

    }
    }
    }
    }
    }

    اگه ممکنه دوستان کمی روی این برنامه کارکنن با تشکر ...................

  15. #13
    کاربر علاقه مند rbm آواتار ها
    تاریخ عضویت
    Jul 2009
    نوشته ها
    30
    تشکر
    18
    تشکر شده 16 بار در 10 پست

    پیش فرض

    اینجور که معلومه شما تو دستور شفتی که نوشتید عدد 1 رو scan بار شیفت دادید!! ( برعکس نوشته شده )

  16. #14
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    28
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    Icon16

    سلام - خب حالا کجا باید دست بوره ؟ scan ......

  17. #15
    کاربر علاقه مند
    تاریخ عضویت
    May 2009
    نوشته ها
    28
    تشکر
    0
    تشکر شده 2 بار در 2 پست

    Icon16

    سلام - خب حالا کجا باید دست بخوره ؟ scan ...... یا..

  18. #16
    کاربر علاقه مند rbm آواتار ها
    تاریخ عضویت
    Jul 2009
    نوشته ها
    30
    تشکر
    18
    تشکر شده 16 بار در 10 پست

    پیش فرض

    باید جای scan و 1 رو عوض کنی یعنی از چپ با راست اول scan باشه بعد 1

موضوعات مشابه

  1. [درخواست] کمک در برنامه نویسی پروژه
    توسط ciscozagros در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 08-01-2014, 12:45
  2. برنامه نویسی
    توسط darkknightrob در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 9
    آخرين نوشته: 29-08-2013, 05:02
  3. برنامه نویسی در بسکام
    توسط ehsan88 در انجمن AVR
    پاسخ: 4
    آخرين نوشته: 03-07-2013, 10:59
  4. کمک برای یه مشکل در برنامه نویسی
    توسط sky_man847 در انجمن AVR
    پاسخ: 3
    آخرين نوشته: 13-09-2012, 01:16
  5. کمک در مورد برنامه نویسی pic
    توسط ehsanarn در انجمن PIC
    پاسخ: 2
    آخرين نوشته: 20-05-2010, 23:08

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •