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

[ATtiny2313][ASM] Początki i problem z programem

grysek 17 Lip 2009 15:17 1260 6
REKLAMA
  • #1 6789901
    grysek
    Poziom 19  
    Witam

    Od niedawna uczę sie assemblera i napisałem taki programik:

    .list
    
    .include "tn2313def.inc"
    
    
    .def acc = r16            ;przypisanie nazw rejestrów
    .def status = r17
    .cseg
    .org 0                   
    
    
    Main:
    
    ldi acc,0b11111111
    out DDRB, acc              ;Ustawienie wszystkich koncówek portu B jako wyjść
    ldi acc,0b00111111
    out DDRD, acc              ;oraz dwóch ostatnich koncówek portu D jako wejść
    
    ldi status, 0xFE           
    
    ldi acc,0xFF
    out PORTB, acc             ;zgaszenie wszystkich diod
    
    ldi acc, 0x00
    out PIND, acc              ;bez pull-up na wejściach
    
    
    Main_0:
    
    in acc, PIND               ;przepisz zawartość rejestru wejść do rejestru acc
    sbrs acc, 0x06             ;jeżeli ACC.6 = 1 to pomińnastęną instrukcję
    rjmp Main_1
    rjmp main_0                ;jesli jest równy 0 to powtórz sprawdzanie
    
    Main_1:
    out PORTB, status          ;zapal odpowiednią diodę
    rol status                 ; przesun zawartość rejestru w lewo
    rjmp Main_0                ;sprawdzaj stan ponownie
    



    Lecz niestety nie chce on działać poprawnie. Wszystkie diody migają z ogromną prędkością. Może ktoś wie gdzie robię błąd?

    Diody podpięte są katodami do końcówek portu B. Na PIND.6 podpięty jest rezystor podciągający do plusa.

    proszę o pomoc
    Pozdrawiam
  • REKLAMA
  • #2 6789978
    Srubol
    Poziom 13  
    Witam
    brak u Ciebie opóźnienia


    Main_1:
    out PORTB, status ;zapal odpowiednią diodę


    ldi R18,0xff
    OP:
    dec R18
    brne OP


    rol status ; przesun zawartość rejestru w lewo
    rjmp Main_0

    Jeśli i to nie wystarczy możesz je zagnieździć.
  • REKLAMA
  • REKLAMA
  • #4 6790937
    grysek
    Poziom 19  
    Ale po co jest potrzebne to opóźnienie? Żeby uniknąć drgań na wejściach?

    atom1477, rzeczywiście masz rację tam powinno być
    out PORTD, acc

    lub wcale.

    O co chodzi z tym zagnieżdżaniem?
  • REKLAMA
  • #5 6791198
    Konto nie istnieje
    Poziom 1  
  • #6 6792360
    kamyczek
    Poziom 38  
    Nie wiem na ile jesteś zaawansowany w pisaniu ale to zapewne Twoje początki proponuje zakup książki mikrokontrolery AVR attiny w praktyce A.Baranowski wydawnictwo BTC. W książce znajdziesz wszystko od podstaw i znacznie szybciej zaczniesz czerpać frajdę z pisania programów które działają...
  • #7 6795817
    grysek
    Poziom 19  
    Aha juz rozumiem. Narazie nie stać mnie na książke, jak nazbieram kasy to kupię. Program niestety dalej nie działa. Diody szybko migają po włączeniu a procesor nie wiadomo czemu nie reaguje na stykanie PIND.6 do masy.
REKLAMA