Ich verwende den folgenden Code, um etwas GPIO zu testen, während ich mit dem PIC18F45K20-Demoboard herumspiele. Mir wurde klar, dass etwas seltsam war, als ich einen Wert nicht erhöhen und sehen konnte, wie er sich auf den LEDs widerspiegelte, nachdem ich ihn in den Port geschrieben hatte. Irgendeine Idee, warum das so ist? Ich verwende den C18-Compiler mit MPLABX IDE v3.05
Verwendung von aPICkit3 mit diesem Demo-Kit: http://www.microchip.com/DevelopmentTools/ProductDetails.aspx?PartNO=dm164130-4
#pragma config FOSC = INTIO67
#pragma config WDTEN = OFF, LVP = OFF
#define TIMER T0CON
#include "p18f45k20.h"
void delay();
void delay() {
int counter = 0;
for (counter = 0; counter<1000; counter++);
}
void main(void) {
unsigned char d = 0;
TRISD = 0; // all bits of portd are set 0 as output
PORTD = 0; // deactivate all led's
while (1) {
d++;
PORTD = d;
delay();
}
}
Auf PICs lesen Sie von PORT und schreiben in LAT. Ersetzen Sie PORTD durch LATD. Es ist auch keine schlechte Idee, counter
als zu deklarieren volatile int counter = 0;
. {}
Nachher nicht vergessen for(counter = 0; counter<1000; counter++)
.
Roger Rowland
LATD
Versuchen Sie stattdessen zu schreibenPORTD
und machen Sie Ihre Verzögerung viel langsamer.DerStrom8
Matt Jung
DerStrom8
Sensoren