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.