请高手进来

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这个是不是有点多此一举哪位高手帮忙解释下



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
A670521546
1楼-- · 2019-07-16 12:44
你这样排版怎么看啊
看不清楚
jlc345
2楼-- · 2019-07-16 12:52
A670521546 发表于 2011-8-3 09:56
你这样排版怎么看啊
看不清楚

后面还有一个 清楚地
jlc345
3楼-- · 2019-07-16 15:05
 精彩回答 2  元偷偷看……
jlc345
4楼-- · 2019-07-16 16:31
jlc345 发表于 2011-8-3 16:04
后面还有一个 清楚地

{
                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 != '')
        {
                SBUF = str;
                while(!TI);                                // 等特数据传送
                TI = 0;                                        // 清除数据传送标志
                i++;                                        // 下一个字符
        }       
}
key_v没有赋值 当K1按下的时候是低电平 、也就是k1=0  key_=0   key_s ^ key_v的值为0 主函数的if语句没法执行    key_v & 0x01) == 0这个是不是有点多此一举
哪位高手帮忙解释下
guoy24
5楼-- · 2019-07-16 20:33

一周热门 更多>