اطلاعیه

Collapse
No announcement yet.

تعریف کلید

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تعریف کلید

    سلام
    میخوام سه تا ال ای دی رو با استفاده از یک کلید روشن کنم بطوری که با زدن کلید، led اول روشن.با زدن کلید برای بار دوم ledاول خاموش.ledدوم روشن.برا بار سوم فشار دادن کلید ledدوم خاموش و سومی روشن.برای بار چهارم.led سوم خاموش و اولی روشن.به این ترتیب پیش بره
    نظری دارین.البته بدونه حلقه While.

    #2
    پاسخ : تعریف کلید

    کافیه یک کانتر تعریف کنید که با هر بار زدن کلید یک واحد بهش اضافه بشه و به ازای هر عدد یک کاری رو انجام بده و در این صورت یک کانتر دارید و چند تا IF .
    الهم صل علی محمد و آل محمد و عجل فرجهم
    www.adaksell.com

    دیدگاه


      #3
      پاسخ : تعریف کلید

      خیلی پیچیده شد...کانتر دیگه واسه چی؟؟؟
      واسه چه زبانی می خواید؟؟؟؟بسکام یا کدویژن؟؟؟
      من خودم بسکام کار میکنم و کد مربوط به بسکامو میگم.....
      ببینید مثلا اسم کلید ما SW هست و ال ای دی ها هم به صورت LED1-2-3-4..... شماره گذاری شده....من واسه سه تا ال ای دی رو میگم بعدا خودتون اضافه میکنید...حلقه وایل هم لازم نیست....
      -------------------
      کد:
      Bitwait SW,set
      LED1=1
      Bitwait SW,set
      LED1=0
      Bitwait SW,set
      LED2=1
      [FONT=Yekan]Bitwait SW,set
      [/FONT]LED2=0
      [FONT=Yekan]Bitwait SW,set
      [/FONT]LED3=1
      [FONT=Yekan]Bitwait SW,set
      [/FONT]LED3=0
      .......................
      .......................
      و همینطور ادامه بده تا آخر....موفق باشی...

      دیدگاه


        #4
        پاسخ : تعریف کلید

        نوشته اصلی توسط mojitaba نمایش پست ها
        کافیه یک کانتر تعریف کنید که با هر بار زدن کلید یک واحد بهش اضافه بشه و به ازای هر عدد یک کاری رو انجام بده و در این صورت یک کانتر دارید و چند تا IF .
        پیرو حرف ایشون منم از این روش استفاده میکنم
        کد:
        [FONT=Yekan]Dim Shomarande As Byte
        [/FONT]Config Portb.0 = Input
        Key_next Alias Portb.0
        Config Portb.1 = Output
        Led1 Alias Portb.1
        Config Portb.2 = Output
        Led2 Alias Portb.2
        Config Portb.3 = Output
        Led3 Alias Portb.3
         Shomarande = 0
        Do
        If Key_next = 0 Then
        
        
        Waitms 100
        
        
        If Key_next = 0 Then
        Incr Shomarande
        
        
        If Shomarande = 1 Then Set Led1 : Reset Led2 : Reset Led3
        If Shomarande = 2 Then Set Led2 : Reset Led1 : Reset Led3
        If Shomarande = 3 Then Set Led3 : Reset Led1 : Reset Led2
        If Shomarande > 3 Then Shomarande = 1
        End If
        End If
        Loop
        [FONT=Yekan]End[/FONT]
        دوستان لطفا اگر ایرادی تو کد من میبینن بگن تا منم یاد بگیرم
        جدیدترین ویرایش توسط qmars_farahani; ۲۰:۲۵ ۱۳۹۵/۱۰/۱۴.

        دیدگاه


          #5
          پاسخ : تعریف کلید

          دوست عزیز آقای فراهانی.....من به عنوان برادر کوچیک تر می خوام بهتون بگم که تو برنامه نویسی وقتی راه آسونی وجود داره چرا باید رفت دنبال کد های سخت تر و حجم میکرو کنترلر رو بیخودی پر کرد؟؟؟باید برنامه طوری باشه که آدم بتونه به راحتی بخونه....
          --------------
          متغیر ها فضای زیادی رو واسه خودشون اختصاص میدن...که این روی حجم برنامه خیلی تاثیر میزاره....و مخصوصا دستور های IF....
          تو کدی که من قرار دادم از دستور bitwait استفاده کردم....از هیچ متغیر و شرطی استفاده نکردم...
          این دستور واقعا جالبه...خودش شبیه شرط هست....
          عملکردش اینجوریه که وقتی برنامه به خط این دستور اومد میکرو قفل میشه روی دستور یعنی همه برنامه متوقف میشه و منتظر اجرای شرطی هست که توی این دستور بیان شده...وقتی شرط برقرار شد ، میکرو به خط بعدی میره....یعنی ما بین خط های برنامه یه قفل قرار دادیم و میکرو نمیتونه به خط بعدی بره و ما برقرار کردن شرط قفل رو شکوندیم و میکرو به راحتی به خط های بعدی میره...ببخشیدا البته شاید خودتون با این دستور باشید...من یه کم جسارت کردم...شرمنده دیگه.....
          موفق باشید...

          دیدگاه


            #6
            پاسخ : تعریف کلید

            نوشته اصلی توسط amir4elec نمایش پست ها
            دوست عزیز آقای فراهانی.....من به عنوان برادر کوچیک تر می خوام بهتون بگم که تو برنامه نویسی وقتی راه آسونی وجود داره چرا باید رفت دنبال کد های سخت تر و حجم میکرو کنترلر رو بیخودی پر کرد؟؟؟باید برنامه طوری باشه که آدم بتونه به راحتی بخونه....
            --------------
            متغیر ها فضای زیادی رو واسه خودشون اختصاص میدن...که این روی حجم برنامه خیلی تاثیر میزاره....و مخصوصا دستور های IF....
            تو کدی که من قرار دادم از دستور bitwait استفاده کردم....از هیچ متغیر و شرطی استفاده نکردم...
            این دستور واقعا جالبه...خودش شبیه شرط هست....
            عملکردش اینجوریه که وقتی برنامه به خط این دستور اومد میکرو قفل میشه روی دستور یعنی همه برنامه متوقف میشه و منتظر اجرای شرطی هست که توی این دستور بیان شده...وقتی شرط برقرار شد ، میکرو به خط بعدی میره....یعنی ما بین خط های برنامه یه قفل قرار دادیم و میکرو نمیتونه به خط بعدی بره و ما برقرار کردن شرط قفل رو شکوندیم و میکرو به راحتی به خط های بعدی میره...ببخشیدا البته شاید خودتون با این دستور باشید...من یه کم جسارت کردم...شرمنده دیگه.....
            موفق باشید...
            اتفاقا ممنون از این که روش بهتر رو بهمون پیشنهاد میکنید
            من خودم تازه کارم و کلی چیز باید از شماها یاد بگیرم
            من فقط روش مورد استفاده خودم رو گفتم تا هم یه تمرینی بشه برای خودم هم اگه ایرادی توش بود اساتید بهم بگن هم این دوستمون یه راه دیگه به جز راه شمارو داشته باشه
            بازم ممنون میشم اگه SW رو تو کدتون توضیح بدین

            دیدگاه


              #7
              پاسخ : تعریف کلید

              نوشته اصلی توسط amir4elec نمایش پست ها
              خیلی پیچیده شد...کانتر دیگه واسه چی؟؟؟
              واسه چه زبانی می خواید؟؟؟؟بسکام یا کدویژن؟؟؟
              من خودم بسکام کار میکنم و کد مربوط به بسکامو میگم.....
              ببینید مثلا اسم کلید ما SW هست و ال ای دی ها هم به صورت LED1-2-3-4..... شماره گذاری شده....من واسه سه تا ال ای دی رو میگم بعدا خودتون اضافه میکنید...حلقه وایل هم لازم نیست....
              -------------------
              کد:
              Bitwait SW,set
              LED1=1
              Bitwait SW,set
              LED1=0
              Bitwait SW,set
              LED2=1
              [FONT=Yekan]Bitwait SW,set
              [/FONT]LED2=0
              [FONT=Yekan]Bitwait SW,set
              [/FONT]LED3=1
              [FONT=Yekan]Bitwait SW,set
              [/FONT]LED3=0
              .......................
              .......................
              و همینطور ادامه بده تا آخر....موفق باشی...
              تو این برنامه با فشار دادن کلیدحداقل 50 بار حلقه تکرار میشه . یا تاخیر لازم داره یا دستورات شرطی

              دیدگاه


                #8
                پاسخ : تعریف کلید

                درود...
                آقای فراهانی عزیز...خیالت راحت خود منم تازه کارم....بیخیال...
                اون SW پایه ای که کلید بهش وصله رو آلیاس کردم...
                یعنی من قبلا این تو شروع برنامه این دستور رونوشتم ولی اینجا ننوشتم...این طوری نوشتم...SW همون اول کلمه switch هست....اینجا من خلاصه کردم...مثلا کلید رو به پایه PINB.0 وصلا کردم...
                دستورش::::
                SW alias PINB.0 ...یعنی بعد این میتونتم تو برنامه به جای PINB.0 بنویسم SW...هر وقت مثلا خواستم این پایه رو روشن کنم...مینویسم... SW=1 ....اینطوری پایه روشن میشه..البته این اسم دلبخواهیه شما میتونی هر اسمی که دلت میخواد بنویسی براش...
                ----------------
                آقا یوسف منظورتونو از 50 بار تکرار نفهمیدم....منظورتونو دقیق متوجه نشدم...شرمنده...
                موفق باشید...

                دیدگاه


                  #9
                  پاسخ : تعریف کلید

                  مهندسای عزیز زبان سی بگین ممنون میشم

                  دیدگاه


                    #10
                    پاسخ : تعریف کلید

                    خب همین دستور bitwait به نظر شما چطور درست شده که میگین حجم کدی نداره؟
                    با سی خیلی راحت میشه این کارو کرد فقط کافیه یه دستور سویچ بزارید و یه if برای حالت های شستی و تمام.
                    اگر نمی دونید از کجا شروع کنید تا کدش رو قرار بدم؟
                    چرا ناراحتی پاتریک!
                    + امروز ی بچه دیدم سرچهارراه گل میفروخت
                    - از دیدنش ناراحت شدی؟
                    + نه
                    پس چی ناراحتت کرده
                    + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
                    ------------------------------------------------------------------------------------------------------
                    تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
                    ------------------------------------------------------------------------------------------------------
                    محصولات

                    دیدگاه


                      #11
                      پاسخ : تعریف کلید

                      برنامه به شکل زیر میتونه باشه:
                      #include <mega8.h>
                      unsigned char counter;
                      #define key PINB.0
                      #define led1 PORTC.0
                      #define led2 PORTC.1
                      #define led3 PORTC.2
                      #define led4 PORTC.3
                      void main(void)
                      {
                      while (1)
                      {
                      if(key)counter++;
                      while(key){};
                      if(counter>=4)counter=0;
                      switch (counter)
                      {
                      case 0:
                      led1=1;
                      led2=0;
                      led3=0;
                      led4=0;
                      break;
                      case 1:
                      led1=0;
                      led2=1;
                      led3=0;
                      led4=0;
                      break;
                      case 2:
                      led1=0;
                      led2=0;
                      led3=1;
                      led4=0;
                      break;
                      case 3:
                      led1=0;
                      led2=0;
                      led3=0;
                      led4=1;
                      break;
                      }
                      }
                      }
                      تعاریف از برنامه حذف شده.
                      میکرو ATMega8 isj .پورت C برای led ها در نظر گرفته شده و pinb.0 برای کلید.
                      جدیدترین ویرایش توسط mojitaba; ۱۰:۰۶ ۱۳۹۵/۱۰/۱۹.
                      الهم صل علی محمد و آل محمد و عجل فرجهم
                      www.adaksell.com

                      دیدگاه

                      لطفا صبر کنید...
                      X