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

[mega8][bascom]-obrotomierz 2 cyfrowy (jak z allegro)

przemorl 20 Gru 2008 15:38 2873 2
REKLAMA
  • #1 5881520
    przemorl
    Poziom 11  
    Dobry będzie taki program?
    Można coś jeszcze poprawić?
    Może lepiej byłoby ustawić jakieś wyższe prescale w timerze np.8, żeby mniej tych impulsów zliczał (można by wtedy operować na mniejszych liczbach, program działałby na pewno szybciej - ale czy mierzyłby równie dokładnie?)
    Na pewno na elektrodzie był już poruszany temat obrotomierzy, ale szukajka coś mi nie działa, więc może omówimy mojego gniota :D

    $regfile = "m8def.dat"                                      'najpierw określamy typ proca
    $crystal = 1000000                                          'definiujemy z jakim taktowaniem będzie pracował
    '############################################################'konfiguracja portów i liczników
    Config Portb = Output
    Portb = &B11111111
    Config Portd = &B11111011                                   'pind.2 impulsator we przerwania int0
    Portd = &B11111111
    '####################konfig przerwań i licznika
    Config Int0 = Falling
    On Int0 Zapamietanie
    Enable Int0
    Enable Interrupts
    Config Timer1 = Timer , Prescale = 1                        'licznik 16bitowy max65535 impulsów
    '############################################################'deklaracja zmiennych
    Dim Jedn As Byte
    Dim Poprzecinku As Byte
    Dim Impulsy As Word
    Dim Obroty As Long
    '############################################################program właściwy
    '#######################wyświetlanie
    Do
    If 0 < Impulsy Then
    Obroty = 300000 \ Impulsy
    'Print Impulsy
    'Print Obroty
    Jedn = Obroty \ 10
    Poprzecinku = Obroty Mod 10
    Set Pind.0
    Portb = Lookup(poprzecinku , Tabela)
    Reset Pind.0
    Set Pind.1
    Portb = Lookup(jedn , Tabela)
    Reset Pind.1
    End If
    Loop
    End
    
    Tabela:                                                     ' dane do wyświetlania kolejnych cyfr od 0 do 9
    Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144
    
    Zapamietanie:
    Impulsy = Timer1
    Timer1 = 0
    Return
  • REKLAMA
  • #2 5881552
    dawid512
    Poziom 32  
    A nie łaska wgrać do uc program i zobaczyć? Forum to nie maszynka do której wrzucasz program a ona oddaje ci go w świetnej postaci.
  • Pomocny post
    #3 5884151
    Konto nie istnieje
    Poziom 1  
REKLAMA