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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.