اطلاعیه

Collapse
No announcement yet.

led چشمک زن در کنار برنامه اصلی

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

    led چشمک زن در کنار برنامه اصلی

    سلام دوستان
    اقا من میخوام در کنار پروژه ای که توی کتاب اقای کاهه هست ( اتصال کیبرد کامپیوتر به avr و نمایش روی ال سی دی کارکتری )
    یه led هم همزمان با اجرای پروژه چشمک بزنه ممنون میشم بگین باید چکار کنم
    این سورس برنامه است
    کد:
    $regfile = "M32def.dat"
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = _
    Portc.4 , E = Portd.2 , Rs = Portd.3
    Config Lcd = 16 * 2
    Config Keyboard = Pind.5 , Data = Pind.6 , Keydata = Keydata
    Dim A As Byte
    Waitms 500
    Cls
    Main:
    A = Getatkbd()
    Select Case A:
      Case 50:
       Lowerline
      Case 56:
       Home
      Case 44:
      Cls
      Home
      Case 52:
       Shiftcursor Left
      Case 54:
      Shiftcursor Right
      Case 13:
       Lowerline
      Case 9:
      Shiftcursor Right , 4
      Case 8:
      Shiftcursor Left
       Lcd " ";
          Shiftcursor Left
      Case Else Lcd String(1 , A)
    End Select
    jmp main
    End                             'end program
    
    Keydata:
    'normal keys lower case
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 27 , 0 , 0 , 0 , 0 , 9 , 9 , &H5E , 0
    Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
    Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
    Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
    Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
    Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
    Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
    
    'shifted keys UPPER case
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
    Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
    Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
    Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
    Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
    Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0

    #2
    پاسخ : led چشمک زن در کنار برنامه اصلی

    نوشته اصلی توسط amin007
    سلام دوستان
    اقا من میخوام در کنار پروژه ای که توی کتاب اقای کاهه هست ( اتصال کیبرد کامپیوتر به avr و نمایش روی ال سی دی کارکتری )
    یه led هم همزمان با اجرای پروژه چشمک بزنه ممنون میشم بگین باید چکار کنم
    این سورس برنامه است
    کد:
    $regfile = "M32def.dat"
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portc.1 , Db5 = Portc.2 , Db6 = Portc.3 , Db7 = _
    Portc.4 , E = Portd.2 , Rs = Portd.3
    Config Lcd = 16 * 2
    Config Keyboard = Pind.5 , Data = Pind.6 , Keydata = Keydata
    Dim A As Byte
    Waitms 500
    Cls
    Main:
    A = Getatkbd()
    Select Case A:
      Case 50:
       Lowerline
      Case 56:
       Home
      Case 44:
      Cls
      Home
      Case 52:
       Shiftcursor Left
      Case 54:
      Shiftcursor Right
      Case 13:
       Lowerline
      Case 9:
      Shiftcursor Right , 4
      Case 8:
      Shiftcursor Left
       Lcd " ";
          Shiftcursor Left
      Case Else Lcd String(1 , A)
    End Select
    jmp main
    End                             'end program
    
    Keydata:
    'normal keys lower case
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 27 , 0 , 0 , 0 , 0 , 9 , 9 , &H5E , 0
    Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
    Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
    Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
    Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
    Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
    Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
    
    'shifted keys UPPER case
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
    Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
    Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
    Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
    Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
    Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
    یه کانتر تایمر رو راه بندازین
    تو وقفه سر ریزش کارتونو انجام بدین
    شاید با PWM هم بتونین
    آموزش ساخت جعبه برای مدار با نرم افزار Corel Draw - آموزش طراحی تابلو ثابت با Corel Draw و LED Tool - آموزش کرک LED Tool

    116 کتابخانه مورد نیاز برای Altium Designer

    از دروغ متنفرم؛ هرچند در این مملکت به جرم صداقت، کودن نامیده شوم.

    دیدگاه


      #3
      پاسخ : led چشمک زن در کنار برنامه اصلی

      آره آقا مسعود درست میگن باید تو وقفه ی یه تایمر کار دومت رو انجام بدی.
      ?Why not

      دیدگاه


        #4
        پاسخ : led چشمک زن در کنار برنامه اصلی

        دوستان یه خرده بیشتر توضیح بدن من ممنون میشم ، من کاملا مبتدیم
        الان دو تا مشکل پیش اومد
        یکی اینکه من این کدها رو به ابتدای برنامه ( قبل از اون خطی که نوشته dim A AS byte ) اضافه کردم ، منتها فقط led کار میکنه و دیگه برنامه کار نمیکنه
        کد:
        Config Int0 = Falling
        Enable Interrupts
        Enable Int0
        On Int0 Main Nosave
        Do
        Waitms 400
        Set Ddra
        Set Portd.4
        Waitms 400
        Reset Portd.4
        loop
        مشکل دوم اینه که led با نور بسیار کم چشمک میزنه ، مگه atmega8 مقاومت بالاکش نداره؟
        باید چکارش کنم درست شه؟ به پورت d وصل کردم

        دیدگاه


          #5
          پاسخ : led چشمک زن در کنار برنامه اصلی

          نوشته اصلی توسط amin007
          دوستان یه خرده بیشتر توضیح بدن من ممنون میشم ، من کاملا مبتدیم
          الان دو تا مشکل پیش اومد
          یکی اینکه من این کدها رو به ابتدای برنامه ( قبل از اون خطی که نوشته dim A AS byte ) اضافه کردم ، منتها فقط led کار میکنه و دیگه برنامه کار نمیکنه
          کد:
          Config Int0 = Falling
          Enable Interrupts
          Enable Int0
          On Int0 Main Nosave
          Do
          Waitms 400
          Set Ddra
          Set Portd.4
          Waitms 400
          Reset Portd.4
          loop
          مشکل دوم اینه که led با نور بسیار کم چشمک میزنه ، مگه atmega8 مقاومت بالاکش نداره؟
          باید چکارش کنم درست شه؟ به پورت d وصل کردم
          با سلام
          از دستور toggle میتونید استفاده کنید
          پورتی که میخواید رو output کنید
          toggle pin
          جای pin شماره ی پین مورد نظر و بعد هم هرچقدر که خواستید مکث کنه بهش بدید
          مثالش توی help بسکام هست
          اگر متوجه نشدید نمونه برنامه بدم
          مفید بود ؟ بجای اسپم میتونید از دکمه ی تشکر استفاده کنید.
          [img width=405 height=100]http://eros8631.persiangig.com/image/pp.png[/img]

          دیدگاه


            #6
            پاسخ : led چشمک زن در کنار برنامه اصلی

            اگه نمونه بزاری خیلی لطف میکنی
            حلقه نذارم که یه بار بیشتر چشمک نمیزنه...

            دیدگاه


              #7
              پاسخ : led چشمک زن در کنار برنامه اصلی

              نوشته اصلی توسط amin007
              اگه نمونه بزاری خیلی لطف میکنی
              حلقه نذارم که یه بار بیشتر چشمک نمیزنه...
              خوابم میاد چت زدم :mrgreen:
              ویرایش شد
              حلقه هم باید بزارید
              اینم مثال help خود بسکام هست : (توی help کلمه ی toggle رو سرچ کنید توضیحات هم میبینید)
              کد:
              $baud = 19200
              $crystal = 16000000
              $regfile = "m32def.dat"
               
              $hwstack = 40
              $swstack = 20
              $framesize = 20
               
              Dim B As Byte , W As Word , I As Integer , L As Long
              Led Alias Portb.0                      'the anode of the LED connected to PortB.0, cathode with resistor (470 Ohm) to ground
              Config Pinb.0 = Output
               
              B = 0
              Reset Led
              'Toggle the led
              Do
               Print "Led is off "
               Waitms 500
               Toggle Led
               Print "Led is on "
               Waitms 500
               Toggle Led
               Incr B
              Loop Until B = 5
              مفید بود ؟ بجای اسپم میتونید از دکمه ی تشکر استفاده کنید.
              [img width=405 height=100]http://eros8631.persiangig.com/image/pp.png[/img]

              دیدگاه


                #8
                پاسخ : led چشمک زن در کنار برنامه اصلی

                آقا مشکل نور led حل شد ، دستتون درد نکنه
                ولی مشکل استفاده از وقفه و تایمر ها همچنان پابرجاست
                ببینید اگه من درست فهمیده باشم ، برنامه باید به این شکل کار کنه ، که در حالت عادی led چشمک میزنه ( که در واقع برنامه اصلیمون هست)
                بعد وقتی کلیدی روی کیبرد فشار داده میشه ، میکرو یه لحظه به برنامه فرعی که همون کیبرد هست جواب میده و دوباره برمیگرده و led چشمک میزنه
                خب حالا میکرو توسط یه پایه باید خبر دار بشه که کلیدی روی کیبرد فشار داده شده دیگه درسته؟
                این پایه مگه وقفه خارجی یا همون int0 یا پایه 4 میکرو atmega8 نیست؟
                خب اگه اینجوری باشه من باید مدارم رو تغییر بدم یعنی؟ یعنی کلاک کیبرد رو به پایه 4 میکرو وصل کنم؟
                یه مقدار گیج شدم ، چجوری باید با تایمر بدون وقفه خارجی این کار رو کرد
                این مدار منه ، لازمه شکل مدار رو عوض کنم ؟ اگه نه لطف کنید بگید چجوری led رو در کنار برنامه ام راه بندازم؟؟؟

                دیدگاه


                  #9
                  پاسخ : led چشمک زن در کنار برنامه اصلی

                  نوشته اصلی توسط amin007
                  آقا مشکل نور led حل شد ، دستتون درد نکنه
                  ولی مشکل استفاده از وقفه و تایمر ها همچنان پابرجاست
                  ببینید اگه من درست فهمیده باشم ، برنامه باید به این شکل کار کنه ، که در حالت عادی led چشمک میزنه ( که در واقع برنامه اصلیمون هست)
                  بعد وقتی کلیدی روی کیبرد فشار داده میشه ، میکرو یه لحظه به برنامه فرعی که همون کیبرد هست جواب میده و دوباره برمیگرده و led چشمک میزنه
                  خب حالا میکرو توسط یه پایه باید خبر دار بشه که کلیدی روی کیبرد فشار داده شده دیگه درسته؟
                  این پایه مگه وقفه خارجی یا همون int0 یا پایه 4 میکرو atmega8 نیست؟
                  خب اگه اینجوری باشه من باید مدارم رو تغییر بدم یعنی؟ یعنی کلاک کیبرد رو به پایه 4 میکرو وصل کنم؟
                  یه مقدار گیج شدم ، چجوری باید با تایمر بدون وقفه خارجی این کار رو کرد
                  این مدار منه ، لازمه شکل مدار رو عوض کنم ؟ اگه نه لطف کنید بگید چجوری led رو در کنار برنامه ام راه بندازم؟؟؟
                  بابا چرا اینقدر خودتو اذیت میکنی؟
                  به وقفه خارجی چیکار داری تو؟
                  یه تایمر رو با دستور زیر راه بنداز:

                  کد:
                  Config Timer1 = Timer , Prescale = 1
                  بعدم تو سر ریزش یه متغییر رو افزایش بده

                  کد:
                  Enable Interrupts
                  Enable Timer1
                  Start Timer1
                  Enable Ovf1
                  On Ovf1 LED
                  بعدم یه شرط بذار که متغییر کوچکتر از فلان عدد خاموش
                  بزرگتر از اون عدد روشن

                  کد:
                  Led:
                  Incr L
                  If L=< 100 Then
                  PortXx = 0
                  elseIf L> 100 Then
                  PortXx = 1
                  End If
                  if l=200 then l=0
                  Return

                  این برنامه دقیقا موازی هر برنامه دیگه ای بدون دخالت تو کارش کار خودشو میکنه
                  آموزش ساخت جعبه برای مدار با نرم افزار Corel Draw - آموزش طراحی تابلو ثابت با Corel Draw و LED Tool - آموزش کرک LED Tool

                  116 کتابخانه مورد نیاز برای Altium Designer

                  از دروغ متنفرم؛ هرچند در این مملکت به جرم صداقت، کودن نامیده شوم.

                  دیدگاه


                    #10
                    پاسخ : led چشمک زن در کنار برنامه اصلی

                    آقا خیلی لطف کردی
                    فقط دو تا سوال
                    این کد ها رو کلا به اول برنامه ام اضافه کنم دیگه ؟، قبل از main ؟؟؟
                    بعد اون شرطی که گذاشتین دقیقا چی رو مشخص میکنه ؟، مگه من نمیخوام led همیشه چشمک بزنه ، شرط دیگه چرا؟؟؟

                    دیدگاه


                      #11
                      پاسخ : led چشمک زن در کنار برنامه اصلی

                      با اجازه ی آقا مسعود و jervis جان.

                      نوشته اصلی توسط masoud_m_bf
                      اینا رو بذار بعده معرفیه کریستال

                      کد:
                      Config Timer1 = Timer , Prescale = 1
                      بذار بعد خط بالایی.آ‌آره همین خط بالایی.

                      کد:
                      Enable Interrupts
                      Enable Timer1
                      Start Timer1
                      Enable Ovf1
                      On Ovf1 LED
                      این شرطی رو که ایشون گذاشتند مثل یه مکث کوتاه یا چمیدونم مثله یه wait هست.
                      هر وقت که تایمر با تعاریف اولیه سرریز میشه یه زمانی رو میسازه دیگه. از این خاصیت برای تولید wait استفاده کردند.

                      کد:
                      Led:
                      Incr L
                      If L=< 100 Then
                      PortXx = 0
                      elseIf L> 100 Then
                      PortXx = 1
                      End If
                      if l=200 then l=0
                      Return
                      این خطاها رو هم بذار بعده End
                      ?Why not

                      دیدگاه


                        #12
                        پاسخ : led چشمک زن در کنار برنامه اصلی

                        آقا این error میده : file not found
                        این تیکه رو
                        کد:
                        Incr L
                        If L=< 100 Then
                        PortXx = 0
                        elseIf L> 100 Then
                        PortXx = 1
                        End If
                        if l=200 then l=0
                        که پاک میکنم ارور برطرف میشه
                        جای port هم portd.4 نوشتم...

                        دیدگاه


                          #13
                          پاسخ : led چشمک زن در کنار برنامه اصلی

                          خوده برنامتون رو بذارید.
                          ?Why not

                          دیدگاه


                            #14
                            پاسخ : led چشمک زن در کنار برنامه اصلی

                            پست اول گذاشتم...

                            دیدگاه


                              #15
                              پاسخ : led چشمک زن در کنار برنامه اصلی

                              نه برنامه ای که الان اینا رو هم بهش اضافه کردیو بذار، ارور تو اونه الان.
                              ?Why not

                              دیدگاه

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