0317密码锁

电路图

流程图

程序
return(0);

    else

    {

    delay(10);

        if(P1==0x0f)

            return(0);

        for(a=0;a<4;a++)

        {

        P1=_cror_(0x7f,a);

            if(P1_0==0)break;

            if(P1_1==0)break;

            if(P1_2==0)break;

            if(P1_3==0)break;

        }

        key=P1;

        for(;P1!=0x0f;P1=0x0f)

        {;}

            switch(key)

            {

              case 0xee:key_value=2;break;

                case 0xeb:key_value=3;break;

                case 0xe7:key_value=4;break;

                case 0xde:key_value=5;break;

                case 0xdd:key_value=6;break;

                case 0xdb:key_value=7;break;

                case 0xd7:key_value=8;break;

                case 0xbe:key_value=9;break;

                case 0xbd:key_value=10;break;

                case 0xbb:key_value=11;break;

                case 0xb7:key_value=12;break;

                case 0x7e:key_value=13;break;

                case 0x7d:key_value=14;break;

                case 0x7b:key_value=15;break;

                case 0x77:key_value=16;break;

                default:;break;

            }

            return(key_value);

    }

}

void main(void)

{

    uchar key_value=0xff;

    while(1)

    {

    while(key_value!=D[0])

          {key_value=KeyV();}

            while(key_value!=D[1])

          {key_value=KeyV();}

            while(key_value!=D[2])

          {key_value=KeyV();}

            while(key_value!=D[3])

          {key_value=KeyV();}

            while(key_value!=D[4])

          {key_value=KeyV();}

            while(key_value!=D[5])

          {key_value=KeyV();}

            while(key_value!=16)

          {key_value=KeyV();}

            LED=0;

    }   

}

总结

这次的程序对于我来说有一定的难度,但是我认真完成并且还搞懂了原理。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容