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

Program generatora a jego poprawność (bascom)

MAREK MRK 23 Paź 2011 13:46 1061 0
  • #1 10056713
    MAREK MRK
    Poziom 18  
    Witam, wymyśliłem generator ("prostokąt") na atmega. W założeniach miałem częstotliwość do 5MHz i wyświetlanie na LCD w Hz. Moje pytanie brzmi czy program jest napisany poprawnie, oraz co należało by zmienić?
    $regfile = "m8def.dat"                                      'Info dla kompilatora.
    $crystal = 8000000                                          'Informujemy kompilator o kwarcu 8MHz.
    Config Lcd = 16 * 2                                         'Konfiguracja Lcd.
    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2 , Db6 = Portd.1 , Db7 = Portd.0 , E = Portd.4 , Rs = Portd.5
    Config Adc = Single , Prescaler = Auto , Reference = Avcc   'config ADC
    Start Adc                                                   'uruchom ADC
    Config Timer0 = Timer , Prescale = 1                        'Timer0 jako licznik czasu.
    Config Pinb.0 = Output                                      'Port wyjściowy częstotliwości.
    Set Portb.0                                                 'Ustaw poziom wysoki na wyjściu Portb.0.
    Dim Zm As Word                                              'Zm, zmienna przerwań Timer0.
    Dim Odp As Single                                           'Odp, zmienna, która będzie zawierać odpowiedź jaka jest częstotliwość..
    Dim F As Word                                               'F, zmienna do umieszczenia w pdprogramie Licz..
    On Timer0 Licz                                              'Podprogram.
    Enable Interrupts                                           'Zezwalaj na wszystkie przerwania.
    Enable Timer0                                               'Odblokuj przerwania Timer0.
    Cls                                                         'czyść LCD
    Do                                                          'Pętla do wykonania dzielenia i wyświetlenia wyniku.
    F = Getadc(0)                                               'podzielnik F = ADC 0
    Home                                                        'Pokazuj w jednym miejscu.
    Odp = 5000 / F                                              '5MHz podziel przez liczbę F.
    Lcd Odp ; "Hz"                                              'Pokaż odpowiedź.
    Odp = 0                                                     'Zeruj zmienną.
    Loop                                                        'Powtórz pętlę.
    End                                                         'Koniec pętli.
    Licz:                                                       'Podprogram Timer0.
    Incr Zm                                                     'Po każdym przerwaniu powiększaj zmienną.
    If Zm = F Then                                              'Jeśli jest tyle przerwań, F, to Toggle.
    Toggle Portb.0                                              'Zmień stan Portb.0.
    Zm = 0                                                      'Zeruj zmienną.
    End If                                                      'Koniec warunku.
    Return                                                      'Wróć do programu.
REKLAMA