на pic16f877a я пытаюсь создать код, используемый для устранения дребезга программного обеспечения с помощью одной кнопки, но всякий раз, когда я нажимаю кнопку, она включается и больше никогда не гаснет, вот код:
#include "config.h"
unsigned int ledToggle(void);
void main(){
TRISCbits.TRISC0 = 1;
TRISDbits.TRISD0 = 0;
PORTDbits.RD0 = 0;
while(1){
if(PORTCbits.RC0 == 1){
if(ledToggle()%2 == 0){
PORTDbits.RD0 = 1;
}else{
PORTDbits.RD0 = 0;
}
}
}
}
unsigned int ledToggle(){
static int i = 2;
i++;
return i;
}
РЕДАКТИРОВАТЬ
Я также сделал этот новый код, у которого есть проблема, и иногда он работает, иногда не здесь:
#include "config.h"
static char flag = 0;
static int counter = 0;
unsigned int ledToggle(void);
void main(){
TRISCbits.TRISC0 = 1;
TRISDbits.TRISD0 = 0;
PORTDbits.RD0 = 0;
while(1){
if(ledToggle()%2 == 0){
PORTDbits.RD0 = 1;
}else{
PORTDbits.RD0 = 0;
}
}
}
unsigned int ledToggle(){
if(PORTCbits.RC0 == 1 && flag == 0){
counter++;
flag = 1;
}else{
counter += 0;
flag = 0;
}
if(PORTCbits.RC0 == 0){
flag = 0;
}
return counter;
}
и, кстати, я забыл упомянуть, что config.h — это заголовочный файл, который я сделал для настройки битов и частоты кристалла (_XTAL_FREQUENCY)