关于while循环内嵌套switch的几个问题,请热心人帮忙解答!

2025-02-24 05:56:20
推荐回答(1个)
回答1:

你不就是想要把P0的输入转码在P2输出吗!!何必这么麻烦呢?

以下代码少一个while,性能更好,采纳了吧。。。。。

#define uchar unsigned char
#define uint unsigned int
uchar code table1[]={0x67,0x9b,……};
uchar code table2[]={0x9e,0x6d,……};
 void main()
{
    uchar old_data = P0;
    uint index = 0;
    while(1)
    {
        if(old_data != P0)     //新数据!=老数据(P0口数据出现变化)
        {
            old_data = P0;    //重新赋值
            switch(old_data)    //查询输入数据对应的转码后在table2[]中的位置
            {
                case table1[0]:index=0;break;
                case table1[1]:index=1;break;
                ...............
                case table1[15]:index=15;break;
                default   :index=0; break; 
            }
        }
        else
        {
            P2 = table2[index];          //输出转码后的值
        }
    }
}