aktivieren von ports und RB3 RB4 auf dem pic 18F4550
Ich geschrieben habe, dieses Programm in mplab v8.63 mit c-compiler C18 auf dem pic 18F4550. wenn ich auf den Knopf drücke auf mein picdem (S3) und es ist eine led angeschlossen, die auf RB5 (mit einem Widerstand), dann geht die led auf. Wenn ich drückte auf (S3) und es gibt ein led an RB4, das die led nicht auf (während ich dies erwartet) das gleiche mit RB3. Thit ich etwas vergessen einzustellen?
Ziel ist es, für die rote, grüne und Blaue LED separat gemessen mit einem LDR. aber zuerst muss ich offensichtlich ports RB5, und RB3 RB4.
#pragma code
/******************************************************************************/
void main (void)
{
TRISD = 0x00; //PORTD as output
TRISB = 0b00110000; //RB4 en RB5 as input
TRISA = 0x00; //RA output
RCONbits.IPEN = 0; //priority
INTCONbits.GIE = 1; //enable interrupt
INTCONbits.RBIE = 1; //interrupt portB on
while(1)
{
_asm sleep _endasm
}
}
#pragma interrupt ISR
void ISR (void)
{
//int red= 01110010011011110110111101100100;
int on = 1;
int off = 0;
if (INTCONbits.RBIF==1)
{
if(PORTBbits.RB5==0) //S3 pressed?
{
LATDbits.LATD1 ^= 1; //D2 toggle
LATAbits.LATA2 ^= on;
}
if(PORTBbits.RB4==0)
{
LATDbits.LATD1 ^= 1; //D2 toggle
LATAbits.LATA2 ^= on;
}
if(PORTBbits.RB3==0)
{
LATDbits.LATD1 ^= 1; //D2 toggle
LATAbits.LATA2 ^= on;
}
}
INTCONbits.RBIF = 0;
}
InformationsquelleAutor user001 | 2011-03-22
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
In der PIC-TRIS-Register, ein bit gesetzt auf 1 bedeutet, dass Eingabe-und 0 bedeutet Ausgang. Sie setzen TRISB = 0b00110000, die alle Ausgänge an port B abgesehen von RB5 und 4 sind Eingänge. Wenn Sie brauchen, RB3 als digitaler Eingang als auch, müssen Sie einstellen TRISB = 0b00111000. Die bits werden gezählt, b7,b6,b5,b4,b3,b2,b1,b0.
Allerdings erwarten Sie, dass der RB3 auslösen der RBIF das tut es nicht, wie ich hier erklärt. So wie Sie es haben, nur RB5 und 4 auslösen würde RBIF, aber wenn RB3 war gering, die Zeit würde es Umschalten D1 und A2. So bewegen Sie diesen code hinzu main-Schleife, als ich vorschlug, bis Sie es zu arbeiten, dann stellen Sie es auf den interrupt.
Als ChrisJ sagt, einige pins Standard-analog-Eingang, es sei denn, Sie deaktivieren, so dass Sie nicht bekommen, den digitalen Eingang und interrupt-on-pin ändern, erwarten Sie, dass mit ADCON1
InformationsquelleAutor Martin
Wenn die
PBADEN
bit gesetzt ist, PORTB ist initialisiert mit RB4:RB0-set als analoge Eingänge. Wenn ja, müssen Sie verwendenADCON1
zum deaktivieren der analogen Eingänge auf RB4:RB0. Das Beispielprogramm am Anfang von Abschnitt 10.2 der Bedienungsanleitung wites 0x0E zuADCON1
richtig zu initialisieren PORTB.Siehe auch Abschnitt 21.0 für eine Erklärung der
ADCON1
bits.Gut, Sie können versuchen
ADCON1 = 0x0E
...Ich will nur damit sich die anderen ports (RB4 und RB3) oder RB7 oder RB6. Wie kann ich das tun?
Die
ADCON1
Werte für die verschiedenen verfügbaren Konfigurationen sind gut beschrieben, Seite 266 der neueste Handbuch: ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdfInformationsquelleAutor ChrisJ