اطلاعیه

Collapse
No announcement yet.

تایمر دو

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

    تایمر دو

    با سلام خدمت همه دوستان عزیز.
    من مدارمدار فرکانسمتر زیر رو با مگا 8 اجرا کردم و وقتی تو میکرو پروگرمش کردم اجرا نمیشه . ولی وقتی ASYNC = off قرار میدم کار میکنه. ولی هرچی فرکانس رو تغییر میدم . هیچ اثری نداره و LCD عدد صفر رو نشون میده . وقتی هم ASYNC =on قرارمیدم ، دیگه LCD اصلا هیچی نشون نمیده. تورو خدا کمکم کنید. با تشکر.

    در ضمن من از کریستال خارجی 16 مگ استفاده میکنم

    کد:
    $regfile = "M8def.dat"
    $crystal = 16000000
    Dim Count As Long
    Dim I As Long
    Dim J As Long
    
    
    Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = _
    Portc.3 , E = Portd.2 , Rs = Portd.3
    Config Lcd = 16 * 2
    Config Timer1 = Counter , Edge = Falling
    'Ddrb.1 = 0 : Portb.1 = 1
    Counter1 = 0
    
    Count = 0
    I = 0
    
    Config Timer2 = Timer , Async = Off , Prescale = 1     '
    Enable Interrupts
    Enable Timer2
    Enable Ovf2
    On Ovf2 Timer2_isr
    
    Stop Timer2
    Start Timer2
    
    Do
    Loop
    
    End
    
    Timer2_isr:
    
    Stop Timer2
      Count = Count + Counter1
    
      Counter1 = 0
      I = I + 1
    
    
      If I = 128 Then
    
       Cls
       Upperline
       Lcd " FREQ = " ; Count ; " HZ"
    
       Print " FREQ = " ; Count ; " HZ"
    
       Counter1 = 0
       Count = 0
       I = 0
       Timer2 = 0
    Count = 0 
    End If
    
      Start Timer2
    
    Return
    http://www.sharjweb.com/

    #2
    پاسخ : تایمر دو

    با درود . . .




    $regfile = "m16def.dat"
    $crystal = 1000000

    Config Clock = Soft , Gosub = Sectic
    Config Timer1 = Counter , Edge = Rising

    Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = _
    Portd.7 , E = Portd.3 , Rs = Portd.2
    Ddrd.1 = 1 : Portd.1 = 0

    Cursor Off
    Config Lcd = 16 * 2
    Cls

    Enable Interrupts
    Enable Ovf1

    On Ovf1 Pulse

    Dim A As Long , B As Single , C As Single

    Ddrb.1 = 0 : Portb.1 = 1


    Do


    Loop


    End

    Sectic:

    A = A * 65536
    A = A + Counter1
    Counter1 = 0
    B = A / 1000
    C = A / 1000000
    Cls

    If A >= 1000 Then
    If A > 1000000 Then
    Locate 1 , 4
    Lcd "F=" ; Fusing(c , "#.##&quot ; " MHz "
    jmp l1
    End If
    Locate 1 , 4
    Lcd "F=" ; Fusing(b , "#.##&quot ; " KHz "

    Else

    Locate 1 , 5
    Lcd "F=" ; A ; " Hz "
    End If

    L1:
    A = 0

    Return

    Pulse:
    Incr A
    Counter1 = 0
    Return

    درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

    به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
    بدرود . . .

    دیدگاه

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