AVR PC zum Z-Register addieren

Gast #1064286
Hallo,

ich möchte gern

den Wert des PC zum Z-Register addieren und hab das so versucht.
Da es ja keinen Befehl zum Addieren mit einer Konstanten gibt habe ich 
das hier versucht:

subi  ZL,-low(PC)
sbci  ZH,-high(PC)


Macht aber nicht das was es tun soll.
liegt es an der Schreibweise?
Gast
für den nachfolgenden ijmp Befehl


ich benutzte das um Zeitliche differenzen auszugleichen
nach dem Ijmp kommt eine handvoll nop die dann entsprechend der 
Differenz angesprungen werden.

              in    ZL,TCNT1L
              in    ZH,TCNT1H
              in    templ,ICR1L
              in    tempH,ICR1H
              sub   ZL,templ
        sbc   ZH,temph
        ldi   templ,low(PC)
        ldi   temph,high(PC)
        add   ZL,templ
        adc   ZH,temph

        ijmp
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
Reennee wrote:
> ich benutzte das um Zeitliche differenzen auszugleichen

geht einfacher:
1
;************************************************************************/
2
;*                                                                      */
3
;*                      Delay Macro 8 ... 65543 Cycle                   */
4
;*                                                                      */
5
;*              Author: Peter Dannegger                                 */
6
;*                                                                      */
7
;************************************************************************/
8
.listmac
9

10
;delay 8 ... 65543 cycle
11

12
.macro  mdelay
13
  ldi  r24, low( @0 - 8 )
14
  ldi  r25, high( @0 - 8 )
15
  sbiw  r24, 4
16
  brcc  pc - 1
17
  cpi  r24, 0xFD
18
  brcs  pc + 4
19
  breq  pc + 3
20
  cpi  r24, 0xFF
21
  breq  pc + 1
22
.endmacro
23

24
  mdelay  8
25

26
  mdelay  9
27

28
  mdelay  10
29

30
  mdelay  11
31

32
  mdelay  12
33

34
  mdelay  65543
35

36
  rjmp  pc


Peter
Gast
1
subi  ZL,-low(PC)
2
sbci  ZH,-high(PC)

Der AVR kann ja schon viel, aber sowas nu auch wieder nich. Teil PC mal 
in PCH und PCL auf und addiere die dann zum Z-Register. Danach noch ein, 
zwei Worte abziehen, denn die Addition braucht ja auch mehrere Schritte.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.