Hallo Zusammen,
ich habe ein problem mit Port einlesen. ich habe eine Funktion
geschrieben, und sie funktionniert nach meine Meinung gut(eine Logische
AND Funktion). ich habe so in Hauptprogramm definiert:
void main (void)
{
TRISB=0x00;
TRISA=0x70;
PORTAbits.RA0=1;
PORTAbits.RA1=1;
while(1)
{
PORTBbits.RB1=AND(PORTAbits.RA0,PORTAbits.RA1);
}
}
und ich sehe nicht die Änderung im RB1. aber wenn ich so schreibt (
AND(1,1) im Programm) sehe ich alle Änderungen. Apropos ich habe die
Funktion als Char definiert und benutzt das Programm MPLAB mit COmpiler
C18. Ich brauche ihre Hilfe.
Grüß
Nimm für Schreibzugriffe das LAT-Register. (genaueres steht im Datenblatt zum PIC) Versuch folgendes: while(1) { LATBbits.LATB1 = AND (PORTAbits.RA0,PORTAbits.RA1) ; } Gruss
Hallo Gast, es geht immer noch nicht. aber wenn ich so schreibe AND(1, 1), geht es. Gruss
Mal geraten (da ich das PIC-Datenblatt nicht im Kopf habe): Ist PORTA als DIGITAL I/O eingestellt? Kann sein, dass er defaultmäßig auf ANALOG-Eingang eingestellt ist.
RA0 und RA1 sind per Default/POR als Analog-In konfiguriert. Versuch mal diese als Digital I/O zu konfigurieren. Dies geschieht im Register ADCON1, Bits PCFG3-0 auf 1 setzen. Siehe Datenblatt A/D-Konverter-Kapitel. Gruss
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.