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
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.