请教一个长按键的问题

2020-02-04 09:30发布

之前看到一个帖子:新型的按键扫描程序(http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3941614&bbs_page_no=1&search_mode=1&search_text=%B0%B4%BC%FC%C9%A8%C3%E8&bbs_id=9999),于是想写一个长按键的程序:长按key0键切换LCD1602的屏幕显示,不知道为什么切换不了,程序如下:

unsigned char Trg;  
unsigned char Cont;  
unsigned int i=0;
unsigned char longpress=0;
#define KEY_0       0x01

void KeyRead( void )  

{  
    unsigned char ReadData = P1^0xff;      
    Trg = ReadData & (ReadData ^ Cont);      
    Cont = ReadData;                          

}
void main(void)  
{
        sys_init();   
        lcd_bus=0xff;         
        lcd_delay(10);   
        lcd_init();      
        lcd_clear();     
        while(1){
                KeyRead();
                if(Cont&key0){   
                           i++;        
                        if(i>500){
                        longpress=(~longpress);
                        }
                }
                if(longpress==0){
                        display1(); //屏幕1
                }
                if(longpress!=0){
                        display2();     //屏幕2
                }
        }
}  
开机时显示屏幕1,长按key0键切换不到屏幕2,这是什么原因?求解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。