Hey,
Ik probeer assembler onder de knie te krijgen, maar zit toch met vragen. In de datasheets (pic16f88) en de handleiding van MPasm schrijven ze dat je de IF/ELSE commando (in assembler) kan gebruiken, maar dit lukt niet bij mij. Kunnen jullie mij helpen?
De bedoeling is als op RA0 een 'I' komt, dat RB2 en RB3 geset worden.
Ook wou ik "if PORTA,0==1" schrijven, maar dat aanvaardt hij niet. Probleem met de komma???
Hier is het progje:
START
banksel TRISB ;bank1
movlw b'00000000' ;allemaal uitgang
movwf TRISB
movwf ANSEL ;allemaal digitaal
movlw b'11111111'
movwf TRISA ;allemaal ingang
banksel PORTA
clrf PORTB ;alle uitgangen 0
PROG
bsf PORTB,0 ;set RB0 high
bsf PORTB,1 ;set RB1 high
if PORTA==b'00000001' ;ingang RA0 high?
bsf PORTB,2 ;set RB2 high bsf PORTB,3 ;set RB3 high
endif
GOTO PROG
END
groeten,
Peter
IF/ELSE in assembler
-
nicebadboy
- Berichten: 13
- Lid geworden op: di 3 feb 2009, 20:19
- Locatie: Belgie, Mechelen. .
-
nicebadboy
- Berichten: 13
- Lid geworden op: di 3 feb 2009, 20:19
- Locatie: Belgie, Mechelen. .
Op volgende link vind je de handleiding van MPasm:http://ww1.microchip.com/downloads/en/D ... 33014J.pdf
Op pagina 45 gaat het over 'Directives'. Er zijn verschillende soorten... en bij 'Conditional Assembly Directives' vind je de IF/ELSE commando.
Maar waarschijnlijk zal ik wel iets verkeerd gelezen of begrepen hebben. Maar ik krijg geen error als ik het programma simuleer, het werkt alleen niet. Wat is de reden daarvoor?
Groeten
Peter
Op pagina 45 gaat het over 'Directives'. Er zijn verschillende soorten... en bij 'Conditional Assembly Directives' vind je de IF/ELSE commando.
Maar waarschijnlijk zal ik wel iets verkeerd gelezen of begrepen hebben. Maar ik krijg geen error als ik het programma simuleer, het werkt alleen niet. Wat is de reden daarvoor?
Groeten
Peter
-
smd_lover
- Moderator

- Berichten: 1955
- Lid geworden op: di 24 mar 2009, 12:23
- Locatie: prov Groningen.. .. .. .. .. .. .. .
Directives zijn geen normale instructies maar opdrachten voor het assemblerprogramma.
Met de if/then directive kun je de assember bijvoorbeeld maar een bepaald gedeelte van de asm-instructies laten omzetten naar hexcode.
In Assembly wordt het if/then gebeuren gedaan met de instructie btfss.... of btfsc....
bijvoorbeeld testen of een getal nul is:
Hoop dat het zo duidelijk is.
Met de if/then directive kun je de assember bijvoorbeeld maar een bepaald gedeelte van de asm-instructies laten omzetten naar hexcode.
In Assembly wordt het if/then gebeuren gedaan met de instructie btfss.... of btfsc....
bijvoorbeeld testen of een getal nul is:
Code: Selecteer alles
movf getal,w ; haal getal op
btfss STATUS,Z ; is de zero-vlag in het status-register geset?
goto nietnul ; nee
......... ; ja , getal = 0