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

BASCOM Atmega16 – brak reakcji portów wyjściowych na zmianę stanu wejść PortB

mnovaq 07 Kwi 2005 22:04 2144 6
REKLAMA
  • #1 1385083
    mnovaq
    Poziom 11  
    Posty: 12
    Pomógł: 1
    Witam
    Używam Bascom i Atmega16.
    Mam banalny problem. Pisząc program

    Config Portb.0 = Input
    Config Portb.1 = Input
    Config Portb.2 = Output
    Config Portb.3 = Output
    do
    if portb.0=1 then portb.2=0
    if portb.0=0 then portb.2=1

    if portb.0=1 then portb.2=1
    if portb.0=0 then portb.2=0
    loop
    END
    DLaczego nie obsługuje mi portów wejścia - to znaczy niezależnie od stanów portb.0 i portb.1 wyjście b.2ib.3 nie zmienia sie ?? (Dodam ze port b.2 i b.3 dzialaja dobrze sprawdzalem na petli for i ich stan sie zmienia w dobry sposób)
    Dzięki:)
  • REKLAMA
  • #2 1385120
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    PORTB nie jest wejsciem , tylko wyjsciem. Jako wejście służy PINB
    Config PORTB.0 = Input
    Config PORTB.1 = Input
    Config PORTB.2 = Output
    Config PORTB.3 = Output
    Do
    If PINB.0=1 Then PORTB.2=0
    If PINB.0=0 Then PORTB.2=1
    
    If PINB.0=1 Then PORTB.2=1
    If PINB.0=0 Then PORTB.2=0
    Loop
    End
    

    Light-I
  • REKLAMA
  • #3 1385329
    mnovaq
    Poziom 11  
    Posty: 12
    Pomógł: 1
    Jeszcze jedno - Dlaczego program ten nie obsluguje mi LCD?
    KOD:

    Config Lcdmode = Port
    Config Lcd = 16 * 2
    Config Lcdbus = 4
    Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portb.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.3 , Rs = Portd.0
    cls
    Cursor Off
    Lcd "StAVeR-24-M32 "
    Lowerline
    Lcd "www.lawicel.com"
    end
    Wyświetlacz jest martwy - tzn pustka - ale jest sprawny.
    Dzięki
  • REKLAMA
  • #4 1385356
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    Ech... A dokumentację to można czasem poczytać... ;) Do bascoma jest też Help i to po polsku. PORTB i PINB to rejestry dotyczące portu B. Rejestr PINB jest do odczytywania stanu portu, a rejestr PORTB jest do ustawiania stanu portu... Paniatno ? ;)
    Pozdr. Light-I
  • #5 1385380
    K_o_n_r_a_d
    Poziom 23  
    Posty: 318
    Pomógł: 86
    Ocena: 9
    Wyświetlacz LCD możesz podłączyć do dowolnych portów tylko w programie umieść:
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.2 , Rs = Portd.6
    

    Pozdrawiam, Konrad
  • REKLAMA
  • #6 1385409
    mnovaq
    Poziom 11  
    Posty: 12
    Pomógł: 1
    Poniato
    Dzięki - jestem poczatkującym
  • #7 1385417
    LordBlick
    VIP Zasłużony dla elektroda
    Posty: 5438
    Pomógł: 549
    Ocena: 69
    To zacznij od poznania co procesor ma w sobie (dokumentacja, rózne strony www, np. tutaj), bez tego to tylko będziesz potrafił przepisywać programy innych..
    Light-I

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczył braku reakcji portów wyjściowych Atmega16 na zmianę stanów wejściowych portu B w programie napisanym w Bascom. Przyczyną było nieprawidłowe odczytywanie stanów wejściowych – zamiast rejestru PINB, który służy do odczytu stanu portu B, używano rejestru PORTB, który służy do ustawiania stanów wyjściowych. Poprawny kod powinien odwoływać się do PINB.0 dla odczytu wejścia i do PORTB.2 oraz PORTB.3 dla ustawiania wyjścia. Dodatkowo poruszono problem konfiguracji wyświetlacza LCD, gdzie wskazano konieczność poprawnego przypisania pinów i konfiguracji w Bascom, aby wyświetlacz działał prawidłowo. Wskazano także na potrzebę zapoznania się z dokumentacją procesora i Bascom, aby lepiej rozumieć działanie rejestrów i portów mikrokontrolera.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA