Drehkodierschalter auf RD0-3 im PIC18F458

Gast #2503488
Lesenswert?
• ▲
▼
Hallo!

Ich arbeite erst seit kurzem mit µCs und stehe nun vor einem kleinen 
Problem.
Vor mir habe ich eine fertige Firmware für unsere intelligenten 
Vorschaltgeräte. Dabei ist im D register auf RD0/RD1/RD2/RD3 eine 
7-Segment Anzeige vorgesehen.

Allerdings sollen an diese Pins nun ein Drehkodierschalter angebracht 
werden und ich sollte das in der Firmware integrieren. Allerdings bin 
ich mir nicht ganz sicher was ich wie ändern soll, da ich die Schritte 
des alten Programmierers nicht wirklich nachvollziehen kann.

in lowinit.c:
1
   /* PORT D */
2
      /* clear LATD register */
3
         LATD = CLEAR_LATCH_REGISTER;
4

5
      /* RD0; 7-segment display A */
6
         DISPLAY_A_ON;        /* switch A input of 7-segment display on */
7
         TRISD &= 0xFE;       /* set port to output */
8

9
      /* RD1; 7-segment display B */
10
         DISPLAY_B_OFF;       /* switch B input of 7-segment display off */
11
         TRISD &= 0xFD;       /* set port to output */
12

13
      /* RD2; 7-segment display C */
14
         DISPLAY_C_OFF;       /* switch C input of 7-segment display off */
15
         TRISD &= 0xFB;       /* set port to output */
16

17
      /* RD3; 7-segment display D */
18
         DISPLAY_D_ON;        /* switch D input of 7-segment display on */
19
         TRISD &= 0xF7;       /* set port to output */
die defines aus der global.h:
1
#define DISPLAY_A_ON               LATD |= 0x01
2
#define DISPLAY_A_OFF              LATD &= 0xFE
3

4
#define DISPLAY_B_ON               LATD |= 0x02
5
#define DISPLAY_B_OFF              LATD &= 0xFD
6

7
#define DISPLAY_C_ON               LATD |= 0x04
8
#define DISPLAY_C_OFF              LATD &= 0xFB
9

10
#define DISPLAY_D_ON               LATD |= 0x08
11
#define DISPLAY_D_OFF              LATD &= 0xF7
Der Drehkodierschalter gibt dem Gerät eine eindeutige ID (1 - 16 bzw hex 
0 - F bzw bin 0000 - 1111) mit dem dann schlussendlich 16 Geräte im 
Bus-System betrieben werden können.

Durch bisschen recherchieren habe ich eine vage vorstellung was TRIS 
macht und denke um RD0-3 als Eingänge zu definieren reicht:
1
      /* Set RD 0-3 to input ( 0 = output | 1 = input ) */
2
         TRISD = 0x0F;        // 0000 1111

Aber der rest ist mir noch relativ schleierhaft.
Vlt kann mir jemand kurz einen Input in einfachen Worten geben, der 
meine Arbeit erleichtert.


Vielen Dank im Vorhinein!

MFG
-Ben

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.