Eine Variable definieren mit mehr als 8 Bit (16f690)

Gast #1933020
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
Gast #1933109
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.
Gast #1933184
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren