Hola!
estoy tratando de hacer el movimiento de una linea corta, a través de unos pulsadores. La idea es, de momento, que si pulso "x" pulsador la linea se desplaza.
De momento no soy nada meticuloso, simplemente quiero hacer que se desplaze como sea, si pulso el boton.
Pero..no me hace caso! Entonces he pensado...será que no está bien configurado el LCD? No es asi..todo depende de un if:
if (pin_A0==0){ suma posicion }
sin ese if, o sea, puesto " a saco" si veo ( por simuladro proteus) el movimiento. Pero a pesar que A0 si detecte ( muchas veces lo hago..asi que ..) que esta a nivel 0... por que no entra en ese IF y no me hace caso?? Pongo un esquema de lo que hago y el código:
esquema :
codigo :
#include <16f877.h>
#use delay(clock=20000000)
#fuses HS,NOWDT
#include <HDM64GS12.C>
#include <graphics.c>
#byte porta = 0x85
#USE STANDARD_IO (A)
int16 valor;
float tension;
void cuadro(void);
void pixel_inicial(int a1,int b1,int a2,int b2);
void main() {
glcd_init(ON);
set_tris_A(0xFF);
set_tris_c(0x00);
cuadro(); // dibuja el cuadro
while(1){
set_tris_A(0xFF);
set_tris_c(0x00);
pixel_inicial(28,28,40,28);
delay_ms(500);
if (pin_A1==0){ // solo quiero usar el switch de arriba, que va a pin A1
delay_ms(500);
pixel_inicial(28++,28+6,40+5,28+6); // si no pusiera esto dentro del IF, me funciona. El problema es qu eno detecta el if!??
output_high(pin_C7);
delay_ms(500);
}
}
}
void cuadro(void){
//glcd_fillscreen(0); //Borrado de pantalla
glcd_line(1,1,1,64,1); //líneas de x e y vertical izquierda
glcd_line(190,1,190,64,1); //líneas de x e y vertical derecha
glcd_line(1,1,128,1,1); //horizontal sup
glcd_line(1,63,128,63,1); //horizontal inf
}
void pixel_inicial(int a1,int b1,int a2,int b2){
delay_ms(100);
glcd_line(a1,b1,a2,b2,1);
}