求助,代码查错

2020-01-30 13:55发布

我用keil 编译了以下的程序,编译通过了,但单步运行的时候在local窗口查看变量的时候发现没按照代码去运行,我以为是软件问题,又换了不同的版本去调试还是一样。是我的代码有错误还是思路错了?有什么更好的方法吗?高手们帮看看
以下是代码:

--------------------------------------------------------------------------------------------------------------------------------
#include<reg52.h>
#define uchar  unsigned char

uchar data Dat[]={0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};  
   
void A()
{
uchar a,b,k,x,y;
uchar CH[8];          //数组,用来记住P1口的状态
uchar key1[8]={0x10,0x20,0x30,0x40,0x50,0x60,0x70,0x80};                        //p1  口高4位
uchar key2[16]={0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0x9,0x10,0x11,0x12,0x13,0x14,0x15,0x16};          //p1口低4位
y=Dat[3]&0x0F;                 //根据数组Dat[]里的数的低4位数值来选择key数组里的数值,比如Dat[3]&0x0f=4
k=CH[y];                //          把P1口的状态保持到数组CH[ ]里        
a=key1[y];                //     key1[ 4 ]=0x50------>a=0x50
x=Dat[2]&0x0F;          //   根据数组Dat[]里的数的高4位数值来选择key数组里的数值,比如Dat[2]&0x0f=3
b=key2[x];                //    key2[ 3 ]=0x4------>a=0x4
k=a&b;                //         k=0x54                 
CH[y]=k;                //        k保存到数组CH[ ]里
                               
}

void main()
{
   while(1){
            A();
           }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。