Forum: Mikrocontroller und Digitale Elektronik Eine Variable definieren mit mehr als 8 Bit (16f690)


von Daniel (Gast)


Lesenswert?

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
von heinzhorst (Gast)


Lesenswert?

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.

von Gerhard (Gast)


Lesenswert?

Hallo

wenn du in Assembler arbeitest, musst du entsprechend deine Variable(n) 
auf 2 Bytes oder mehr verteilen.

Gruß
Gerhard

von Daniel (Gast)


Lesenswert?

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

von Gerhard (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.