我正在为微控制器设计点击计数器,我正在使用C语言开发代码。这里的操作是当我点击第一个按钮时它将计算按钮按下的次数。接着我必须按第二个按钮将计数以二进制形式显示并点亮LED灯。例如,如果我按下第一个按钮10次,它将点亮第二个LED和第四个LED。由于有8个LED灯,我使用了2个不同的端口(PORTB的6位和PORTD的2位)。因此,我使用了if/else编写了一段代码。但是我想要实现这个操作而不使用多个if/else操作,因为这种方法并不高效。
while(PIND & 0b00100000){ //while PD5 switch is not pressed
if(clickCount>=128){ //if click count>=128
PORTB = PORTB | 0b00100000; //set PB5 HIGH
clickCount-=128; //deduct 128 from clickCount
}else if(clickCount>=64){
PORTB = PORTB | 0b00010000;
clickCount-=64;
}else if(clickCount>=32){
PORTB = PORTB | 0b00001000;
clickCount-=32;
}else if(clickCount>=16){
PORTB = PORTB | 0b00000100;
clickCount-=16;
}else if(clickCount>=8){
PORTB = PORTB | 0b00000010;
clickCount-=8;
}else if(clickCount>=4){
PORTB = PORTB | 0b00000001;
clickCount-=4;
}else if(clickCount>=2){
PORTD = PORTD | 0b10000000;
clickCount-=2;
}else if(clickCount==1){
PORTD = PORTD | 0b01000000;
clickCount = 0;
}
}
我希望能用更少的字节来编写这段代码。所以是否有使用for循环或其他方法开发这段代码的方式?