1-8个灯接在P0口1 3 5 7灯闪烁 2 4 6 8灯再闪烁 请问 P0=0x??

1-8个灯接在P0口1 3 5 7灯闪烁 2 4 6 8灯再闪烁 请问 P0=0x??
不知道P0=0x??怎么算

问题分析

要让P口处在不同的电平就需要在控制寄存器上写上数据。
比如你灯一头接在 IO 口上,一头接VCC上,那么需要在这个IO口上写0变成低电平即可。
比如 IO P0^0 写上高电平,其他的要写低电平,则就需要把二进制数据 0b00000001 写进 P0几即可。
0b 是二进制的意思,0x是16进制的意思。转成16进制就是 0x01 ;
同理,你需要让 1 3 5 7 灯亮 则需要在 0 2 4 6 四个位置写上0 其他位置写上 1
就是 0b10101010 转成16进制就是 0xAA 。我们可以通过 程序员计算器 来转换,或者通过 位操作来操作。

Bitmap

可以通过位操作来实现:
实现方式如同bitmap。
包装成函数如下:

bool Get_bit( unsigned char * st, unsigned int num ) {
    return ( st[(int)(num / 8)] & (0x01 << (num % 8) ) ) > 0 ? true : false ;
}
void Set_bit( unsigned char * st, unsigned int num ) {
    st[(int)(num / 8)] |= (0x01 << (num % 8) ) ;
}
void Res_bit( unsigned char * st, unsigned int num ) {
    st[(int)(num / 8)] &= ~(0x01 << (num % 8) ) ;
}