اطلاعیه

Collapse
No announcement yet.

مشکل عجیب با مگا88

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

    مشکل عجیب با مگا88

    سلام دوستان.من یه ساعت -تایمر - دزدگیر واسه ماشین درست کردم.واسه تحریک دزدگیرش از 4 تا اینتراپت که دوتاش پین چنجه استفاده کردم که وقتی در ها باز بشه اینتراپت به لبه پایین رونده حساسه و به کلید در وصل شده و وقتی اینتراپت تحریک بشه میکرو به زیربرنامه اینتراپت مربوطه باید بره و آژیر و چشمک زن را فعال کنه.
    حالا مدار تا ساعات اولیه درست کار میکنه ولی عجیب اینجاست که پس از گذشت چند ساعت که دزدگیر در حالت آماده باش هست وقتی اینتراپت تحریک بشه دزدگیر عمل نمیکنه ولی مثلا اگه ده دقیقه قبل دزدگیر در حالت آماده قرار گرفته باشه درست کار میکنه! :surprised:
    لطفا اگه کسی میتونه کمک کنه. :sad: :cry:
    framesize و stackpointer را هم همه جور عددی دادم ولی نشد.برنامه با بسکام هست و اینم متن برنامه:
    $regfile = "m88def.dat "
    $crystal = 8000000
    '$baud = 19200
    $hwstack = 100 '64
    $swstack = 70 '40
    $framesize = 100 '64


    Dim Kap As String * 30 , Back As String * 30 , Altera As String * 35 , Tamer0 As Bit , Acc1 As Bit
    Dim Dar As String * 30 , S As String * 125 , Dd As String * 10 , Acbit As Bit , Act_bit As Bit , Lak As Bit
    Dim A As Byte , B As Word , C As Byte , D As Bit , E As Bit , Mm As Byte , Interupt As Bit , B_ravan As Byte
    Dim N As Byte , F As Word , Timer_lamp As Word , 1_hour As Bit , Timer_alarm_off As Byte , Km As Bit
    Dim Week As Byte , Rooz As Byte , Maah As Byte , Saal As Word , Kilid As Bit , Tanzim As Bit
    Dim K1 As Bit , K2 As Bit , Kabise As Bit , Haft As Byte , K3 As Bit , Kk2 As Bit , Timer_alarm As Byte
    Dim Lcd_on As Bit , Aa As Byte , Bb As Byte , B1 As Byte , Lamp_on As Bit , T1 As Integer , M As Byte

    Config Portb = &B111111
    Config Portc = &B0001110 ', Ddrc = &B111110
    Config Portd = &B11000000 ', Ddrd = &B00000

    Enable Interrupts

    Config Lcd = 16 * 2
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Pinb.2 , Db5 = Pinb.3 , Db6 = Pinb.4 , Db7 = Pinb.0 , Rs = Pinb.5 , E = Pinb.1

    Deflcdchar 0 , 4 , 10 , 32 , 21 , 31 , 32 , 32 , 32 'sh
    Deflcdchar 1 , 32 , 4 , 32 , 1 , 31 , 32 , 32 , 32 'n
    Deflcdchar 2 , 32 , 32 , 32 , 1 , 31 , 32 , 4 , 32 'b
    Deflcdchar 3 , 12 , 20 , 28 , 4 , 7 , 32 , 32 , 32 'h
    Deflcdchar 4 , 32 , 4 , 10 , 1 , 31 , 32 , 4 , 32 'j
    Deflcdchar 5 , 32 , 32 , 32 , 32 , 31 , 10 , 14 , 32 'm
    Deflcdchar 6 , 32 , 32 , 14 , 4 , 31 , 32 , 32 , 32 'ea

    Config Clock = Soft , Gosub = Sectic
    Set As2
    Time$ = "1200"

    Config Timer1 = Timer , Prescale = 8
    Enable Timer1

    Config Int0 = Falling
    Config Int1 = Falling

    On Pcint1 Kaput
    On Pcint2 Hutch_door
    On Int0 Door
    On Int1 Sensor
    On Ovf1 Faal

    '********************************** I/O
    'b.0--b.5 lcd ** b.6,b.7 crystal
    'PinC.0 pcint1_8 = kaput
    Lcd_light Alias Portc.2
    Siren_alarm Alias Portc.3
    Sw_up Alias Pinc.4
    'pin c.4 adc for power window
    Sw_dwn Alias Pinc.5
    'pin c.5 adc for power window
    'C.6 reset
    Lamp Alias Portc.1
    'Pind.0 pcint2_16 = hutch door
    Active Alias Pind.1
    Door_switch Alias Pind.2
    'Pind.2(int0) = Door switch
    Sw_m Alias Pind.3
    'Pind.3(INT1) = alterasonic sensor
    Deactive Alias Pind.4
    Acc Alias Pind.5
    Sensor_vcc Alias Portd.6
    Flasher Alias Portd.7

    '////////////////////////////////////

    Rooz = 15 : Maah = 6 : Saal = 1394 : Aa = 0 : M = 0 : B_ravan = 6
    Aa = 1
    Cursor Off : Display On
    Start Timer1

    Do

    Loop

    End 'end program

    '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ timer1
    Faal:

    If Acc = 0 Then
    Acc1 = 0 : Acbit = 0

    'for alarm when is unsafe!
    If Km = 1 Then K3 = 0

    '******************************* deactive
    If Deactive = 0 Then
    If Act_bit = 1 Then
    Act_bit = 0
    E = 0 : F = 0
    Kk2 = 0 : K1 = 0 : K2 = 0
    Aa = 0 : Bb = 0 : Km = 1
    Reset Siren_alarm
    Reset Sensor_vcc
    Disable Int1 : Disable Int0 : Pcmsk1 = 0 : Pcmsk2 = 0
    A = 3 : C = 3 : B = 9
    Tamer0 = 1
    Set Flasher
    End If
    End If

    '******************************* active
    If Active = 0 Then
    If Act_bit = 0 Then
    Reset Siren_alarm
    Cls
    ' Display Off :
    Lcd_on = 0
    Set Sensor_vcc
    Reset Lcd_light
    Tamer0 = 0
    Disable Int1 : Disable Int0
    K2 = 1 : K3 = 1 : Km = 0
    Kk2 = 1
    E = 1 : Lamp_on = 0
    Dar = " " : Altera = " " : Kap = " "
    Back = " " : S = " "
    Act_bit = 1
    End If
    End If


    '******************************** ACC ON
    Else

    K3 = 1 : Acc1 = 1
    Lamp_on = 0 : E = 0
    Reset Siren_alarm : Set Lcd_light
    If Door_switch <> 0 Then Reset Lamp

    If Acbit = 0 Then
    Aa = 0 : Bb = 0
    'Display On
    Cls
    Lcd_on = 1
    S = " Oclock,Calendar,Security system,Designed for PEUGEOT 405 by shahpoori. "
    Mm = Len(s)
    Acbit = 1 '
    End If
    End If


    '**************************** Cabin Lamp Timer
    If Acc1 = 0 Then
    If Lamp_on = 1 Then

    Incr Timer_lamp
    If Timer_lamp >= 220 Then
    Lamp_on = 0
    If Door_switch <> 0 Then Reset Lamp
    End If

    Else
    If Door_switch <> 0 Then Reset Lamp
    Timer_lamp = 0
    End If : End If


    '************************** when system is deactive or ACC ON
    If E = 0 Then

    '************************ Goto Menu

    If Sw_m = 0 Then Kilid = 1 Else Kilid = 0

    '*********************** door flasher
    If Door_switch = 0 Then
    If K1 = 0 Then
    Tamer0 = 1
    Set Flasher : Set Lamp
    A = 8 : C = 8 : B = 50
    Lamp_on = 1 : K1 = 1
    End If
    Else
    If K1 = 1 Then : B = 0 : K1 = 0 : End If
    End If

    End If

    '***********************+++++++++++++++++++++ ++++++++/////////////////*****************************
    If K2 = 1 Then
    Incr F
    If F <= 2 Then Set Siren_alarm Else Reset Siren_alarm
    If F <= 20 Then Set Flasher Else Reset Flasher
    If F > 40 Then
    Eimsk = &B11
    Eifr = &B11
    Pcifr = &B000 : Pcicr = &B110
    Pcmsk1 = &B00000001 : Pcmsk2 = &B00000001

    Enable Int1 : Enable Int0

    F = 0
    K2 = 0

    End If

    End If
    '************************************* tablo ravan & setting
    Decr B_ravan
    If B_ravan = 0 Then
    Mm = Len(s)
    Incr Aa : If Aa >= Mm Then Aa = 1


    If Kilid = 1 Then
    Aa = 0
    Bb = 0
    Tanzim = 1
    Incr M
    If M > 6 Then M = 0
    Kilid = 0
    End If
    '******************** setting
    If Tanzim = 1 Then

    Select Case M

    Case Is = 1
    If Sw_up = 1 Then Incr _min
    If Sw_dwn = 1 Then Decr _min
    If _min > 59 Then _min = 0
    S = " set min "


    Case Is = 2
    If Sw_up = 1 Then Incr _hour
    If Sw_dwn = 1 Then Decr _hour
    If _hour > 23 Then _hour = 0
    S = " set hour "


    Case Is = 3
    If Sw_up = 1 Then Incr Week
    If Sw_dwn = 1 Then Decr Week
    If Week > 6 Then Week = 0
    S = " set week "


    Case Is = 4
    If Sw_up = 1 Then Incr Rooz
    If Sw_dwn = 1 Then Decr Rooz
    If Rooz > 31 Then Rooz = 1
    S = " set day "


    Case Is = 5
    If Sw_up = 1 Then Incr Maah
    If Sw_dwn = 1 Then Decr Maah
    If Maah > 12 Then Maah = 1
    S = " set month "


    Case Is = 6
    If Sw_up = 1 Then Incr Saal
    If Sw_dwn = 1 Then Decr Saal
    S = " set year "

    Case Else

    S = " Oclock,Calendar,Security system,Designed for PEUGEOT 405 by shahpoori. "
    M = 0
    Tanzim = 0


    End Select

    End If

    B_ravan = 6
    End If


    '*************************** warning! system unsafe!
    If K3 = 0 Then

    Incr Timer_alarm : Incr Timer_alarm_off
    If Timer_alarm >= 200 Then Set Siren_alarm
    If Timer_alarm >= 201 Then : Reset Siren_alarm : Timer_alarm = 190 : End If

    If Timer_alarm_off >= 250 Then
    Timer_alarm_off = 0 : Timer_alarm = 0
    Reset Siren_alarm
    End If

    Else
    Timer_alarm = 0 : Timer_alarm_off = 0
    End If


    '****************************** show date & time
    Locate 2 , 1
    Lcd Time$
    Locate 1 , 1
    Lcd Saal ; "/" ; Maah ; "/" ; Rooz ; " "

    '**************************************** Show Week
    If Week = 0 Then
    Locate 1 , 12
    Lcd Chr(3) ; Chr(2) ; Chr(1) ; Chr(0) ; " "
    End If
    If Week > 0 And Week < 6 Then
    Locate 1 , 12
    Lcd Chr(3) ; Chr(2) ; Chr(1) ; Chr(0) ; Week
    End If
    If Week = 6 Then
    Locate 1 , 12
    Lcd Chr(3) ; Chr(6) ; Chr(5) ; Chr(4) ; " "
    End If


    '************ show demo/operation
    Locate 2 , 10
    Dd = Mid(s , Aa , 8 )
    Lcd Dd



    '******************************** interrupt routins

    If Kk2 = 1 Then
    If Interupt = 1 Then
    E = 1
    If Lak = 1 Then B = 250 Else B = 1500
    Set Lcd_light
    Aa = 0 : Bb = 0

    'If Lcd_on = 0 Then
    ' Display On :
    ' Cls
    ' Lcd_on = 1
    ' End If

    Set Flasher
    Set Siren_alarm
    A = 8 : C = 8
    S = " " + Kap + Back + Altera + Dar
    Mm = Len(s)
    Tamer0 = 1
    Interupt = 0
    End If
    End If
    '********************** cheshmak
    If Tamer0 = 1 Then
    If A > 0 Then Decr A
    If A = 0 Then
    Toggle Flasher
    A = C
    If B > 0 Then
    A = C
    Else
    Tamer0 = 0
    Reset Siren_alarm
    Reset Flasher
    End If
    '?????
    If B > 0 Then Decr B
    End If
    End If
    Return


    '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ end of timer1


    '*************************** int1
    Sensor:

    Interupt = 1
    Lak = 1
    Altera = " Ultrasonic " + Time$ + " "

    'Set Intf1

    Return


    '************************************** pcint2
    Hutch_door:

    Interupt = 1
    Lak = 0
    Back = " Box " + Time$ + " "

    'Set Pcif2

    Return



    '************************************** int0
    Door:

    Interupt = 1
    Lak = 0
    Dar = " Doors " + Time$ + " "

    'Set Intf0

    Return



    '*************************************** pcint1
    Kaput:

    Interupt = 1
    Lak = 0
    Kap = " Kaput " + Time$ + " "

    'Set Pcif1

    Return



    Sectic:

    '************************************** calendar

    If M = 0 Then

    If Week > 6 Then Week = 0

    If Maah < 7 And Rooz > 31 Then : Incr Maah : Rooz = 1 : End If

    If Maah = 7 And Rooz = 1 And 1_hour = 0 Then : Decr _hour : 1_hour = 1 : End If

    If 7 =< Maah And Maah < 12 And Rooz > 30 Then : Incr Maah : Rooz = 1 : End If

    If Maah = 12 Then

    T1 = Saal Mod 33
    If T1 = 1 Or T1 = 5 Or T1 = 9 Or T1 = 13 Or T1 = 17 Or T1 = 22 Or _
    T1 = 26 Or T1 = 30 Then
    Kabise = 1
    Else
    Kabise = 0
    End If
    If Kabise = 0 Then
    If Rooz > 29 Then
    Incr Saal : Maah = 1 : 1_hour = 0
    Incr _hour : Rooz = 1 : End If
    Else
    If Rooz > 30 Then
    Incr Saal : Maah = 1 : 1_hour = 0
    Rooz = 1 : Incr _hour : End If
    End If
    End If

    If _hour = 00 And _min = 00 And _sec = 00 Then : Incr Rooz : Incr Week : End If

    End If
    Return
    الهم صل علی محمد و آل محمد و عجل فرجهم
لطفا صبر کنید...
X