Byte aus Einzelbits zusammenstellen / wie debuggen? (PIC18 und XC8)

Gast #4073984
Lesenswert?

Hallo,

ich mache gerade die ersten Schritte in C (XC8 für PICs) und habe mal 
zwei Fragen.

1: wie baue ich denn am elegantesten ein Byte aus mehreren Bits 
zusammen? Ich mache es erstmal so:
1
#define bus0 PORTAbits.RA0
2
#define bus1 PORTAbits.RA1
3
#define bus2 PORTAbits.RA2
4
#define bus3 PORTAbits.RA3
5
#define bus4 PORTAbits.RA4
6
#define bus5 PORTCbits.RC4
7
#define bus6 PORTCbits.RC5
8
#define readBus bus6<<5 & bus5<<4 & bus4<<3 & bus3<<2 & bus1<<1 & bus0
9
char busStatus;
10
busStatus = readBus;

Ich bin mir aber nicht ganz sicher, ob das so geht bzw. ob es nicht eine 
bessere Lösung dafür gibt.

2. Wie kann ich denn am besten testen, ob mein obiger Code funktioniert 
wie er soll? Compilieren und brennen ist ja relativ umständlich, weil 
ich dann erst irgendeine Möglichkeit schaffen muss das Ergebnis 
anzuzeigen.

VG
Stefan
Gast #4074088
Lesenswert?

ja, den Simulator habe ich auch gerade entdeckt. Ich kann jetzt schonmal 
durch den Code durchsteppen.
Aber kann ich auf irgendwie während des debuggens angeben, dass ein 
Input Pin jetzt als High gelesen wird?
Gast #4074147
Lesenswert?

Also ich mache es so:
Window-->Simulator-->Stimulus
Dort setze ich im Tab "Asynchronous" bei Pin "RA0" ein und bei Action 
"Set High"

Dann starte lass ich den Code bis zu einem Breakpoint laufen und drücke 
dann den grünen Run-Button im Stimulus Fenster ("Apply synchronous 
stimulus")

Im Fenster SFR steht PortA aber immer noch auf 0x00. RA0 wurde also 
offenbar nicht gesetzt.

Was läuft denn da falsch?
Gast #4074670
Lesenswert?

Habs geklärt.
Der Fehler war, dass ich Binärzahlen ohne 0b am Anfang geschrieben habe. 
So wurde TRISA nicht wie gewollt beschrieben.
Jetzt funktioniert das debuggen und ich kann mir leichter selbst helfen 
:-)

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