اطلاعیه

Collapse
No announcement yet.

مشکل در کار با پروتوس

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

    مشکل در کار با پروتوس

    سلام،

    من میخوام یه برنامه ی ساعت را که با ATMEGA32 ساختم با پروتوس شبیه سازی کنم ولی جواب نمیده. یعنی اصلا برنامه وارد وقفه ی سرریز نمیشه، مشکل از کجاست؟

    همین برنامه در سیمولاتور بسکام درست کار میکنه.
    صلی الله علیک یا اباعبدالله الحسین.

    صلی الله علی الباکین علی الحسین(ع).

    #2
    پاسخ : مشکل در کار با پروتوس

    سلام. دوست عزیز لطف میکنید برنامتونو برامون Upload کنین؟ تا برسی ایش کنیم.
    BNTSTBNT

    دیدگاه


      #3
      پاسخ : مشکل در کار با پروتوس

      سلام،

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

      '**************CLOCK & DATE*************
      $regfile = "m32def.dat" 'atmega32
      $crystal = 8000000 '8MHZ
      Config Lcdpin = Pin , Db4 = Pinb.4 , Db5 = Pinb.5 , Db6 = Pinb.6 , Db7 = Pinb.7_
      , E = Pinb.3 , Rs = Pinb.2
      Config Lcd = 16 * 2
      Cursor Off
      Config Timer0 = Timer , Prescale = 1
      Enable Timer0
      Enable Ovf0
      Enable Interrupts
      Stop Timer0
      Timer0 = 0
      On Ovf0 Tim0_s
      Start Timer0
      Dim Second As Byte , Minute As Byte , Hour As Byte , Timer_count As Integer
      Dim Year As Word , Month As Byte , Day As Byte
      Dim A As Byte , B As Byte
      Day = 1 : Month = 1 : Year = 1385
      Cls

      Do
      Gosub Show_time_date
      Loop
      End 'end program
      '*************
      Tim0_s:
      Incr Timer_count
      If Timer_count > 31250 Then Gosub Time_clock
      Return
      '**************
      Show_time_date:
      Home U
      Lcd "Time:" ; Hour ; ":" ; Minute ; ":" ; Second ; " "
      Home L
      Lcd "Date:" ; Year ; "/" ; Month ; "/" ; Day ; " "
      Return
      '**************
      Time_clock:
      Incr Second : Timer_count = 0
      If Second > 59 Then
      Second = 0 : Incr Minute
      If Minute > 59 Then
      Minute = 0 : Incr Hour
      If Hour > 23 Then
      Hour = 0
      Gosub Dat
      End If
      End If
      End If
      Return
      '**************
      Dat:
      Do
      Day = Day + 1
      If Month <= 6 Then
      If Day > 31 Then
      Month = Month + 1
      Day = 1
      End If
      Exit Do
      End If
      If Month >= 7 And Month <= 11then
      If Day > 30 Then
      Month = Month + 1
      Day = 1
      End If
      Exit Do
      End If
      If Month = 12 Then
      If Day > 29 Then
      Day = 1
      Month = 1
      Year = Year + 1
      End If
      Exit Do
      End If
      Loop
      Return
      '**************
      صلی الله علیک یا اباعبدالله الحسین.

      صلی الله علی الباکین علی الحسین(ع).

      دیدگاه


        #4
        پاسخ : مشکل در کار با پروتوس

        سلام. به نظر میرسه مشکل توی TIMER_count باشه. این متغیر 8 بیتی تعریف، شده ولی در مقایسه عددی که باهاش مقایسه مکنید یک عدد 16 بیتی هستش!
        BNTSTBNT

        دیدگاه


          #5
          پاسخ : مشکل در کار با پروتوس

          سلام،

          مشکل قبلی با کمک آقای شکوهی حل شد.ممنون

          اما یه مشکل جدید: برنامه ی زیر برای PIC16f877 نوشته شده ولی روی LCD در شبیه سازی با پروتوس چیزی نمایش داده نمیشه. آیا دوباره برنامه ایراد داره؟


          DEFINE OSC 4

          DEFINE LCD-DREG PORTD
          DEFINE LCD-DBIT 4
          DEFINE LCD-RSREG PORTD
          DEFINE LCD-RSBIT 3
          DEFINE LCD-EREG PORTD
          DEFINE LCD-EBIT 2
          define LCD-BITS 4
          DEFINE LCD-LINES 2
          x var word
          portc=0
          loop:

          lcdout $fe,1
          lcdout "Hossein"


          if portb.7=1 then
          portc.0=1
          portc.7=0
          else
          portc.0=0
          portc.7=1
          endif

          goto loop
          end

          صلی الله علیک یا اباعبدالله الحسین.

          صلی الله علی الباکین علی الحسین(ع).

          دیدگاه

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