logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Atmega8 bascom program w symulatorze działa a normalnie nie

mareksr 24 Sty 2011 20:31 1220 1
  • #1 9051885
    mareksr
    Poziom 11  
    Witam
    Mam taki program w symulatorze działa tak jak bym chciał czyli po nacisnięciu przycisku dioda sie zapala i po kilku sekundach gasnie ale po wgraniu do atmegi 8 niedziała prawidłowo czyli diode można zgasic i zapalić ale już nie gasnie po kilku sekundach.Czy ktoś wie czemu???
    
    $regfile = "m8def.dat"                                      
    $crystal = 1000000
    Config Portb = &B11111111   
           Portb = &B11111111   
    Config Portd = &B1111100    
           Portd = &B1110111                                    
    
     Config Timer0 = Timer , Prescale = 64
    On Timer0 Przerwanie:
    
     Dim Licznik As Long
    
    
     Enable Interrupts
    Enable Timer0
    
      Timer0 = 6                                             
                           
    Licznik = 0                                       
    
    Do                                                       
      If Pind.0 = 0 Then                                      
        If Portb.1 = 1 Then                                    
          Toggle Portb.7                                    
          Portb.1 = 0                                          
        End If
    
           If Pinb.7 = 0 Then
            Gosub Przerwanie:
              End If
    
      Else                                                     
          Portb.1 = 1                                           
      End If
    Loop
    End
    
        Przerwanie:                                    
                                                               
    Counter0 = Counter0 + 6                             
                                  
    Incr Licznik                                                
    If Licznik = 90000 Then                                    
                                  
    Portb.7 = 1
                                                                        
    Licznik = 0                                         
    End If
    Return 
    



    Proszę poprawić treść postu - regulamin p.15
    [zumek]
  • #2 9052237
    Fredy
    Poziom 27  
    Wyjątkowo zbałaganiony program.
    Nie wiem czy Bascom poradzi sobie z tym gosub Przerwanie. Traktujesz to jako procedurę obsługi przerwania, więc na końcu w asm będzie reti, a jednocześnie w programie potraktowałeś to jako zwykły podprogram. Wiele kompilatorów tego nie pozwoli zrobić.
    Popraw to - przecież zamiast tego Gosub przerwanie wystarczy wpisać w timer dużą wartość tuż z przed przepełnienia i poczekać dosłownie chwilę i uzyskasz taki sam efekt ale napewno logicznie prawidłowy.
REKLAMA