heeft iemand hier verstand van het programmeren in assembler, ik heb namelijk wat vragen:

- hoe kan is een soort toggle bit maken, dus door op een knopje te drukken dat hij 1 wordt en als je weer drukt moet hij weer 0 worden?

- hoe kan ik een voorwaardelijke opdracht uitvoeren die afhangt van de waarde van een bepaalde variabele?

de microcontroler die ik wil programmeren is een 89S8252 met het flashboard van de electuur (oktober/november ofzo)

bij voorbaat dank.
Martijn Berntsen

Ah ja, ben ik ook over aan het denk is dat ding de moeite waard ?

Verder zou ik de cursus volgen die in de 6 nummers erna komt !

Grtz,

Op vr 15-02-2002 19:47:51 schreef Antoine:
Ah ja, ben ik ook over aan het denk is dat ding de moeite waard ?

als je er iets over wilt weten, vraag maar hoor.

Op vr 15-02-2002 20:39:51 schreef Martijn Berntsen:

[...]

als je er iets over wilt weten, vraag maar hoor.

vraag 1) toggle.

als bit0 je toggle bit is:
-tel 1 op bij je variable, en negeer de rest van de bits,
eventueel kun je bij een sprong van 1 naar 0 er weer 2 afhalen
zodat de rest van de inhoud goed blijft, of verwijder deze met een
and. xxxxxxx1 and 00000001 levert alleen bit0 op = 1

vraag 2) if then else

voorwaardelijke sprongen worden via de statussen van de vlaggen gedaan
groter of kleiner dan via de carry en gelijk aan via de zero
* if x - gewenste waarde = 0 then z =1
* if c = 1 --> x < gewenste waarde
* if c = 0 --> x => gewenste waarde

succes

willie wortel

Op vr 15-02-2002 20:39:51 schreef Martijn Berntsen:

[...]

als je er iets over wilt weten, vraag maar hoor.

Heb je die print zelf gemaakt of besteld ben Elektuur, als je het zelf gemaakt hebt zou je er voor mij dan ook een willen maken ? tegen betaling uiteraard, ik vind elektuur behoorlijk prijzig met hun printen. Hoor het wel

Antoine
avdcruyssen@gmx.net

Op za 16-02-2002 13:07:52 schreef Antoine:

[...]

Heb je die print zelf gemaakt of besteld ben Elektuur, als je het zelf gemaakt hebt zou je er voor mij dan ook een willen maken ? tegen betaling uiteraard, ik vind elektuur behoorlijk prijzig met hun printen. Hoor het wel

Antoine
avdcruyssen@gmx.net

nee, die heb ik niet zelf gemaakt, dan moet je hem doormetaliseren, hij is dubbelzijdig. ik heb hem gewoon besteld.

martijn

Op vr 15-02-2002 22:47:39 schreef williewortel:

[...]

vraag 1) toggle.

als bit0 je toggle bit is:
-tel 1 op bij je variable, en negeer de rest van de bits,
eventueel kun je bij een sprong van 1 naar 0 er weer 2 afhalen
zodat de rest van de inhoud goed blijft, of verwijder deze met een
and. xxxxxxx1 and 00000001 levert alleen bit0 op = 1

vraag 2) if then else

voorwaardelijke sprongen worden via de statussen van de vlaggen gedaan
groter of kleiner dan via de carry en gelijk aan via de zero
* if x - gewenste waarde = 0 then z =1
* if c = 1 --> x < gewenste waarde
* if c = 0 --> x => gewenste waarde

succes

willie wortel

dus, om bijvoorbeeld een togglebit te maken kan ik het zo doen?

if P1.1 = 1 --> P1.1 => 0
if P1.1 = 0 --> P1.1 => 1

of kun je ook AND, OR of XOR gebruiken??

martijn

sinds wanneer is IF een assembler commando geworden?

Hoi allemaal;

volgens mij heeft Sven gelijk wanneer hij zegt dat IF geen instructie is dat tot assembler behoort. IF is een instructie uit de hogere programmeertalen zoals bvb. Pascal.

Ik heb zelf ook het flashboard bij elektuur aangekocht en ik zit met een gelijkaardig probleem ivm het programmeren.
Mijn vraag is nu of niemand soms een site weet waar men informatie (en eventueel programmavoorbeelden) kan vinden over assembler.

succes

Op zo 17-02-2002 16:26:24 schreef Martijn Berntsen:

[...]

dus, om bijvoorbeeld een togglebit te maken kan ik het zo doen?

if P1.1 = 1 --> P1.1 => 0
if P1.1 = 0 --> P1.1 => 1

of kun je ook AND, OR of XOR gebruiken??

martijn

xor is nog makkelijker; weer bit nul als voorbeeld:

accu = xxxxxxx0B
xor: 00000001B
result: xxxxxxx1B
xor: 00000001B
result: xxxxxxx0B

zou het op deze manier niet lukken:

main mov a, #00H
mov P1, a
JB P3.1 tel
sjmp main
tel inc a
sjmp main
.end

Op deze manier schrijf je eerst de waarde 00H naar de accu, vervolgens schrijf je de waarde naar poort1. Als je dan P3.1 set, dan moet het programma een sprong maken naar tel. Hier wordt de accu verhoogt met 1.

Ik heb dit zelf nog niet getest maar volgens mij heeft dit een goede kans om te werken.

succes

wat gebeurt er dan als A = 255?
indien dit een probleem zou zijn, is dit dan niet beter?


main mov a, #01H 
     mov P1, a 
     JB P3.1 tel 
     sjmp main 
tel  cpl a 
     sjmp main 
.end 

zo te zien is bovenstaand een afgeleide van Intel programmeertaal. Zo ook Parallax (assembler met macro's waarin ik oa programmeer.)
Ik zou het volgende doen in Parallax (dit kun je volgens mij zelf wel omzetten naar Atmel.

declaratie variabelen:
toggle	=	MM.0 ; WAARIN MM = vrije geheugen locatie

"sub routine"
toggle_proc		jb	toggle,clr_bit	;INDIEN TOGGLE GESET SPRING NAAR CLR_BIT    
			setb	toggle 	 	;NIET GESET DUS? SET NU!
			ret			;RETURN NAAR AANROEP PROCEDURE
clr_bit			clrb	toggle		;WAS GESET, CLR NU!
			ret			;RETURN NAAR AANROEP PROCEDURE

roep nu in je programma toggle_proc aan en je bitje wordt geset of gecleared.

grtx rudx

(sorry ik kan geen spaties of tabs ingeven op deze site)

Kan wel, gebruik UBB-code (tag code)

Kijk hier, en zie daar de tag [ code ] (zonder spaties). Zet datgene wat je met spaties/tabs wil hebben binnen deze tags, dus zo:

[ code ]
hier komt het
[ /code ]

(weer zonder spaties)