目录
一、简述
在蓝桥杯单片机锁存器控制IO口 编写代码时会用到它,可以优化代码。这是一个简单的二进制转换和运用到数电基础的“&”和“|”,即与和或。
二、相关知识介绍
2.1 二进制转换
在8051单片机中,初始P2的各个引脚都为高电平,P2 ^ 0 到 P2 ^ 7 ,高四位和低四位都为1111 1111。而P2=(P2 & 0x1f) | 0x80 可以一步一步来转换。P2 & 0x1f 即高三位为0,低五位为1,
初始74HC138译码器的值:
HC138_A = 0;
HC138_B = 0;
HC138_C = 0;
2.2 转换方法
P2 : 1111 1111
0x1f : 0001 1111
P2 & 0x1f :0001 1111
0x80 : 1000 0000
P2=(P2 & 0x1f) | 0x80 :1001 1111
得到 1001 1111 即
HC138_A = 0;
HC138_B = 0;
HC138_C = 1;
Y4接通
三、举一反三
3.1 P2=(P2 & 0x1f) | 0xa0
P2 : 1111 1111
0x1f : 0001 1111
P2 & 0x1f :0001 1111
0xa0 : 1010 0000
P2=(P2 & 0x1f) | 0xa0 : 1011 1111
得到 1011 1111 即
HC138_A = 1;
HC138_B = 0;
HC138_C = 1;
Y5接通
3.2 P2=(P2 & 0x1f) | 0xc0
P2 : 1111 1111
0x1f : 0001 1111
P2 & 0x1f :0001 1111
0xc0 : 1100 0000
P2=(P2 & 0x1f) | 0xa0 : 1101 1111
得到 1011 1111 即
HC138_A = 0;
HC138_B = 1;
HC138_C = 1;
Y6接通
3.3 P2=(P2 & 0x1f) | 0xe0
P2 : 1111 1111
0x1f : 0001 1111
P2 & 0x1f :0001 1111
0xe0 : 1110 0000
P2=(P2 & 0x1f) | 0xa0 : 1111 1111
得到 1011 1111 即
HC138_A = 1;
HC138_B = 1;
HC138_C = 1;
Y7接通