我正在研究一个简单的项目,使用CCS进行编程方面的电梯,我有一个显示器和一个4 * 3的键盘,我使用的是pic16f877a,当它上升时会显示“subiendo ...”的消息(上升...),当发出一条消息说“bajando ......”(下降......),然后显示你当前所在的楼层。问题是,当我向下走时,它显示了上升的信息,但它确实把我带到了正确的楼层,这是因为它不知何故进入了一个if条件,当它不应该进入它而我不知道为什么!请帮忙。
#include <16F877A.h>
#use delay(clock=8M)
#fuses XT,HS,NOWDT,NOPUT,NOPROTECT,NOLVP
#define LCD_ENABLE_PIN PIN_B0
#define LCD_RS_PIN PIN_B1
#define LCD_RW_PIN PIN_B2
#define LCD_DATA4 PIN_B4
#define LCD_DATA5 PIN_B5
#define LCD_DATA6 PIN_B6
#define LCD_DATA7 PIN_B7
#define use_portb_kbd TRUE
#include <lcd.c>
#include <kbd.c>
int piso;
int x;
/// main program
void main()
{
char destino;
lcd_init();
kbd_init();
port_b_pullups(TRUE);
piso=1;
lcd_putc("\f Piso 1");
while (true)
{
if(input(PIN_A5)==0)
{
destino=kbd_getc();
x=destino-48;
if(destino!=0)
{
if(x==piso)
{
}
if((x>piso)&&(x<7))
{
piso=x;
lcd_putc("\f Subiendo...");
output_high(PIN_D6);
delay_ms(1000);
output_low(PIN_D6);
printf(lcd_putc,"\f Piso %d", piso);
}
if((x<piso)&&(x>0))
{
piso=x;
lcd_putc("\f Subiendo...");
output_high(PIN_D6);
delay_ms(1000);
output_low(PIN_D6);
printf(lcd_putc,"\f Piso %d", piso);
}
}
}
else
{
lcd_putc("\f Limite de peso \n excedido");
delay_ms(500);
printf(lcd_putc,"\f Piso %d", piso);
delay_ms(500);
}
} /// fin de bucle while
}