Include-fil för att använda Word i assembler på AVR?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av sodjan »

> Det är just det som är problemet, word kan betyda en massa olika.

Men aldrig detsamma som Word. :-)

Bakgrunden till termen "word" har med den "ordlängd" som en viss
arkitektur "talar" med och som man talar med den med. Det är även bakgrunden till
att det heter just "word", det är alltså en analogi med det vanliga talade språket.
Det behöver inte heller vara en jämn multipel av 8-bitars byte, en PIC16 t.ex har 14-bitars
"word" i programminnet och IBM mainframes (vissa modeller) har 36-bitars "word". O.s.v.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av vfr »

Det första jag tänkte efter vfr's
första inlägg var, läste han inte inlägget också ??


Hehe. Jo, det gjorde han. Eller snarare skummade. Och eftersom jag redan var insnöad på att Word betydde MS Word så gjorde jag inte kopplingen Word<-> word mot innehållet i inlägget. Har man väl fått ett intryck så är det mycket svårare att ändra det än att få det rätta intrycket första gången.

Hela denna diskussionen kan tyckas väldigt semantisk och onödig, men just för att första intrycket är så viktigt för hur man uppfattar en text, så är det ändå viktigt hur man uttrycker sig.

Nu tycker jag att vi förstört tråden alldeles tillräckligt. Over and out för min del.

Edit: Stavning
Senast redigerad av vfr 30 juni 2010, 19:39:20, redigerad totalt 1 gång.
Glattnos
Inlägg: 3106
Blev medlem: 29 oktober 2009, 20:01:18

Re: Include-fil för att använda Word i assembler på AVR?

Inlägg av Glattnos »

Okej, okej! Jag erkänner! Jag borde ha uttryckt mig annorlunda och utan versal. Men jag tyckte faktiskt att det var uppenbart vad jag menade, men tydligen inte. Kan ju tillägga att jag inte har någon som helst utbildning på programmering, men svarva, fräsa och svetsa kan jag, ni kanske inte skulle säga allt rätt heller om ni var med mig en dag :vissla:

Jag vet inte men även om man bara läser rubriken:
"Include-fil för att använda Word i assembler på AVR?"

så krävs det ju en del fantasi för att få det till:
Include-fil för att använda assembler i Word på AVR?
eller hur det nu blev läst.

Jesse: Tackar för svaret! :)

Men nu när ni ändå är så pratglada så kan ni hjälpa mig med en annan sak också. Det här programmet som jag försöker göra ska vara till en "massaccelerations-bänk"(bromsbänk) för att effektmäta motorer med hjälp av en trumma som accelereras.
En sensor registrerar varje varv och en 16-bitars timer mäter tiden i microsekunder(CPU 8MHz/presc 8 ) det tar för trumman att snurra ett varv.
Sen jämför jag tiden med tiden till föregående varv, tidskillnaden borde vara ett mått på vridmomentet. I SRAM har jag en 16-bitars variabel som uppdateras om ett större värde har erhållits(varvtid för max vrid).
Sen tar jag (0xffff-tiden)*tidskillnaden och jämför med en 32-bitars variabel i SRAM som uppdateras om ett större värde har erhållits, sparar då även tiden(varvtid för max effekt) i en annan 16-bitars variabel.
Okej, lite luddig förklaring men fråga om ni inte förstår hur jag menar.

Nu är problemet att jag tänker skriva ut värdena på en display som heter GDM1602K och är en vanlig standard-display. Som jag har det nu så ställer man ju in "data-bussen" till displayen och aktiverar en ledning(Enable)för att displayen ska veta att den kan läsa tecknet.
Det fungerar nu men då har jag gjort loopar för att åstadkomma tidsfördröjning på "Enable"-ledningen. Ser ut såhär:

Kod: Markera allt

SEND:	
	sbi		LCD_set, LCD_E
	rcall	Delay
	cbi		LCD_set, LCD_E
	ret
Alltså man gör rcall på SEND när man har ställt in data-bussen till displayen. I SEND så ettställs Enable-ledningen, ett Delay anropas och Enable-ledningen nollställs. Delay är bara en massa loopar som räknar ner ett värde.
Detta är naturligtvis inte bra eftersom prosessorn behöver göra annat än snurra runt i en massa loopar.

Hur kan man göra för att få sändningen till displayen Timer-styrd istället?

Och hur kan man göra sändningarna lite smidigare än som jag har gjort dom, såhär:

Kod: Markera allt

Print_init:
	ldi		temp, WRITE_INST
	out		LCD_set, temp
	ldi		temp, FUNK_set
	out		LCD_data, temp
rcall SEND
	ldi		temp, WRITE_INST
	out		LCD_set, temp
	ldi		temp, LCD_on
	out		LCD_data, temp
rcall SEND
	ldi		temp, WRITE_INST
	out		LCD_set, temp
	ldi		temp, LCD_clr
	out		LCD_data, temp
rcall SEND
	ldi		temp, WRITE_INST
	out		LCD_set, temp
	ldi		temp, ENTRY_mode
	out		LCD_data, temp
rcall SEND
	ldi		temp, WRITE_INST
	out		LCD_set, temp
	ldi		temp, DDadress
	out		LCD_data, temp
rcall SEND
	ret
Går det att göra ett macro på det istället för att skriva många gånger? Jag är inte så hemma på macron men om någon kan ge mig en kompassriktning hur jag ska gå till väga så vore jag väldigt tacksam.
Skriv svar