PASM

Allgemeine Themen rund um den Propeller Mikrocontroller und Elektronik
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

PASM

Beitrag von PIC18F2550 »

Hallo

ich graße gerade etwas in den Assemblerlisten dabei ist mir etwas aufgefallen.

Code: Alles auswählen

HUBOP   D, S 000011 000i 1111 ddddddddd sssssssss  <== i

CLKSET  D    000011 0001 1111 ddddddddd ------000 
?????   D    000011 0001 1111 ddddddddd ------001  <== unbenutzt ?
COGINIT D    000011 0001 1111 ddddddddd ------010 
COGSTOP D    000011 0001 1111 ddddddddd ------011 
LOCKNEW D    000011 0011 1111 ddddddddd ------100 
LOCKRET D    000011 0001 1111 ddddddddd ------101 
LOCKSET D    000011 0001 1111 ddddddddd ------110 
Darf bei "HUBOP" i nicht 1 werden?

Entweder mein Handbuch ist zu alt oder ich verstehe da was falsch. :cry:
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: PASM

Beitrag von yeti »

PIC18F2550 hat geschrieben:????? D 000011 0001 1111 ddddddddd ------001 <== unbenutzt ?
COGID?
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM

Beitrag von PIC18F2550 »

Hallo yeti

Code: Alles auswählen

COGID  D  000011 0011 1111 ddddddddd ------001
?????  D  000011 0001 1111 ddddddddd ------001 <== unbenutzt ?
Aufbau => iiiiii zcri cccc ddddddddd sssssssss
Das r Bit ist bei COGID = 1 kann es also nicht sein.

Code: Alles auswählen

iiiiii zcri cccc ddddddddd sssssssss
010000 001i 1111 ddddddddd sssssssss <== das i
iiiiii sind die instruction Bits aber nur für 64 möglichkeiten
z und c sind die Freigaben zum setzen der entsprechenden FLAGS bei der Befehlsausführung.
r ist die erlaubnis das dest. Register zu beschreiben.(Datenflussrichtung ? Write/Read)
i welche funktion belegt das Bit? (indirect/immediate)
c ist immer 1 außer bei NOP da ist es 0
d & s ist destination and source
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: PASM

Beitrag von yeti »

PIC18F2550 hat geschrieben:Aufbau => iiiiii zcri cccc ddddddddd sssssssss
Das r Bit ist bei COGID = 1 kann es also nicht sein.
Mipft!
War's also doch schon zu spät für OGG (ordentlich geradeaus gucken)... :-\
Hit shappens!
Ich bin dann mal weg: Unterwegs zur Humanschädelascheberieselungsanlage...
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM

Beitrag von PIC18F2550 »

PIC18F2550 hat geschrieben:Humanschädelascheberieselungsanlage
Habe erst gestern zwei Eimer voll weggeschaft.
Bei soviel Hableitertechnikgedankengut müsste ich die eigendlich in die gelbe Tonne kippen.
Bei meinen Optischenblindkraftsehverstärker müsste auch mal wieder die Asche ausgekippt werden.
Vieleicht wird da das Bild etwas klarer. :D
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
BorgKönig
Beiträge: 598
Registriert: So 24. Mai 2009, 11:24

Re: PASM

Beitrag von BorgKönig »

yeti.... du meinst, es war zu früh fürs gucken... is ja noch vorn schlafengehen... vorm aufstehen und vorm käffchen lasse ich mal aussen vor ;)
Benutzeravatar
yeti
Beiträge: 2300
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: PASM

Beitrag von yeti »

BorgKönig hat geschrieben:yeti.... du meinst, es war zu früh fürs gucken... is ja noch vorn schlafengehen... vorm aufstehen und vorm käffchen lasse ich mal aussen vor ;)
Ich definiere "zu spät" in diesem Kontext als eine dermaßen erhebliche zeitliche Distanz seit dem letzten Schlaf, daß die kognitiven Fähigkeiten des diesen Kontext bestimmenden Akteurs darunter beginnen spürbar leiden.

Gern hätte ich auch einen um etliche Größenordnungen wüsteren Bandwurmsatz abgeliefert, aber seit jenem Vorfall habe ich definitiv die Schlafzisterne noch nicht wieder genug nachfüllen können... :-(
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM

Beitrag von PIC18F2550 »

Moin :shock: nee noch nicht. :mrgreen:

Ich versuche gerade die Befehle in eine Art Lineal zu quetschen.
Leider geht das nicht besonderst gut da die PASM Befehle nicht komplett als BCD-Code abgelegt sind einige Teile sind anscheinend schon Vordecodiert wie z.B. die Datenstromrichtung.
Das macht die sache etwas komplizierter da sich dadurch einige Befehle nicht in einer linearen Abfolge einordnen lassen. z.B. NOP
Diese müssten gesondert behandelt werden. z.B. CLKSET, COGINIT, COGSTOP,...

Code: Alles auswählen

CTAB01  ' Sonderfälle
'-CON- = 0000
C0000             byte "NOP     ",0
'-CON- = 1111
'-INSTR-_R_xxx
 C000011_0_000  byte "CLKSET  ",0
 C000011_0_001  byte "!ERROR! ",0
 C000011_0_010  byte "COGINIT ",0
 C000011_0_011  byte "COGSTOP ",0
 C000011_0_100  byte "LOCKNEW ",0
 C000011_0_101  byte "LOCKRET ",0
 C000011_0_110  byte "LOCKSET ",0
 C000011_0_111  byte "LOCKCLR ",0
 C000011_1_xxx  byte "COGID   ",0


CTAB02
'        -INSTR-_RI
  word  @C000000_0  'WRBYTE   I=0
  word  @C000000_0  'WRBYTE   I=1
  word  @C000000_1  'RDBYTE   I=0
  word  @C000000_1  'RDBYTE   I=1

  word  @C000001_0  'WRWORD
  word  @C000001_0  'WRWORD
  word  @C000001_1  'RDWORD
  word  @C000001_1  'RDWORD

  word  @C000010_0  'WRLONG
  word  @C000010_0  'WRLONG
  word  @C000010_1  'RDLONG
  word  @C000010_1  'RDLONG

  word  @C000011_0  'HUBOP
  word  @C000011_0  'HUBOP
  word  @Cerror
  word  @Cerror

  word  @Cerror
  word  @Cerror
  word  @C000100_1  'MUL
  word  @C000100_1  'MUL

  word  @Cerror
  word  @Cerror
  word  @C000101_1  'MULS
  word  @C000101_1  'MULS

  word  @Cerror
  word  @Cerror
  word  @C000110_1  'ENC
  word  @C000110_1  'ENC

  word  @Cerror
  word  @Cerror
  word  @C000111_1  'ONES
  word  @C000111_1  'ONES

  word  @Cerror
  word  @Cerror
  word  @C001000_1  'ROR
  word  @C001000_1  'ROR

  word  @Cerror
  word  @Cerror
  word  @C001001_1  'RORL
  word  @C001001_1  'RORL

  word  @Cerror
  word  @Cerror
  word  @C001010_1  'SHR
  word  @C001010_1  'SHR

  word  @Cerror
  word  @Cerror
  word  @C001011_1  'SHL
  word  @C001011_1  'SHL

  word  @Cerror
  word  @Cerror
  word  @C001100_1  'RCR
  word  @C001100_1  'RCR

  word  @Cerror
  word  @Cerror
  word  @C001101_1  'RCL
  word  @C001101_1  'RCL

  word  @Cerror
  word  @Cerror
  word  @C001110_1  'SAR
  word  @C001110_1  'SAR

  word  @Cerror
  word  @Cerror
  word  @C001111_1  'REV
  word  @C001111_1  'REV

  word  @Cerror
  word  @Cerror
  word  @C010000_1  'MINS
  word  @C010000_1  'MINS

  word  @Cerror
  word  @Cerror
  word  @C010001_1  'MAXS
  word  @C010001_1  'MAXS

  word  @Cerror
  word  @Cerror
  word  @C010010_1  'MIN
  word  @C010010_1  'MIN

  word  @Cerror
  word  @Cerror
  word  @C010011_1  'MAX
  word  @C010011_1  'MAX

  word  @Cerror
  word  @Cerror
  word  @C010100_1  'MOVS
  word  @C010100_1  'MOVS

  word  @Cerror
  word  @Cerror
  word  @C010101_1  'MOVD
  word  @C010101_1  'MOVD

  word  @Cerror
  word  @Cerror
  word  @C010110_1  'MOVI
  word  @C010110_1  'MOVI

  word  @C010111_00 'JMP
  word  @C010111_01 'RET
  word  @C010111_10 'JMPRET
  word  @C010111_11 'CALL

  word  @C011000_0  'TEST
  word  @C011000_0  'TEST
  word  @C011000_1  'AND
  word  @C011000_1  'AND

  word  @C011001_0  'TESTN
  word  @C011001_0  'TESTN
  word  @C011001_0  'ANDN
  word  @C011001_0  'ANDN

  word  @Cerror
  word  @Cerror
  word  @C011010_1  'OR
  word  @C011010_1  'OR


'-INSTR-_RI
 C000000_0  byte  "WRBYTE  ",0
 C000000_1  byte  "RDBYTE  ",0
 C000001_0  byte  "WRWORD  ",0
 C000001_1  byte  "RDWORD  ",0
 C000010_0  byte  "WRLONG  ",0
 C000010_1  byte  "RDLONG  ",0
 C000011_0  byte  "HUBOP   ",0 ' ????? was ist wenn i=1
 C000100_1  byte  "MUL     ",0 
 C000101_1  byte  "MULS    ",0 
 C000110_1  byte  "ENC     ",0 
 C000111_1  byte  "ONES    ",0 
 C001000_1  byte  "ROR     ",0 
 C001001_1  byte  "ROL     ",0 
 C001010_1  byte  "SHR     ",0 
 C001011_1  byte  "SHL     ",0 
 C001100_1  byte  "RCR     ",0 
 C001101_1  byte  "RCL     ",0
 C001110_1  byte  "SAR     ",0
 C001111_1  byte  "REV     ",0
 C010000_1  byte  "MINS    ",0
 C010001_1  byte  "MAXS    ",0
 C010010_1  byte  "MIN     ",0
 C010011_1  byte  "MAX     ",0
 C010100_1  byte  "MOVS    ",0
 C010101_1  byte  "MOVD    ",0
 C010110_1  byte  "MOVI    ",0
 C010111_00 byte  "JMP     ",0
 C010111_01 byte  "RET     ",0
 C010111_10 byte  "JMPRET  ",0
 C010111_11 byte  "CALL    ",0
 C011000_0  byte  "TEST    ",0
 C011000_1  byte  "AND     ",0
 C011001_0  byte  "TESTN   ",0
 C011001_1  byte  "ANDN    ",0
 C011010_1  byte  "OR      ",0

Cerror
  byte "!ERROR! ",0
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM

Beitrag von PIC18F2550 »

Erkennungstest

Code: Alles auswählen

02B4 A0BCABF0 10100010 #
02B8 80FCAA10 10000011 #
02BC 08BCAC55 00001010 RDLONG
02C0 A0FCB401 10100011 #
02C4 2CBCB456 00101110 SHL
02C8 80FCAA04 10000011 #
02CC 08BCAC55 00001010 RDLONG
02D0 A0FCC001 10100011 #
02D4 2CBCC056 00101110 SHL
02D8 80FCAA04 10000011 #
02DC 08BCB055 00001010 RDLONG
02E0 80FCAA04 10000011 #
02E4 08BCB255 00001010 RDLONG
02E8 80FCAA04 10000011 #
02EC 08BCB655 00001010 RDLONG
02F0 A0BCC25B 10100010 #
02F4 80FCC2FF 10000011 #
02F8 80FCC201 10000011 #
02FC 627CB004 01100001 #
0300 617CB002 01100001 #
0304 689BE860 01101010 #
0308 68ABEC60 01101010 #
030C A0FCCA34 10100011 #
0310 5CBCBE65 01011110 #
0314 627CB001 01100001 #
0318 613CB5F2 01100000 #
031C 5C640017 01011101 #
0320 A0FCBA09 10100011 #
0324 A0BCBC59 10100010 #
0328 28FCBC01 00101011 SHR
032C 80BCBDF1 10000010 #
0330 80BCBC59 10000010 #
0334 5CBCBE65 01011110 #
0338 A0BCAA5E 10100010 #
033C 84BCABF1 10000110 #
0340 C17CAA00 11000001 #
0344 5C4C0020 01011101 #
0348 613CB5F2 01100000 #
034C 30FCB801 00110011 RCR
0350 E4FCBA1F 11100111 #
0354 28FCB817 00101011 SHR
0358 60FCB8FF 01100011 #
035C 627CB001 01100001 #
0360 6CD4B8FF 01101111 #
0364 08BCADF0 00001010 RDLONG
0368 80BCAC5B 10000010 #
036C 003CB856 00000000 WRBYTE
0370 84BCAC5B 10000110 #
0374 80FCAC01 10000011 #
0378 60FCACFF 01100011 #
037C 083CADF0 00001000 WRLONG
0380 5C7C0017 01011101 #
0384 5CBCCA5F 01011110 #
0388 A0BCABF0 10100010 #
038C 80FCAA08 10000011 #
0390 08BCAC55 00001010 RDLONG
0394 80FCAA04 10000011 #
0398 08BCAE55 00001010 RDLONG
039C 863CAC57 10000100 #
03A0 5C680034 01011101 #
03A4 80BCAE61 10000010 #
03A8 00BCC457 00000010 RDBYTE
03AC 84BCAE61 10000110 #
03B0 80FCAE01 10000011 #
03B4 60FCAEFF 01100011 #
03B8 083CAE55 00001000 WRLONG
03BC 68FCC500 01101011 #
03C0 2CFCC402 00101111 SHL
03C4 68FCC401 01101011 #
03C8 A0FCC60B 10100011 #
03CC A0BCC9F1 10100010 #
03D0 627CB004 01100001 #
03D4 617CB002 01100001 #
03D8 6CE0C401 01101111 #
03DC 29FCC401 00101011 SHR
03E0 70ABE860 01110010 #
03E4 7497EC60 01110110 #
03E8 80BCC859 10000010 #
03EC 5CBCCA5F 01011110 #
03F0 A0BCAA64 10100010 #
03F4 84BCABF1 10000110 #
03F8 C17CAA00 11000001 #
03FC 5C4C004E 01011101 #
0400 E4FCC647 11100111 #
0404 5C7C0034 01011101 #
original

Code: Alles auswählen

02B2(00A5)             |                         org 0
02B4(0000) F0 AB BC A0 | entry                   mov     t1,par                'get structure address
02B8(0001) 10 AA FC 80 |                         add     t1,#4 << 2            'skip past heads and tails
02BC(0002) 55 AC BC 08 |                         rdlong  t2,t1                 'get rx_pin
02C0(0003) 01 B4 FC A0 |                         mov     rxmask,#1
02C4(0004) 56 B4 BC 2C |                         shl     rxmask,t2
02C8(0005) 04 AA FC 80 |                         add     t1,#4                 'get tx_pin
02CC(0006) 55 AC BC 08 |                         rdlong  t2,t1
02D0(0007) 01 C0 FC A0 |                         mov     txmask,#1
02D4(0008) 56 C0 BC 2C |                         shl     txmask,t2
02D8(0009) 04 AA FC 80 |                         add     t1,#4                 'get rxtx_mode
02DC(000A) 55 B0 BC 08 |                         rdlong  rxtxmode,t1
02E0(000B) 04 AA FC 80 |                         add     t1,#4                 'get bit_ticks
02E4(000C) 55 B2 BC 08 |                         rdlong  bitticks,t1
02E8(000D) 04 AA FC 80 |                         add     t1,#4                 'get buffer_ptr
02EC(000E) 55 B6 BC 08 |                         rdlong  rxbuff,t1
02F0(000F) 5B C2 BC A0 |                         mov     txbuff,rxbuff
02F4(0010) FF C2 FC 80 |                         add     txbuff,#255           'Change Buffer size
02F8(0011) 01 C2 FC 80 |                         add     txbuff,#1             'add 1 more for 256 
02FC(0012) 04 B0 7C 62 |                         test    rxtxmode,#%100  wz    'init tx pin according to mode
0300(0013) 02 B0 7C 61 |                         test    rxtxmode,#%010  wc
0304(0014) 60 E8 9B 68 |         if_z_ne_c       or      outa,txmask
0308(0015) 60 EC AB 68 |         if_z            or      dira,txmask
030C(0016) 34 CA FC A0 |                         mov     txcode,#transmit      'initialize ping-pong multitasking
0310(0017) 65 BE BC 5C | receive                 jmpret  rxcode,txcode         'run a chunk of transmit code, then return
0314(0018) 01 B0 7C 62 |                         test    rxtxmode,#%001  wz    'wait for start bit on rx pin
0318(0019) F2 B5 3C 61 |                         test    rxmask,ina      wc
031C(001A) 17 00 64 5C |         if_z_eq_c       jmp     #receive
0320(001B) 09 BA FC A0 |                         mov     rxbits,#9             'ready to receive byte
0324(001C) 59 BC BC A0 |                         mov     rxcnt,bitticks
0328(001D) 01 BC FC 28 |                         shr     rxcnt,#1
032C(001E) F1 BD BC 80 |                         add     rxcnt,cnt                          
0330(001F) 59 BC BC 80 | :bit                    add     rxcnt,bitticks        'ready next bit period
0334(0020) 65 BE BC 5C | :wait                   jmpret  rxcode,txcode         'run a chuck of transmit code, then return
0338(0021) 5E AA BC A0 |                         mov     t1,rxcnt              'check if bit receive period done
033C(0022) F1 AB BC 84 |                         sub     t1,cnt
0340(0023) 00 AA 7C C1 |                         cmps    t1,#0           wc
0344(0024) 20 00 4C 5C |         if_nc           jmp     #:wait
0348(0025) F2 B5 3C 61 |                         test    rxmask,ina      wc    'receive bit on rx pin
034C(0026) 01 B8 FC 30 |                         rcr     rxdata,#1
0350(0027) 1F BA FC E4 |                         djnz    rxbits,#:bit
0354(0028) 17 B8 FC 28 |                         shr     rxdata,#32-9          'justify and trim received byte
0358(0029) FF B8 FC 60 |                         and     rxdata,#$FF
035C(002A) 01 B0 7C 62 |                         test    rxtxmode,#%001  wz    'if rx inverted, invert byte
0360(002B) FF B8 D4 6C |         if_nz           xor     rxdata,#$FF
0364(002C) F0 AD BC 08 |                         rdlong  t2,par                'save received byte and inc head
0368(002D) 5B AC BC 80 |                         add     t2,rxbuff
036C(002E) 56 B8 3C 00 |                         wrbyte  rxdata,t2
0370(002F) 5B AC BC 84 |                         sub     t2,rxbuff
0374(0030) 01 AC FC 80 |                         add     t2,#1                 
0378(0031) FF AC FC 60 |                         and     t2,#$FF               'Change Buffer Size
037C(0032) F0 AD 3C 08 |                         wrlong  t2,par
0380(0033) 17 00 7C 5C |                         jmp     #receive              'byte done, receive next byte
0384(0034) 5F CA BC 5C | transmit                jmpret  txcode,rxcode         'run a chunk of receive code, then return
0388(0035) F0 AB BC A0 |                         mov     t1,par                'check for head <> tail
038C(0036) 08 AA FC 80 |                         add     t1,#2 << 2
0390(0037) 55 AC BC 08 |                         rdlong  t2,t1
0394(0038) 04 AA FC 80 |                         add     t1,#1 << 2
0398(0039) 55 AE BC 08 |                         rdlong  t3,t1
039C(003A) 57 AC 3C 86 |                         cmp     t2,t3           wz
03A0(003B) 34 00 68 5C |         if_z            jmp     #transmit
03A4(003C) 61 AE BC 80 |                         add     t3,txbuff             'get byte and inc tail
03A8(003D) 57 C4 BC 00 |                         rdbyte  txdata,t3
03AC(003E) 61 AE BC 84 |                         sub     t3,txbuff
03B0(003F) 01 AE FC 80 |                         add     t3,#1
03B4(0040) FF AE FC 60 |                         and     t3,#$FF               'Change Buffer Size
03B8(0041) 55 AE 3C 08 |                         wrlong  t3,t1
03BC(0042) 00 C5 FC 68 |                         or      txdata,#$100          'ready byte to transmit
03C0(0043) 02 C4 FC 2C |                         shl     txdata,#2
03C4(0044) 01 C4 FC 68 |                         or      txdata,#1
03C8(0045) 0B C6 FC A0 |                         mov     txbits,#11
03CC(0046) F1 C9 BC A0 |                         mov     txcnt,cnt
03D0(0047) 04 B0 7C 62 | :bit                    test    rxtxmode,#%100  wz    'output bit on tx pin according to mode
03D4(0048) 02 B0 7C 61 |                         test    rxtxmode,#%010  wc
03D8(0049) 01 C4 E0 6C |         if_z_and_c      xor     txdata,#1
03DC(004A) 01 C4 FC 29 |                         shr     txdata,#1       wc
03E0(004B) 60 E8 AB 70 |         if_z            muxc    outa,txmask        
03E4(004C) 60 EC 97 74 |         if_nz           muxnc   dira,txmask
03E8(004D) 59 C8 BC 80 |                         add     txcnt,bitticks        'ready next cnt
03EC(004E) 5F CA BC 5C | :wait                   jmpret  txcode,rxcode         'run a chunk of receive code, then return
03F0(004F) 64 AA BC A0 |                         mov     t1,txcnt              'check if bit transmit period done
03F4(0050) F1 AB BC 84 |                         sub     t1,cnt
03F8(0051) 00 AA 7C C1 |                         cmps    t1,#0           wc
03FC(0052) 4E 00 4C 5C |         if_nc           jmp     #:wait
0400(0053) 47 C6 FC E4 |                         djnz    txbits,#:bit          'another bit to transmit?
0404(0054) 34 00 7C 5C |                         jmp     #transmit             'byte done, transmit next byte
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
PIC18F2550
Beiträge: 2831
Registriert: Fr 30. Sep 2011, 13:08

Re: PASM

Beitrag von PIC18F2550 »

Im assembler gibt es jede menge Assembleranweisungen und nur 2 Bits. :?:
Muss mal sehen wie das umgesetzt wird. :(
vieleicht lässt sich das auf 4 Reduzieren.

Code: Alles auswählen

IF_ALWAYS
IF_NEVER
IF_E
IF_NE
IF_A
IF_B
IF_AE
IF_BE
IF_C
IF_NC
IF_Z
IF_NZ
IF_C_EQ_Z
IF_C_NE_Z
IF_C_AND_Z
IF_C_AND_NZ
IF_NC_AND_Z
IF_NC_AND_NZ
IF_C_OR_Z
IF_C_OR_NZ
IF_NC_OR_Z
IF_NC_OR_NZ
IF_Z_EQ_C
IF_Z_NE_C
IF_Z_AND_C
IF_Z_AND_NC
IF_NZ_AND_C
IF_NZ_AND_NC
IF_Z_OR_C
IF_Z_OR_NC
IF_NZ_OR_C
IF_NZ_OR_NC
Irgend wie ist das mir unverständlich. :SCHREIEN
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten