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

[at8][bascom] Prośba o sprawdzenie kodu

tomson5 28 Lis 2010 14:13 1439 4
REKLAMA
  • #1 8799894
    tomson5
    Poziom 16  
    Witam
    Mam problem z prostym programem

    Poniższy program działa tak jak powinien
    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portc.4 , Rs = Portc.5
    Cls
    
    Config Pind.3 = Input
    Config Pind.2 = Input
    Config Pind.4 = Input
    Config Pinb.1 = Output
    Set Portd.2
    Set Portd.3
    Set Portd.4
    
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Up Alias Pind.3
    Down Alias Pind.2
    Enter Alias Pind.4
    
    
    'zmienne pomiaru prądu
    Dim Odczyt0 As Word
    Dim A As Single
    Dim Amper As String * 3
    
    
    'zmienne pomiaru napięcia
    Dim Odczyt1 As Word
    Dim V As Single
    Dim Volt As String * 3
    
    'zmienna do regulacji Pwm pin B.1 początkowa wartość 10
    Dim P As Word
    P = 10
    Start Adc
    
    
    '-----------PROGRAM--------------
    Do
    Pwm1a = P
    Gosub Wyswietlanie
    
    If P > 630 Then
    P = 630
    End If
    
    If Down = 0 Then
    P = P - 10
    End If
    
    If Up = 0 Then
    P = P + 20
    End If
    waitms 300
    
    '-----------------------------
    Loop
    End
    
    
    Wyswietlanie:
    Cls
    Locate 2 , 3 : Lcd "P=" ; P
    Cursor Off
    Return
    '---------------------------
    



    Natomiast w poniższym gdzie dodałem pomiar ADC
    nie działają przyciski

    $regfile = "m8def.dat"
    $crystal = 8000000
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portb.3 , Db7 = Portb.2 , E = Portc.4 , Rs = Portc.5
    Cls
    
    Config Pind.3 = Input
    Config Pind.2 = Input
    Config Pind.4 = Input
    Config Pinb.1 = Output
    Set Portd.2
    Set Portd.3
    Set Portd.4
    
    
    Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 64
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Up Alias Pind.3
    Down Alias Pind.2
    Enter Alias Pind.4
    
    
    'zmienne pomiaru prądu
    Dim Odczyt0 As Word
    Dim A As Single
    Dim Amper As String * 3
    
    
    'zmienne pomiaru napięcia
    Dim Odczyt1 As Word
    Dim V As Single
    Dim Volt As String * 3
    
    'zmienna do regulacji Pwm pin B.1 początkowa wartość 10
    Dim P As Word
    P = 10
    Start Adc
    
    
    '-----------PROGRAM--------------
    Do
    Pwm1a = P
    Gosub Wyswietlanie
    
    If P > 630 Then
    P = 630
    End If
    
    If Down = 0 Then
    P = P - 10
    End If
    
    If Up = 0 Then
    P = P + 20
    End If
    '---------POMIAR--------
    
    'Pomiar Prądu
    Odczyt0 = Getadc(1)
    A = Odczyt0 * 0.0455
    Amper = Fusing(a , "#.$$")
    
    'Pomiar Napięcia
    Odczyt1 = Getadc(0)
    V = Odczyt1 * 0.0225
    Volt = Fusing(v , "#.$$")
    Waitms 300
    
    '-----------------------------
    Loop
    End
    Wyswietlanie:
    
    Cls
    Locate 1 , 1 : Lcd "V=" ; Volt
    Locate 2 , 3 : Lcd "P=" ; P
    Cursor Off
    
    Return
    '---------------------------
    


    Czy to może być spowodowane zbyt dużą ilością zmiennych word i single i string ?
  • REKLAMA
  • Pomocny post
    #2 8800024
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #3 8800063
    tomson5
    Poziom 16  
    Dzięki wielkie wracam do walki :)

    Zmieniłem string * 3 na string *6 i poszło
    Do tej pory używałem string * 3 tak jak w przykładzie z książki
    Nie wiem co tu się takiego stało być może wersja bascoma ?

    Dzięki raz jeszcze i biorę się za robotę
  • REKLAMA
  • #4 8800097
    Konto nie istnieje
    Poziom 1  
  • #5 8800184
    tomson5
    Poziom 16  
    To by się zgadzało co piszesz ponieważ mimo deklaracji przed pętlą P = 10 , w pętli już miałem cały czas P = 0

    Jednak warto było się podpytać bo sam bym na to nie wpadł
REKLAMA