Avatar billede khell Nybegynder
30. april 2003 - 16:48 Der er 6 kommentarer og
1 løsning

PIC16F876:Timer1 hvordan sammensætter man de to registre?

Jeg sidder og arbejder med en PIC16F876 der sidder på et WebNet modul fra IO Tech.
Jeg skal bruge Timer1 da den består af 2 8bit registre og derfor kan "tælle" mest.
Opsætning osv går fint, men hvordan får jeg de to reistre sat sammen så jeg kan arbejde på tallet.
Både TMR1L og TMR1H er jo en del af tallet.

Khell
Avatar billede alleykat Nybegynder
01. maj 2003 - 04:38 #1
Jeg er totalt lost ift. hvad sådan et kort er - men det du spørger om er vist hvordan du lægger de 2 tællere korrekt sammen. Det burde ganske enkelt gå sådan: (TMR1H*256)+TMR1L = Timer1værdi (H=high, L=low).

Nu har jeg ingen ide om hvordan du kan/skal/vil behandle dataene, men baglæns igen bli'r så (Round(Timerværdi/256)=TMR1H (eller shift word'et 8 bit til højre) ; (Timerværdi AND 255)=TMR1L

Var det lige service eller hva' ;) - håber jeg husker rigtigt med AND...
Avatar billede alleykat Nybegynder
01. maj 2003 - 04:41 #2
(Round(Timerværdi/256))=TMR1H

1) der manglede lige en parentes... 2) skal man måske bruge (INT()) (Integer)?
Avatar billede khell Nybegynder
01. maj 2003 - 12:06 #3
Nu er det sådan at jeg arbejder i assembler, men det har givet mig en ide.
Jeg har også PICC Lite liggende men jeg har et godt eksempel i asm jeg arbejder ud fra så jeg vil lige prøve om jeg kan lave jeres forslag om til det.
BRB
Avatar billede khell Nybegynder
01. maj 2003 - 14:09 #4
Det store problem er at PIC16F876 er en 8bit processor og at arbejdsregistret derfor ikke kan indeholde de 16 bit som resultatet af en sammenlægning af de to registre bliver.
Hele problematikken er at jeg har to kontakter den ved påvirkning hhv. starter og stopper timeren. Det er en trafiktæller og hastighedsmåler jeg skal lave. Dvs at jeg skal have omregnet den målte tid til en hastighed når jeg kender afstanden mellem de to kontakter (0.3m.)
Avatar billede khell Nybegynder
03. maj 2003 - 11:13 #5
Jeg har fundet ud af at det ikke kan lade sig gøre på en 8bit processor. Points alligevel for hjælpen. Takker
Avatar billede alleykat Nybegynder
05. maj 2003 - 01:07 #6
Thx :) Beklager, nej, du kan ikke 'regne' direkte i 16-bit på en 8-bit maskine. Men så er vi næsten dernede hvor jeg er med igen - 8-bit asm til C64 kan jeg klare (65010) ;)
Med lidt programmering kan man sagtens arbejde med store tal i asm - det er et spørgsmål om at ha' styr på tællerne (imho). Måske hvis du ka' gi' et lille kodeeksempel, og et lille skema over hvordan det skal fungere... måske ku' jeg få de små grå i rotation tilbage til 80'erne
Avatar billede khell Nybegynder
05. maj 2003 - 23:48 #7
hehe.
Undskyld jeg ikke har svaret særlig hurtigt, men der var lige en begravelse. :(
Jeg har tænkt mig at løse problemet på en anden måde. Simpelthen sende de to registres indhold videre i systemet til noget der kan arbejde på 16bit.
Hvis du gerne vil se hvad jeg arbejder med kan du prøve at kigge på IOCons hjemmeside for deres WebNet:
http://webnet.iocon.dk/
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Forsknings-, Uddannelses- og Digitaliseringsministeriet

Vil du være med at udvikle sikkerhed og compliance i CPR?

BEC Financial Technologies

Business Continuity Manager - Technical

KMD A/S

Partner Manager

Capgemini Danmark A/S

AI Data Architect