我正在为一个计数为 99 的两位数七段显示器编码,它在一个足够快的计时器函数中被调用,因此两个数字同时显示而没有闪烁。但是,对于分数为 0 到 9 的情况,显示器没有输出我想要的正确数字,它显示在 SSD 的右侧,但是一旦达到 10,它就会显示 11 而不是 10,所以它正在显示左右两边的十位数字。我不确定我的代码中的错误是什么,因此我需要修复它以显示右侧数字的正确数字。我得到了左侧十位数的正确显示,所以唯一的问题是右侧。
// 0 = right digit; 1 = left digit.
volatile uint8_t seven_seg_cc = 0;
void seven_segment_display(){
uint8_t score = get_score();
seven_seg_cc = 1 ^ seven_seg_cc;
if (score < 10){
PORTC = seven_segment_display_one[score];
}
else if(score >= 10){
if(seven_seg_cc == 0){
//Display right dig
PORTC = seven_segment_display_one[(score/10)%10];
}else{
//Display left dig
PORTC = seven_segment_display_one[score/10];
}
PORTA = (seven_seg_cc << DDRA4);
}
}