Miniräknare på AVR
Miniräknare på AVR
Ja, så har man nu hamnat på universitet.
Läser grundläggande mikrodatorteknik 1 på Göteborgs Universitet.
Som slutuppgift ska vi skriva en miniräknare som kommunicerar med datorn via comporten. HyperTerminal används för att skicka och ta emot.
Problemet för mig är att jag har ingen som helst aning om hur jag ska skriva själva miniräknaren. Jag har inga direkta programmeringserfarenheter sent tidigare, och skulle därför behöva lite hjälp. Nej, det här är inte fusk, våran lärare uppmuntrar oss att söka information själva osv. Han säger att kopiera med ctrl-c och ctrl-v är ingen bra idé, då lär man sig inte, men att däremot skriva av kod är helt ok. Då passerar den hjärnan ordentligt och man minns förhoppningsvis en del iaf.
Hursomhelst, har någon lite erfarenhet inom AVR och detta? Vad jag har förstått så är det bästa att skriva subrutiner för addition, subtraktion, multiplikation och division, för att sedan anropa dem från huvudprogrammet.
Läser grundläggande mikrodatorteknik 1 på Göteborgs Universitet.
Som slutuppgift ska vi skriva en miniräknare som kommunicerar med datorn via comporten. HyperTerminal används för att skicka och ta emot.
Problemet för mig är att jag har ingen som helst aning om hur jag ska skriva själva miniräknaren. Jag har inga direkta programmeringserfarenheter sent tidigare, och skulle därför behöva lite hjälp. Nej, det här är inte fusk, våran lärare uppmuntrar oss att söka information själva osv. Han säger att kopiera med ctrl-c och ctrl-v är ingen bra idé, då lär man sig inte, men att däremot skriva av kod är helt ok. Då passerar den hjärnan ordentligt och man minns förhoppningsvis en del iaf.
Hursomhelst, har någon lite erfarenhet inom AVR och detta? Vad jag har förstått så är det bästa att skriva subrutiner för addition, subtraktion, multiplikation och division, för att sedan anropa dem från huvudprogrammet.
sweet..jag läser också den kursen om än lite av o till
hur som helst...det enda som egentligen är problem är väl multiplikation och division efters om det inte finns färdiga operationer för det. Lite pill blir det väl med de andra också om de skall klara av mer än ensiffriga tal...
jag kommer inte ihåg detaljerna och är för lat för att plcoka fram kurs-cdn
Men din ide är juh bra. Ha ett huvudprogram som läser tecknena, separerar vid +.-.* eller / och anropar rätt metod. Sedan sickas svaret tillbaks till datorn....
EDIT: har t.o.m. för mig att mattemetoderna finns i kurskompendiet (på cdn)...
piece of cake
hur som helst...det enda som egentligen är problem är väl multiplikation och division efters om det inte finns färdiga operationer för det. Lite pill blir det väl med de andra också om de skall klara av mer än ensiffriga tal...
jag kommer inte ihåg detaljerna och är för lat för att plcoka fram kurs-cdn
Men din ide är juh bra. Ha ett huvudprogram som läser tecknena, separerar vid +.-.* eller / och anropar rätt metod. Sedan sickas svaret tillbaks till datorn....
EDIT: har t.o.m. för mig att mattemetoderna finns i kurskompendiet (på cdn)...
piece of cake
Hehe, jag är också registrerad på den kursen... både del 1 och del 2. jag tänkte att det var 10 lätta poäng Dock har jag inte orkat sätta mig ner och göra klart uppgiften än... när jag skulle börja göra mätstationen blev det en lcd-chatt istället (http://lcd.altronix.se), så bra diciplin har jag
På kurs-CD:n finns massor av exempelkod. Har du fixat seriekommunikationen ? Steget därefter borde vara att spara siffrorna man tar emot och omvandla till heltal från ascii antar jag. Sedan spara +, - eller * och därefter det andra talet för att slutligen anropa en subrutin som räknar ut svaret när man trycker på enter till exempel...
Hur långt har du kommit ?
Det enda jag tycker är jobbigt är att man måste skriva i assembler, det är mycket smidigare med c tycker jag...
/Johan
På kurs-CD:n finns massor av exempelkod. Har du fixat seriekommunikationen ? Steget därefter borde vara att spara siffrorna man tar emot och omvandla till heltal från ascii antar jag. Sedan spara +, - eller * och därefter det andra talet för att slutligen anropa en subrutin som räknar ut svaret när man trycker på enter till exempel...
Hur långt har du kommit ?
Det enda jag tycker är jobbigt är att man måste skriva i assembler, det är mycket smidigare med c tycker jag...
/Johan
På kapitlet serieporten är det en mini-miniräknare man kan göra...bara + (men man kan juh enkelt lägga till minus)....har du gjort delkapitlena?
Om man vill vara extra ful så kan man juh alltid låte sin c-komilator generare asm-kod från c program.....dockj tror jag läraren undrar vad mn tänker med när man döper sina rutiner till l1 och ltmp2 osv
Men det är nog bara en tröskel...
Vet du förresten om man måste göra delkapitlen eller om man kan göra den "stora" upggiften direkt?
Om man vill vara extra ful så kan man juh alltid låte sin c-komilator generare asm-kod från c program.....dockj tror jag läraren undrar vad mn tänker med när man döper sina rutiner till l1 och ltmp2 osv
Men det är nog bara en tröskel...
Vet du förresten om man måste göra delkapitlen eller om man kan göra den "stora" upggiften direkt?
Kod: Markera allt
;*****************************************************************************
;'hextoasc'
;Aim
; Convert hex to ASCII. Hex value is passed from & ASCII value is passed
; back to calling function in register treg.
;Registers used
; rtemp temporary register
; treg register containing data
;Functions called
; none
;*****************************************************************************
hextoasc: andi treg,$0f
cpi treg,$0a
brsh henxt1
ldi rtemp,$30
rjmp henxt2
henxt1: ldi rtemp,$37
henxt2: add treg,rtemp
ret
Kod: Markera allt
;*****************************************************************************
;'asctohex'
;Aim
; Convert ASCII to hex. ASCII value to be converted is passed from & hex
; value is passed back to calling function in register rreg.
;Registers used
; rreg register containing data
;Functions called
; none
;*****************************************************************************
asctohex: cpi rreg,$40
brsh asnxt
subi rreg,$30
rjmp asnxt1
asnxt: subi rreg,$37
asnxt1: ret
-
- Inlägg: 515
- Blev medlem: 31 maj 2003, 10:42:37
- Ort: Helsingborg
Ja, jag ska dit.
Kunde inte vara där på alla helgona, då var jag hemma i Örebro. Så när man kom förra veckan var det inget. Roligt att inte bli informerad att det var direkt veckan efter igen.
Vi verkar ju vara ett par st som är där. Roligt, då kan vi ju få lite utbyte av varandra. Jag postar en bild på mig själv här så känner vi kanske igen varandra sen.
Kunde inte vara där på alla helgona, då var jag hemma i Örebro. Så när man kom förra veckan var det inget. Roligt att inte bli informerad att det var direkt veckan efter igen.
Vi verkar ju vara ett par st som är där. Roligt, då kan vi ju få lite utbyte av varandra. Jag postar en bild på mig själv här så känner vi kanske igen varandra sen.
Jo, det stämmer. Men kursen ska göras på en 2313 som inte har det.
henkebenke: tack för tipset. om någon mera letar finns det här.
http://www.atmel.com/dyn/resources/prod ... OC0936.PDF
http://www.atmel.com/dyn/resources/prod ... AVR200.zip
henkebenke: tack för tipset. om någon mera letar finns det här.
http://www.atmel.com/dyn/resources/prod ... OC0936.PDF
http://www.atmel.com/dyn/resources/prod ... AVR200.zip