请高手进来

2019-07-16 06:52发布

{                if(scan_key())                // 扫描按键                {                        delayms(10);                        // 延时去抖动                        if(scan_key())                        // 再次扫描                        {                                key_v = key_s;                // 保存键值                                proc_key();                        // 键处理                        }                }                if(RI)                                                // 是否有数据到来                {                        RI = 0;                        tmp = SBUF;                                // 暂存接收到的数据                        P0 = tmp;                                // 数据传送到P0口                        send_char(tmp);                        // 回传接收到的数据                }                        }}bit scan_key()        // 扫描按键{        key_s = 0x00;        key_s |= K1;        return(key_s ^ key_v);        }void proc_key()// 键处理{        if((key_v & 0x01) == 0)        {                        // K1按下                send_str();                                // 传送字串"welcome!...        }}void send_char(unsigned char txd)// 传送一个字符{        SBUF = txd;        while(!ti);                                // 等特数据传送        TI = 0;                                        // 清除数据传送标志}void send_str()// 传送字串{        unsigned char i = 0;        while(str[i] != '')        {                SBUF = str[i];                while(!TI);                                // 等特数据传送                TI = 0;                                        // 清除数据传送标志                i++;                                        // 下一个字符        }        }key_v没有赋值 当K1按下的时候是低电平 、也就是k1=0  key_=0   key_s ^ key_v的值为0 主函数的if语句没法执行    key_v & 0x01) == 0这个是不是有点多此一举哪位高手帮忙解释下



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。