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

Pic12f509 prosty program. Uruchomienie. Generowanie prostokąta.

Prymulka 25 Mar 2006 15:54 1315 6
REKLAMA
  • #1 2455782
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Witam. Nie mogę sobie poradzić z uruchomieniem programu dla tego procka, który miałby tylko generowaćprostokąt na co drugim wyjściu (nie licząc GP3).

    list p=12f509
    include p12f509.inc

    __CONFIG _CP_OFF & _WDT_OFF & _IntRC_OSC & _MCLRE_OFF

    org 0x0000
    goto Start

    org 0x0020

    Start
    movlw b'101010'
    tris 9

    Petla
    movlw b'000000'
    movf GPIO, W
    movlw b'111111'
    movf GPIO, W
    goto Petla
    end

    Nie wiem czy dobrze ustawiam wyjścia za pomocą tris. Program kompiluje w MPASM. Nie ma żadnych błędów ale cos nie działa. W projekcie mam tylko ten plik, który umieściłem w source code.
  • REKLAMA
  • Pomocny post
    #2 2455971
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Prymulka napisał:

    movlw b'000000'
    movf GPIO, W
    movlw b'111111'
    movf GPIO, W
    Nie działa bo kopiujesz zawartość rejestru GPIO do akumulatora.
  • REKLAMA
  • #3 2456194
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    zamieniłem niestety to samo, ale rzeczywiscie bylo zle. Mi cos nie pasuje z instrukcja tris. Nie wiem czemu moge tam wpisac wartosci tylko od 5 do 9.
  • REKLAMA
  • #4 2456282
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Moim zdaniem musisz jeszcze raz przeczytać co robi instrukcja TRIS ;)
  • #5 2456332
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Proszęmiećtroche wyrozumiałości dla mnie :). Dopiero co przerzuciłem sie na PICI i nie moge sie przyzwyczaic do nowej architektury. Jak ustawićpiny na wyjścia. W sumie do z dsPICami poszlo mi latwiej tylko ze programowalem w C :)
  • REKLAMA
  • Pomocny post
    #6 2459330
    winIO
    Poziom 13  
    Posty: 37
    Pomógł: 4
    Ocena: 3
    Sprobuj tego :


    list p=12f509
    include p12f509.inc

    __CONFIG _CP_OFF & _WDT_OFF & _IntRC_OSC & _MCLRE_OFF

    org 0x0000
    goto Start

    org 0x0020

    Start
    movlw b'101010'
    tris GPIO


    movlw b'00000000'
    movwf GPIO
    movlw b'11111111'
    Petla
    xorwf GPIO,1
    goto Petla
    end
  • #7 2459912
    Prymulka
    Poziom 18  
    Posty: 378
    Pomógł: 9
    Ocena: 8
    Dzięki. Śmiga jak szalone :)

Podsumowanie tematu

✨ Dyskusja dotyczy problemu z uruchomieniem prostego programu w asemblerze dla mikrokontrolera PIC12F509, który miał generować sygnał prostokątny na co drugim wyjściu (z wyłączeniem pinu GP3). Autor miał trudności z poprawnym ustawieniem kierunku portów za pomocą instrukcji TRIS oraz z manipulacją rejestrem GPIO. Wskazano, że błędem było kopiowanie zawartości rejestru GPIO do akumulatora bez odpowiedniej operacji. Zwrócono uwagę na konieczność prawidłowego użycia instrukcji TRIS, która ustawia kierunek pinów (wejście/wyjście). Zaproponowano poprawiony kod, w którym wartość do rejestru TRIS jest ładowana za pomocą movlw i zapisywana do TRIS GPIO, a następnie w pętli wykonywana jest operacja XOR na rejestrze GPIO, co powoduje generowanie sygnału prostokątnego. Po zastosowaniu tej poprawki program działa poprawnie. Autor przyznał, że przejście z programowania dsPIC w C na PIC w asemblerze wymaga przyzwyczajenia się do nowej architektury i instrukcji.
Wygenerowane przez model językowy.
REKLAMA