Hallo zusammen, Ich habe vor kurzem Angefangen mit der Programmierung eines PICs vom Typ 16f690. Dafür verwende ich PICkit 2 und MPLAB. Nun habe ich ein Problem, ist es irgendwie möglich eine Variable zu definieren, welche eine grössere Zahl speichern kann als 255 respektive 8 Bit? Da ich noch nicht sehr lange PIC programmiere wäre ich dankbar wenn eure Hilfen möglichst einfach formuliert sind Gruß, Daniel
:
Verschoben durch User
Dann nimmst du einfach einen anderen Variablentyp. Hier sind mal ein paar aufgeführt: unsigned char = 8 Bit (0 - 255) unsigned int = 16 Bit (0-65536) unsigned long = 32 Bit (0-4294967296) Etwas Literatur zu den Grundlagen der C-Programmierung wäre sinnvoll.
Hallo wenn du in Assembler arbeitest, musst du entsprechend deine Variable(n) auf 2 Bytes oder mehr verteilen. Gruß Gerhard
Das mit dem Verteilen habe ich auch schon gemacht aber in meinem Fall nützt es nichts, da ich eine Zahl mit einer anderen dividiere. Dies mache ich so: movlw 0xFF ; 255 in Periodendauer schreiben movwf Periodendauer Periodendauerloop movf frequenz,0 ; Variable frequenz in Arbeitsregister laden bcf STATUS, C ; Carry Flag löschen subwf Periodendauer,1 ; Periodendauer = Periodendauer - Arbeitsreg. bnc Periodendauerfertig ; Wenn C=1 springe zu Periodendauerfertig incf Taktrate,1 ; Taktrate +1 goto Periodendauerloop ; springe nach Periodendauerloop Periodendauerfertig ..... usw. Das Problem ist nun, dass ich in die Variable Periodendauer höchstens 255 schreiben kann und in der Variable frequenz eine Zahl zwischen 1 und 150 steht. Dies bedeuted das wenn in der Variable frequenz 130 steht schlussendlich das gleiche Resultat gibt wie wenn 150 stehen würde. Nun müsste ich in die Variable Periodendauer eine höhere Zahl schreiben können, damit die Genauigkeit zunimmt. Denn wenn ich es nur Verteile habe ich den Fehler einfach mehrere Male. Trotzdem danke für den Tipp
Hi schau mal hier: http://www.piclist.com/techref/microchip/routines.htm Als ich die Dinger noch in Assembler programmiert hab, hab ich dort viele interessante Funktionen gefunden. Manchmal muss man da noch ein bisschen feilen, aber sonst nicht schlecht die Seite. Gruß Gerhard
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.