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

Assembler AVR, niby prosty program a nie dziala :(

KmiecikSe 24 Lip 2007 23:15 858 2
REKLAMA
  • #1 4111953
    KmiecikSe
    Poziom 15  
    Mam taki programik:

    .include "m16def.inc"
    .cseg
    .org 0x00
    rjmp konfiguracja
    Konfiguracja:
    nop
    ldi R16,0b10101010
    out DDRA,R16
    out DDRB,R16
    out DDRC,R16
    out DDRD,R16
    xxx:
    nop
    inc r16
    out PORTA,R16
    out PORTB,R16
    out PORTC,R16
    out PORTD,R16
    rcall polsek
    rjmp xxx
    polsek:
    ldi r24,3
    polsek_2:
    ldi R23,1
    polsek_3:
    ldi R22,2
    polsek_4:
    dec R22
    brne polsek_4
    dec R23
    brne polsek_3
    dec R24
    brne polsek_2
    ret

    Nie zwracajcie na to uwage ze ta petla czasowa to "pol sekundy" :D
    Moj problem jest zdecydowanie inny... Mianowicie chodzi mi o to ze przy wywolaniu podprogramu "rcall polsek" to po jego zakonczeniu instrukcja "ret" program zaczyna sie od nowa i tak w kolko :( a powinno przejsc dalej i wykonac instrukcje "rjmp xxx". Programuje i symuluje "AVR Studio 4". Czy ktos wie na czym polega moj problem??? Bardzo prosze o pomoc...

    Dodano po 1 [minuty]:

    Oczywiscie tam powinno byc: Nie zwracajcie na to uwage ze ta petla czasowa to NIE "pol sekundy"
  • REKLAMA
  • Pomocny post
    #2 4112841
    pietrucha
    Poziom 16  
    Aby działało to dobrze to na samym początku programu trzeba ustawić wskaźnik stosu (o ile pamiętam SPH i SPL) np. na adres końca pamięci RAM. Procesor nie robi tego automatycznie i potem np. przy wywołaniach podprogramów program się krzaczy.
  • #3 4113047
    KmiecikSe
    Poziom 15  
    Ok wielkie dzieki pietrucha, sprawdze to :D
REKLAMA