اطلاعیه

Collapse
No announcement yet.

اختلاف فازه 180 درجه

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

    اختلاف فازه 180 درجه

    با سلام من یه برنامه نو شتم که دوتا شکل موج مربعی با فرکانس و پهنای پالسه متغیر میسازه من میخوام یکی از موجام 180 درجه از اون یکی جلوتر باشه اما نمیتونم این کارا بکنم تو را خدا کمک کنید ممنون میشم
    اینم برنامم
    $regfile = "m64def.dat"
    $crystal = 8000000

    Vp1 Alias Portb.4 'change to portx.x based on hardware
    Vp2 Alias Portb.5 'change to portx.x based on hardware
    Config Portb = Output

    Config Timer1 = Timer , Prescale = 1
    Config Timer3 = Timer , Prescale = 1

    Enable Timer1
    Enable Timer3

    On Timer1 Ovf1routin
    On Timer3 Ovf3routin

    Declare Sub Fduty
    Dim T As Byte
    Dim T_o As Word
    Dim F_on_1 As Byte
    Dim F_on_2 As Byte
    Dim A As Bit , B As Bit


    Dim Ontime As Word , Offtime As Word , F As Single , T2 As Single , Dc As Byte , F2 As Single , Dc1 As Byte , T1 As Single
    Dim Ton As Single , Toff As Single , T_s As Integer , Dtime As Single , Dtime1 As Word , Offtime1 As Word
    Enable Interrupts


    F = 7000
    Dc = 50
    Call Fduty
    Do

    Loop
    End

    Return
    Ovf1routin:
    If A = 0 Then
    Stop Timer1
    'Reset Invert

    Timer1 = Offtime
    Start Timer1
    Vp1 = 0
    End If
    If A = 1 Then
    Stop Timer1
    Timer1 = Ontime
    Timer3 = Dtime1
    'Set Invert
    Start Timer1
    Start Timer3
    Vp1 = 1
    End If
    Toggle A
    Return

    Ovf3routin:
    If B = 0 Then
    Stop Timer3
    Timer3 = Ontime
    Start Timer3
    Vp2 = 1
    Else
    Stop Timer3

    Timer3 = Offtime
    Start Timer3
    Vp2 = 0
    End If
    Toggle B
    Return
    Sub Fduty
    If Dc > 10 Or Dc < 90 Then
    Select Case F
    Case 1000 : F2 = F * 1.018
    Case 1100 : F2 = F * 1.0142
    Case 1200 : F2 = F * 1.0296
    Case 1300 : F2 = F * 1.0283
    Case 1400 : F2 = F * 1.0304
    Case 1500 : F2 = F * 1.026
    Case 1600 : F2 = F * 1.032
    Case 1700 : F2 = F * 1.0404
    Case 1800 : F2 = F * 1.0386
    Case 1900 : F2 = F * 1.0431
    Case 2000 : F2 = F * 1.042
    Case 2100 : F2 = F * 1.0458
    Case 2200 : F2 = F * 1.0516
    Case 2300 : F2 = F * 1.0442
    Case 2400 : F2 = F * 1.0536
    Case 2500 : F2 = F * 1.05
    Case 2600 : F2 = F * 1.0556
    Case 2700 : F2 = F * 1.053
    Case 2800 : F2 = F * 1.0612
    Case 2900 : F2 = F * 1.0614
    Case 3000 : F2 = F * 1.065
    Case 3100 : F2 = F * 1.0633
    Case 3200 : F2 = F * 1.0656
    Case 3300 : F2 = F * 1.0692
    Case 3400 : F2 = F * 1.071
    Case 3500 : F2 = F * 1.071
    Case 3600 : F2 = F * 1.0764
    Case 3700 : F2 = F * 1.0804
    Case 3800 : F2 = F * 1.083
    Case 3900 : F2 = F * 1.0764
    Case 4000 : F2 = F * 1.088
    Case 4100 : F2 = F * 1.0906
    Case 4200 : F2 = F * 1.092
    Case 4300 : F2 = F * 1.1008
    Case 4400 : F2 = F * 1.0912
    Case 4500 : F2 = F * 1.0935
    Case 4600 : F2 = F * 1.0994
    Case 4700 : F2 = F * 1.0951
    Case 4800 : F2 = F * 1.104
    Case 4900 : F2 = F * 1.1123
    Case 5000 : F2 = F * 1.10316
    Case 5100 : F2 = F * 1.1118
    Case 5200 : F2 = F * 1.1128
    Case 5300 : F2 = F * 1.1183
    Case 5400 : F2 = F * 1.1178
    Case 5500 : F2 = F * 1.111
    Case 5600 : F2 = F * 1.1144
    Case 5700 : F2 = F * 1.1229
    Case 5800 : F2 = F * 1.1194
    Case 5900 : F2 = F * 1.1269
    Case 6000 : F2 = F * 1.1262
    Case 6100 : F2 = F * 1.12972
    Case 6200 : F2 = F * 1.1315
    Case 6300 : F2 = F * 1.134
    Case 6400 : F2 = F * 1.1328
    Case 6500 : F2 = F * 1.1375
    Case 6600 : F2 = F * 1.1352
    Case 6700 : F2 = F * 1.1457
    Case 6800 : F2 = F * 1.1424
    Case 6900 : F2 = F * 1.1385
    Case 7000 : F2 = F * 1.148
    Case 7100 : F2 = F * 1.1502
    Case 7200 : F2 = F * 1.1448
    Case 7300 : F2 = F * 1.1534
    Case 7400 : F2 = F * 1.1618
    Case 7500 : F2 = F * 1.155
    Case 7600 : F2 = F * 1.1552
    Case 7700 : F2 = F * 1.1627
    Case 7800 : F2 = F * 1.17
    Case 7900 : F2 = F * 1.1692
    Case 8000 : F2 = F * 1.168
    Case 8100 : F2 = F * 1.1745
    Case 8200 : F2 = F * 1.1726
    Case 8300 : F2 = F * 1.1786
    Case 8400 : F2 = F * 1.1676
    Case 8500 : F2 = F * 1.1815
    Case 8600 : F2 = F * 1.1782
    Case 8700 : F2 = F * 1.1832
    Case 8800 : F2 = F * 1.188
    Case 8900 : F2 = F * 1.1837
    Case 9000 : F2 = F * 1.179
    Case 9100 : F2 = F * 1.1921
    Case 9200 : F2 = F * 1.196
    Case 9300 : F2 = F * 1.1997
    Case 9400 : F2 = F * 1.2032
    Case 9500 : F2 = F * 1.197
    Case 9600 : F2 = F * 1.2096
    Case 9700 : F2 = F * 1.2125
    Case 9800 : F2 = F * 1.2152
    Case 9900 : F2 = F * 1.2177
    Case 10000 : F2 = F * 1.21
    Case 10100 : F2 = F * 1.2019
    Case 10200 : F2 = F * 1.2138
    Case 10300 : F2 = F * 1.2154
    Case 10400 : F2 = F * 1.2272
    Case 10500 : F2 = F * 1.2285
    Case 10600 : F2 = F * 1.219
    Case 10800 : F2 = F * 1.2204
    Case 11000 : F2 = F * 1.2534
    Case 11000 To 11500 : F2 = F * 1.2584
    Case 11500 To 12000 : F2 = F * 1.275
    Case 12000 To 12500 : F2 = F * 1.3
    Case 12500 To 13000 : F2 = F * 1.32
    Case 13000 To 13500 : F2 = F * 1.327
    Case 13500 To 14000 : F2 = F * 1.350
    Case 14000 To 14500 : F2 = F * 1.370
    Case 14500 To 15000 : F2 = F * 1.390
    Case 15000 To 15500 : F2 = F * 1.415
    Case 15500 To 16000 : F2 = F * 1.435
    Case 16000 To 16500 : F2 = F * 1.458
    Case 16500 To 17000 : F2 = F * 1.475
    Case 17000 To 17500 : F2 = F * 1.492
    Case 17500 To 18000 : F2 = F * 1.515
    Case 18000 To 18500 : F2 = F * 1.535
    Case 18500 To 19000 : F2 = F * 1.565
    Case 19000 To 19500 : F2 = F * 1.591
    Case 19500 To 20000 : F2 = F * 1.61
    Case 20000 To 20500 : F2 = F * 1.620
    Case 20500 To 21000 : F2 = F * 1.665
    Case 21000 To 21500 : F2 = F * 1.675
    Case 21500 To 22000 : F2 = F * 1.685
    Case 22000 To 22500 : F2 = F * 1.74
    Case 22500 To 23000 : F2 = F * 1.755
    Case 23000 To 23500 : F2 = F * 1.79
    Case 23500 To 24000 : F2 = F * 1.835
    Case 24000 To 24500 : F2 = F * 1.865
    Case 24500 To 25000 : F2 = F * 1.90
    Case 25000 To 25500 : F2 = F * 1.95
    Case 25500 To 26000 : F2 = F * 2.01
    Case 26000 To 26500 : F2 = F * 2.02
    'Case 26500 : F2 = F * 2.05
    End Select
    End If

    If Dc = 10 Or Dc = 90 Then
    Select Case F
    Case 1000 : F2 = F * 1.018
    Case 1100 : F2 = F * 1.0142
    Case 1200 : F2 = F * 1.0296
    Case 1300 : F2 = F * 1.0283
    Case 1400 : F2 = F * 1.0304
    Case 1500 : F2 = F * 1.026
    Case 1600 : F2 = F * 1.032
    Case 1700 : F2 = F * 1.0404
    Case 1800 : F2 = F * 1.0386
    Case 1900 : F2 = F * 1.0431
    Case 2000 : F2 = F * 1.042
    Case 2100 : F2 = F * 1.0458
    Case 2200 : F2 = F * 1.0516
    Case 2300 : F2 = F * 1.0442
    Case 2400 : F2 = F * 1.0536
    Case 2500 : F2 = F * 1.05
    Case 2600 : F2 = F * 1.0556
    Case 2700 : F2 = F * 1.053
    Case 2800 : F2 = F * 1.0612
    Case 2900 : F2 = F * 1.0614
    Case 3000 : F2 = F * 1.065
    Case 3100 : F2 = F * 1.0633
    Case 3200 : F2 = F * 1.0656
    Case 3300 : F2 = F * 1.0692
    Case 3400 : F2 = F * 1.071
    Case 3500 : F2 = F * 1.071
    Case 3600 : F2 = F * 1.0764
    Case 3700 : F2 = F * 1.0804
    Case 3800 : F2 = F * 1.083
    Case 3900 : F2 = F * 1.0764
    Case 4000 : F2 = F * 1.088
    Case 4100 : F2 = F * 1.0906
    Case 4200 : F2 = F * 1.092
    Case 4300 : F2 = F * 1.1008
    Case 4400 : F2 = F * 1.0912
    Case 4500 : F2 = F * 1.0935
    Case 4600 : F2 = F * 1.0994
    Case 4700 : F2 = F * 1.0951
    Case 4800 : F2 = F * 1.104
    Case 4900 : F2 = F * 1.1123
    Case 5000 : F2 = F * 1.10316
    Case 5100 : F2 = F * 1.1118
    Case 5200 : F2 = F * 1.1128
    Case 5300 : F2 = F * 1.1183
    Case 5400 : F2 = F * 1.1178
    Case 5500 : F2 = F * 1.111
    Case 5600 : F2 = F * 1.1144
    Case 5700 : F2 = F * 1.1229
    Case 5800 : F2 = F * 1.1194
    Case 5900 : F2 = F * 1.1269
    Case 6000 : F2 = F * 1.1262
    Case 6100 : F2 = F * 1.12972
    Case 6200 : F2 = F * 1.1315
    Case 6300 : F2 = F * 1.134
    Case 6400 : F2 = F * 1.1328
    Case 6500 : F2 = F * 1.1375
    Case 6600 : F2 = F * 1.1352
    Case 6700 : F2 = F * 1.1457
    Case 6800 : F2 = F * 1.1424
    Case 6900 : F2 = F * 1.1385
    Case 7000 : F2 = F * 1.148
    Case 7100 : F2 = F * 1.1502
    Case 7200 : F2 = F * 1.1448
    Case 7300 : F2 = F * 1.1534
    Case 7400 : F2 = F * 1.1618
    Case 7500 : F2 = F * 1.155
    Case 7600 : F2 = F * 1.1552
    Case 7700 : F2 = F * 1.1627
    Case 7800 : F2 = F * 1.17
    Case 7900 : F2 = F * 1.1692
    Case 8000 : F2 = F * 1.168
    Case 8100 : F2 = F * 1.1745
    Case 8200 : F2 = F * 1.1726
    Case 8300 : F2 = F * 1.1786
    Case 8400 : F2 = F * 1.1676
    Case 8500 : F2 = F * 1.1815
    Case 8600 : F2 = F * 1.1782
    Case 8700 : F2 = F * 1.1832
    Case 8800 : F2 = F * 1.188
    Case 8900 : F2 = F * 1.1837
    Case 9000 : F2 = F * 1.185
    Case 9100 : F2 = F * 1.1921
    Case 9200 : F2 = F * 1.196
    Case 9300 : F2 = F * 1.1997
    Case 9400 : F2 = F * 1.2032
    Case 9500 : F2 = F * 1.197
    Case 9600 : F2 = F * 1.2096
    Case 9700 : F2 = F * 1.2125
    Case 9800 : F2 = F * 1.2152
    Case 9900 : F2 = F * 1.2177
    Case 10000 : F2 = F * 1.21
    Case 10100 : F2 = F * 1.2019
    Case 10200 : F2 = F * 1.2138
    Case 10300 : F2 = F * 1.2154
    Case 10400 : F2 = F * 1.2272
    Case 10500 : F2 = F * 1.2285
    Case 10600 : F2 = F * 1.219
    Case 10800 : F2 = F * 1.2204
    'Case 11000 : F2 = F * 1.2534
    'Case 11500 : F2 = F * 1.2584
    'Case 12000 : F2 = F * 1.295
    'Case 12500 : F2 = F * 1.3
    'Case 13000 : F2 = F * 1.35
    Case 11000 To 11500 : F2 = F * 1.2580
    Case 11500 To 12000 : F2 = F * 1.93
    Case 12000 To 12500 : F2 = F * 1.299
    Case 12500 To 13000 : F2 = F * 1.35
    Case 13000 To 13500 : F2 = F * 1.37
    Case 13500 To 14000 : F2 = F * 1.41
    Case 14500 To 15000 : F2 = F * 1.47
    Case 15000 To 15500 : F2 = F * 1.52
    Case 15500 To 16000 : F2 = F * 1.55
    Case 16000 To 16500 : F2 = F * 1.58
    Case 16500 To 17000 : F2 = F * 1.61
    Case 17000 To 17500 : F2 = F * 1.65
    Case 17500 To 18000 : F2 = F * 1.68
    Case 18000 To 18500 : F2 = F * 1.73
    Case 18500 To 19000 : F2 = F * 1.80
    Case 19000 To 19500 : F2 = F * 1.83
    Case 19500 To 20000 : F2 = F * 1.87
    Case 20000 To 20500 : F2 = F * 1.93
    Case 20500 To 21000 : F2 = F * 1.98
    Case 21000 To 21500 : F2 = F * 2.06
    Case 21500 To 22000 : F2 = F * 2.12
    Case 22000 To 22500 : F2 = F * 2.17
    Case 22500 To 23000 : F2 = F * 2.25
    Case 23000 To 23500 : F2 = F * 2.33
    Case 23500 To 24000 : F2 = F * 2.44
    Case 24000 To 24500 : F2 = F * 2.50
    Case 24500 To 25000 : F2 = F * 2.61
    Case 25000 To 25500 : F2 = F * 2.73
    Case 25500 To 26000 : F2 = F * 2.82
    Case 26000 To 26500 : F2 = F * 2.95
    End Select
    End If
    '******************************************** ***********************************
    '-------------------------------------------------------------------------------
    T2 = 8000000 / F2
    'T2 = T2 / 10
    T1 = T2 / 2
    Ton = Dc * T2
    Ton = Ton / 100
    Toff = T2 - Ton
    Ontime = 65536 - Ton
    Offtime = 65536 - Toff
    'Offtime = Offtime / 10
    Dtime1 = 65536 - T1
    Dtime1 = Dtime1
    Timer1 = Ontime
    Timer3 = Dtime1
    Stop Timer1
    Stop Timer3
    Vp1 = 1
    Vp2 = 0
    Start Timer1
    Start Timer3
    End Sub Fduty 'end program
لطفا صبر کنید...
X