Någon programmerings kunnig i ASM

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Raceman
Inlägg: 122
Blev medlem: 30 augusti 2003, 15:16:09

Någon programmerings kunnig i ASM

Inlägg av Raceman »

Jag hittade ett program som hör till en varvräknare men jag kan inte tyda detta språk.
Zip-fil med hex och asm filer:
http://www.eelkevisser.nl/files/Dispv07.zip

Kanske någon har tid o lust att kolla vad som händer på ingången från bilens tändspole. Och som vet hur man omvandlar ASM till PicBasic så att jag förstår lite bättre. :?

Mvh Tony Ps Skrev detta tidigare i annan tråd men har inte lyckats få något svar :) ds
Användarvisningsbild
Melker
Inlägg: 410
Blev medlem: 26 maj 2003, 22:17:34
Ort: Umeå

Inlägg av Melker »

Tror det kan bli svårt att omvandla ASM till Basic (ifall du hoppats att det ska finnas ett program som löser det åt dig), när basic är ett högnivåspråk. Högnivåspråk blir till assambler (maskinspråk) när du kompilerar det, är inte det lättaste att köra den processen baklänges och om det gick skulle koden bli ganska så otydlig.
AsmN
Inlägg: 76
Blev medlem: 10 juni 2003, 17:39:16
Ort: Pedersöre, Finland
Kontakt:

Inlägg av AsmN »

Har tyvärr inte tid att börja sätta mig in i den där koden, men den verkar ju någorlunda dokumenterad så det borde inte vara så svårt att kunna lista ut med lite tid.

Sen kan du kolla i databladet vad vissa kommandon betyder ifall något är oklart, det finns ju endast 32 (minns jag rätt?? orkar inte kolla) kommandon för mid-range PIC:ar. Ifall man skall göra program för PIC så är det bra att kunna assembler eftersom man förstår hela arkitekturen mycket bättre då.
Användarvisningsbild
Raceman
Inlägg: 122
Blev medlem: 30 augusti 2003, 15:16:09

Inlägg av Raceman »

Nu var det ju inte en ASM till Pbasic omvandlare jag sökte utan en person som kan läsa ASM och kanske kan förklara hur det fungerar i pbasic.
Ungerfär så här. I detta ASM språk så betyder detta " MOVLW b'00101101' ;prescaler 1:32, to WDT, ext RTCC" att det räknas pulser och lägger dom i ett minne (fast det nu inte stämmer pga att jag inte kan se logiken i detta språk eftersom jag inte kan det, :)



;main program here at the middle of the page (0x100)
org 0x100

start CLRF R ;zero rpm count when first started

;the main loop is here
forever
#ifdef pic84
MOVLW b'00010000' ;portA 0-3 is o/p, 4 is i/p(RTCC)
#else
MOVLW b'00000000' ;portA is all o/p
#endif
TRIS portA ;set i/o state

MOVLW b'00000000' ;portB, b0-b7=o/p
TRIS portB ;set i/o state
;reassign the i/o ports on each cycle in case they are
;corrupted for whatever reason

CLRWDT ;clear watchdog
;watchdog is cleared, so need to re-assign the prescaler
MOVLW b'00101101' ;prescaler 1:32, to WDT, ext RTCC clk+leading edge
OPTION ;assign it now

MOVFW R
MOVWF BR ;place a copy of R in BR
CALL div_5 ;convert BR to bar in BAR0, BAR1
CALL bin_bcd ;convert R to BCD in K0, K1, K2
;new timing cycle starts here
CLRF RTCC ;reset the counter

Mvh Tony
Användarvisningsbild
Raceman
Inlägg: 122
Blev medlem: 30 augusti 2003, 15:16:09

Inlägg av Raceman »

Börjar nu förstå att det inte är så lätt att programera en 16f84 men jag hittade lite mer förklarande texter så det kanske löser sig med tiden.
Skall nog ner på bibblan o kolla om dom har lite böcker att läsa i ämnet.

Mvh Tony
Skriv svar