Sida 1 av 4
Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 15:12:33
av Housepainter
Jag håller på att läsa på lite om programmering i Assembler, och det går mycket bättre än jag hade hoppats. MEn det är samtidigt mycket man inte förstår.
Jag läser lite guider på gooligum.com.
I dessa exempel så skrivs koden för PIC12F509
Det jag undrar för tillfället är:
I exemplet jag är på så skall man läsa in factory cal värdet till oscillatorn. Koden börjar såhär.
Här undrar jag vad movwf har för värde i sig? Jag har ju inte skrivit något movlw än. Säkert något enkelt, men jag förstår inte.
Nästa fundering handlar om koden som följer direkt efter.
Här är det tris jag undrar om. Varför skriver man inte movwf?
Vore tacksam för svar, även om frågorna berör grunderna i asm.
Många små steg framåt. Jag får tänka på att jag för två dagar sedan inte kunde någon asm kod över huvud taget. Nu har jag iaf skrivit ett blink a led program!

Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 16:51:36
av haslish
Jag kollade på gooligum och vad jag kan se så skriver han:
RESET CODE 0x0000
call 0x03FF
banksel OSCCAL
movwf OSCCAL
I vilken tutorial står det du skrev?
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 16:57:32
av Housepainter
Kanske i något annat exempel. Men i det jag är på så står det som jag skrev ovan.
Exemplet jag syftar på är detta
PDF
Raderna jag undrar över finnes på sida 5 i pdf-dokumentet.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 16:58:29
av AndersG
Notera att många guider du hittar ute på webben kan vara bra, men "dated", dvs de har inte hängt med i utvecklingen. Tex kommandot TRIS:
http://www.piclist.com/tecHREF/microchip/tris.htm
Koden du nämnde är annars för att läsa det kalibreringsvärde som kommer med vissa PIC. Om du gör en CALL till slutet av programminnet så kommer rutinen att göra en RETLW med kalibreringsvärdet i W, sedan pluggra man det i OSCCAL.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 17:04:25
av Housepainter
Så vid uppstart så har PIC:en automatiskt kallibreringsvärdet i W?
Tack! Jag skall läsa på ang Tris!
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 17:09:33
av AndersG
Nja, vid uppstart ligger värdet i slutet på program-minnet. Det blir då din uppgift att flytta in det i OSCCAL enligt koden du postade.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 17:19:48
av Housepainter
Ok, jag förstår inte till 100%, MEN lär nog göra tids nog.
Jag blir nästan lite yr av all ny information som jag läser in.
Mitt mål är att jag skall programmera en "timer" till min systemkamera där jag skall kunna välja tider mellan 2s upp till 24h mellan exponeringen. Men jag får börja med att lära mig ifrån grunden.
Delay är något som är ganska viktigt antar jag. Och det är stora skillnader i delay mellan 2s och 24h, så jag får nog fundera en del.
Sen har man många funderingar kring hela projektet.
-Hur skall jag välja tiden? Två knappar, tid upp, tid ner. eller vridströmställare. Andra alternativ?
-Hur skall jag veta vilken tid jag valt? Display, etc.
-Vad för kristall skall jag använda?
-Vilken PIC skall jag ha? Antal pinnar som behövs. Minnesåtgång..
Detta är inga direkta frågor till er, utan mer funderingar som flyger omkring i min lilla hjärna. Men kom gärna med förslag..
Just nu har jag ingen mer specifik fråga, men det lär komma många fler inom kort.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 17:30:05
av AndersG
Om du skall ha någonsomhelst noggrannhet så skall du använda en extern kristall. Den inbyggda RC-oscillatorn är 1% som bäst och det är litet för litet.
Förslagsvis kör du en litet en eller tvåradig LCD-display. Frågan är med hur stor noggrannhet du behöver kunna ställa? Du ratar om mellan 2..86400s? Kan bli litet tradigt att trycka 86400 gånger för att gå från min till max
Alternativt knappsats, typ:
http://www.dalton.ax/dds/dds1.jpg
Du borde klara det med en 16F690, låter inte som ngt jätteprogram.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 17:36:38
av Housepainter
Jag har tänkt mig 12 olika tider. Tidigare har jag funderat på att ha två vridströmställare. En som väljer tidsenhet (s/m/h) och en som väljer mellan 4 olika lägen. Tex 2s, 10s, 30s, 60s. 5m, 15m, 30m, 45m. 1h, 5h, 10h, 24h.
Men om man använder två knappar istället så hoppar man mellan lägerna som är fördefinierade.
Jag har en 2-radig display som går efter HD44780, eller hur man nu säger. Sen skall jag bara lära mig hur det fungerar.
Jag har en PIC 16F688 hemma, men har även 16F628A på gång. Duger någon av de?
Extern kristall har jag räknat med. Jag har några olika hemma. T20.000, 10.000, 5.000 och även en klock-kristal(?) 3.579545.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 17:40:36
av AndersG
Om du kollar koden som finns på
www.dalton.ax/battmeter så kan du se hur jag implementerat menyn.
Båda skall nog fungera, bara du får antalet pinnar att räcka
Du kan ju kolla i länken ovan hur jag kopplat display/knappar.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 18:22:41
av Walle
Jag hade nog använt en extern klocka (RTC) för långa intervall. Typ 73-739-63 eller nån liknande (plockade bara en i högen för att visa vad jag menar).
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 18:46:15
av Housepainter
Intressant. Det är en bra idé.
Men låt säga att jag låter bli den lösningen denna gången, för att lära mig att skriva långa delayfunktioner. För det är väl möjligt att få ett delay på säg 24h?
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 18:52:10
av AndersG
Visst är det det. Gäller bara att sätta upp en tillräckligt lång räknare
Om du t ex har en 1MHz klocka och en 16-bits timer och sätter interrupt on overflow så får du en tick varje 0,262 sek (anta att timern matas med fosc/4). Då behöver du bara räkna upp till 329595 för 24 h
Med en 32-bitars räknare klarar du det elegant.
Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 19:08:07
av BJ
Man kan ju ha två knappar för varje siffra.
En upp och en ner.
T.ex. så här:
Då kan man ställa in vad man vill.
T.ex. 13 timmar, 28 minuter och 14 sekunder.
Om man nu har använding för det.

Det blir lite jobbigt att programmera, men det
går allt, bara man vill.

Re: Asm. Funderingar hos en nybörjare.
Postat: 18 mars 2010, 19:12:57
av Housepainter
AndersG: Ok, bra. Måste läsa på mer om timers osv.
BJ: Lite överkurs för tillfället.

Nu nöjer jag mig med 12 fasta tider.