CCS条件传递的时候不应该

时间:2017-07-09 09:25:34

标签: c circuit

我正在研究一个简单的项目,使用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
} 

0 个答案:

没有答案