PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Port Pins namen geben und strukturieren



theodrin
04.08.2009, 19:18
Hallo!

So meine Code-Restaurierung/Umstrukturierung geht los. Also Problem. Hab mal Code geschrieben und das so ziemlich auf: Es muss nur funktionieren. Mittlerweile schau ich mir den wieder an, will was umändern und es fällt mir auf, uff, da muss man sich ja erst wieder einlesen.
Also hab ich mir gleich gedacht, ich strukturier die Bezeichnungen meiner Portpins neu, mit denen ich arbeite. Problem diesmal ist, dass eben an einem Port nicht nur mein LCD (im 4 Bit Mode) hängt, sondern auch andere sachen. Und ich damals ziemlich wüst gleich den ganzen Port neu gesetzt hab, weil ich eben die anderen 4 Pins nicht gebraucht hab. Also muss ich mir das alles anschauen und umbessern. Und dabei dacht ich gleich an weitere Verbesserungen.
Also ich schreib mal zusammen was ich so wollte:
1: bessere Bezeichnungen für jeden Pin, wenn ich mal separat nur einen Pin -> gut war nicht schwierig
2: neue Strukturen herstellen, damit ich einige Pins zusammenfasse und damit auf die zugreifen kann aber nicht andere störe.

Und da hakts jetzt ein bisschen:

ich hab mir die schreiberei aus den anderen Files von Microchip rausgesucht und mal gut glück versucht obs geht:




extern volatile near unsigned char LATA;
extern volatile near struct {
unsigned LATA0:1;
unsigned LATA1:1;
unsigned LATA2:1;
unsigned LATA3:1;
unsigned LATA4:1;
unsigned LATA5:1;
unsigned LATA6:1;
} LATAbits;


Hab ich dann daraus gemacht:



extern volatile near struct {
unsigned LATA0:1;
unsigned LATA1:1;
unsigned LATA2:1;
unsigned LATA3:1;
} LCD_DATA;


und die wollt ich dann halt mit
LCD_DATA = 0x3 oder irgendwas ansprechen. Wär ja hübsch. Kann ich nur die wirklich gewünschten bits ändern und nix falsch machen. Künstlich auf 8 bits aufblasen das struct funktioniert auch nicht.

hat da wer eine Ahnung?

lg,
theo

hm_heli
06.08.2009, 16:01
LCD_DATA.LATA0 = 1;
LCD_DATA.LATA1 = 1;
LCD_DATA.LATA2 = 1;
LCD_DATA.LATA3 = 1;

Vielleicht solltest Du doch mal C-Grundlagen besser verinnerlichen? :-k

theodrin
06.08.2009, 18:51
Na ja nein eben nicht. Weil dann weiß ich ja schon beim schreiben des Programms welche Ports ich verwende und upps beim nächsten mal tu ich andere Pins als die vom Port a verwenden und ausbessern im .h file und leider gehts nicht so wie du das gemeint hast! So ein Pech!

Habs jetzt anders gemacht. Also eben eine Methode der ich eben übergebe was ich setzen will, bla bla
im grunde genommen nicht
LCD_DATA = 0x04; sondern LCD_DATA_WRITE(0x04);
Damit kann ich eben im .h File nehmen was ich will und geht immer. Und mit dem Write und 2 Klammern kann ich leben!

lg,
theo

hm_heli
06.08.2009, 19:25
sorry, aber das habe ich aus Deiner Problembeschreibung nicht so entnommen...