übersetzen PIC -> 8051

Gast #684442
moin moin,

@Stephan
jo, Fräsradiuskorrektur an Innenecken <> 90° da braucht man zur 
Berechnung des Umschaltpunktes den Schnittwinkel beider Graden...und das 
ist ArcTAN.
Der Fräßtisch wiegt nun schlappe 36Kg, die Höhendiffernz bei 500x500mm 
liegt bei ca. 0,4mm


@Holger,

wenn Du PIC-ASM kennst:
        BTFSC   x,0  ;Übergehe nachfolgenden Befehl, wenn Bit=0
         ADDWF  temp,F

da x aber ein Byte ist, ist dann Bit0 von x gemeint?

wenn Du PIC-ASM NICHT kennst:
  was willst Du mir sagen?????


mfg Pieter
Gast #684451
>@Holger,
>wenn Du PIC-ASM kennst:
>        BTFSC   x,0  ;Übergehe nachfolgenden Befehl, wenn Bit=0
>         ADDWF  temp,F

>da x aber ein Byte ist, ist dann Bit0 von x gemeint?

Steht alles im Datenblatt zum PIC.
Instruction Set Summary.

>wenn Du PIC-ASM NICHT kennst:
>  was willst Du mir sagen?????

Das du ein fauler Sack bist ?
Gast #684454
mit deiner Vermutung hast du Recht

BTFSC A,3  =   Bit Test File Skip If Clear     Byte A,Bit 3
Ich weiss nicht mehr wo, aber irgendwo gibts ne Tabelle wo sie alle ganz 
kurz und Übersichtlich und verstädnlich drinstehen. Meine eigene Tabell 
ist "leider" per Hand entstanden
#684486
PIC kann ich nicht, ist mir zu kompliziert (zu wenig Befehle).

Aber in C steht doch drüber, was der Code macht.
In 8051 Assembler könnte das so aussehen:
1
arctan:
2
        mov     b, a
3
        anl     a, #0F0h
4
        swap    a
5
        mov     r7, a
6
        mov     dptr, #arc_tan_table
7
        movc    a, @a+dptr
8

9
        xch     a, r7
10
        add     a, #1
11
        movc    a, @a+dptr
12
        subb    a, r7
13

14
        anl     b, #0Fh
15
        mul     ab
16
        anl     a, #0F0h
17
        add     a, b
18
        swap    a
19

20
        add     a, r7
21
        ret
22
arc_tan_table:
23
        db      0, 20, 41, 60, 80, 99, 117, 134
24
        db      151, 167, 182, 196, 210, 222, 234, 245, 0

Daß 8051 Code wesentlich kürzer als PIC ist, ist normal.


Peter
#684496
Hab 'ne ganze Weile mit PIC rumgemacht, der asm ist wirklich net schwer, 
es gibt kaum Instruktionen und auch nur ein einzelnes Register. Die 
Assembler kennen noch ein paar Makros die man sonst umständlich 
ausdrücken muss, und indirekte Adressierung macht auch wenig Spaß, wobei 
das wohl die bessere Lösung als die lustige Rücksprungtabelle ganz unten 
gewesen wäre.

Die Hardware in den PICs ist allerdings ganz nett, der ADC hat häufiger 
12 Bit, die Timer kann man, wenn man sie extern triggert, auch mit 
deutlich höheren Taktraten als Clk laufen lassen (50MHz), usw.
#684726
Jup, indirekter Zugriff über FSR und INDF. Die Variante da oben hat 
nämlich den Nachteil, das ADDWF nur 8bittig arbeitet, Adressen aber 
größer sind. Und wenn die Addition überläuft, weil die Tabelle zB. von 
Offset 500 bis 520 geht, macht der PIC nicht zB. bei 512 weiter, sondern 
bei 256.
#685173
Dieter Werner wrote:
> FSR und INDF funktionieren aber leider nur im FILE Bereich (RAM).

Stimmt!

Man kann aber über EEADR (ev. auch EEADRH) eine Speicherstelle im EEPROM 
adressieren und über EEDATA auslesen.
Und wenn Bit EEPGD in EECON1 gesetzt ist, wird über EEADRH:EEADR eine 
Speicherstelle im Program-Memory adressiert und über EEDATH:EEDATA 
ausgelesen.
Dies gilt jedenfalls für PIC16F87xA. Siehe Datenbuch Kapitel "3.0 DATA 
EEPROM AND FLASH PROGRAM MEMORY".

Funktioniert sogar! Habs selber ausprobiert.
#685408
Stephan, nach Z80 von 1978 bis 1990 und 8051/52/55 von 1990 bis 2001 bin 
ich seitdem (beruflich) an PICs hängengeblieben.

Der letzte 16C66 soll nächstes Jahr abgelöst werden, dann läuft alles 
mit 18F und 24F bzw. H.

EDIT:
Schön dass es mit den ispLSI geklappt hat.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 19 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.