El tema es que estoy en un proyecto de contador de puntos para tennis de mesa, el problema que tengo es que al realizar la programacion en microc y simularlo en Proteus funciona todo bien pero no cuenta al oprimir el pulsador conectado a RE0, ya he probado de diversas formas pero nada. ¿ Existe alguna forma especial de configurar ese puerto?. Necesito como mínimo conectar dos pulsadores para realizar los conteos pero ni con uno solo me ha funcionado. Desde ya les agradezco si me pudieran brindar alguna mano. Probe el mismo codigo para leer la entrada pero a traves de RB0 y funciona el codigo pero cuando lo quiero utilizar con RE0, RE1 o RE2 no funciona.
www .dropbox.com/s/mus0g9myg8ivr0y/TENNIS.DSN?dl=0
www .dropbox.com/s/6yoogfe59vgazsb/TENNISdos.mcppi?dl=0
Este es el código. Saludos:
...
www .dropbox.com/s/mus0g9myg8ivr0y/TENNIS.DSN?dl=0
www .dropbox.com/s/6yoogfe59vgazsb/TENNISdos.mcppi?dl=0
Este es el código. Saludos:
Código:
unsigned short c1;
unsigned short c2;
unsigned short c11;
unsigned short c22;
unsigned short var;
char Display(char digito);
char c1=0, estado=1;
void main() {
TRISA=0;
TRISB=0;
TRISC=0;
TRISD=0;
TRISE.F0=1;
PORTA=0b000000;
PORTB=0b00000000;
PORTC=0b00000000;
PORTD=0b00000000;
while(1)
{
PORTC=63;
PORTA=0b0000;
PORTB=0;
PORTD=63;
PORTE=0b000;
Delay_ms(1500);
while(1){
if(Button(&PORTE,0,1,0)) estado =0; /*Verifica si se pulso
el boton por el puerto RE0 con 1 ms de retardo, y se pregunta por un
nivel bajo(0) debido a la forma en la que esta conectada el boton
(siempre a un nivel logico 1 con la resistencia) */
if(estado==0 && Button(&PORTE,0,1,1)){ /*El programa no incremen-
tara el contador sino hasta que se suelte el pulsador(pregunta
nuevamente por el nivel logico 1)*/
c1++; // incrementa contador
if(c1>9) c1=0; // resetea contador
estado =1; // regresa el estado
}
Delay_ms(1000);
if (c1==0){
PORTC=63;
}
if (c1==1) {
PORTC=6;
}
if (c1==2) {
PORTC=91;
}
if (c1==3) {
PORTC=79;
}
if (c1==4) {
PORTC=102;
}
if (c1==5) {
PORTC=109;
}
if (c1==6) {
PORTC=125;
}
if (c1==7) {
PORTC=7;
}
if (c1==8) {
PORTC=127;
}
if (c1==9) {
PORTC=111;
}
if(c1>9){
c1=0;
PORTC=63;
c11=c11+1;
}
if (c2==0){
PORTD=63;
}
if (c2==1) {
PORTD=6;
}
if (c2==2) {
PORTD=91;
}
if (c2==3) {
PORTD=79;
}
if (c2==4) {
PORTD=102;
}
if (c2==5) {
PORTD=109;
}
if (c2==6) {
PORTD=125;
}
if (c2==7) {
PORTD=7;
}
if (c2==8) {
PORTD=127;
}
if (c2==9) {
PORTD=111;
}
if(c2>9){
c2=0;
PORTD=63;
c22=c22+1;
}
if (c11==0){
PORTB=0b0111111;
}
if (c11==1) {
PORTB=0b0000110;
}
if (c11==2) {
PORTB=0b1011011;
}
if (c11==3) {
PORTB=0b1001111;
}
if (c11==4) {
PORTB=0b1100110;
}
if (c11==5) {
PORTB=0b1101101;
}
if (c11==6) {
PORTB=0b1111101;
}
if (c11==7) {
PORTB=0b0000111;
}
if (c11==8) {
PORTB=0b1111111;
}
if (c11==9) {
PORTB=0b1101111;
}
if(c11>9){
c11=0;
}
if (c22==0){
PORTA=0b000000;
}
if (c22==1) {
PORTA=0b000001;
}
if (c22==2) {
PORTA=0b000010;
}
if (c22==3) {
PORTA=0b000011;
}
if (c22==4) {
PORTA=0b000100;
}
if (c22==5) {
PORTA=0b000101;
}
if (c22==6) {
PORTA=0b000110;
}
if (c22==7) {
PORTA=0b000111;
}
if (c22==8) {
PORTA=0b001000;
}
if (c22==9) {
PORTA=0b001001;
}
if(c22>9){
c22=0;
}
}
}
}