12F675. Använda ISCP pinnar som GPIO
Postat: 2 oktober 2015, 14:19:04
Har skrivit en liten enkel snutt.
Ska helt enkelt känna GP0 och GP1 samt GP2. Lite logik på detta så skall kretsen utföra några små enkla saker.
MEN, GP0-1 läses inte alls. Kvittar om jag drar det högt eller lågt. Har även provat sätta dessa pinnar som utgång och toggla dem, men de är de också bara låga.
Just nu uppträder programmet som om de är låga hela tiden. MAO drar jag GP2 hög så aktiveras utgångarna GP5 och GP6.
Jag har aldrig innan använt ISCP pinnarna till ngt annat än just till att flasha. Är det ngt som jag missat? R10/R2 samt C8/C9 är bortagna för att kunna flasha. Därför togglar jag dessa ingångar med en extern spänningskälla på 5V
Ska helt enkelt känna GP0 och GP1 samt GP2. Lite logik på detta så skall kretsen utföra några små enkla saker.
MEN, GP0-1 läses inte alls. Kvittar om jag drar det högt eller lågt. Har även provat sätta dessa pinnar som utgång och toggla dem, men de är de också bara låga.
Just nu uppträder programmet som om de är låga hela tiden. MAO drar jag GP2 hög så aktiveras utgångarna GP5 och GP6.
Jag har aldrig innan använt ISCP pinnarna till ngt annat än just till att flasha. Är det ngt som jag missat? R10/R2 samt C8/C9 är bortagna för att kunna flasha. Därför togglar jag dessa ingångar med en extern spänningskälla på 5V
Kod: Markera allt
#define LEDOUT GPIO.F4
#define TRIGIN GPIO.F2
#define TRIGG1 GPIO.F0
#define TRIGG2 GPIO.F1
#define OUT GPIO.F5
int k=0;
int n=0;
void initMain(){
TRISIO=0b00000111;
ANSEL=0b00000000;
OUT=1;
LEDOUT=1;
delay_ms(2000);
}
void Alarm(){
if((TRIGIN==1)&&(TRIGG1==0)&&(TRIGG2==0)){
delay_ms(300);
while(TRIGIN==1){
LEDOUT=1;
OUT=0;
n++;
}
}
}
void BlinkMode(){
LEDOUT=1;
Delay_ms(50);
if(n>=1){
LEDOUT=0;
Delay_ms(50);
LEDOUT=1;
Delay_ms(50);
}
}
void Main() {
initMain();
while(1){
k++;
if(k==1000){
BlinkMode();
}
if((TRIGIN==1)&&(TRIGG1==0)&&(TRIGG2==0)&&(n<1)){
Alarm();
}
if((TRIGG1==1)||(TRIGG2==1)){
n=0;
}
LEDOUT=0;
OUT=1;
}
}