我已经为我的 At-mega 32 编写了一个程序,以便使用您在图片中看到的两个触觉开关女巫从 0 到 9 增加和减少数字并反转(9 到 0)。
但问题是,虽然所有数字都通过按下这些开关来显示,但只有数字 4 和 7 没有正确显示!?。
我的七段而不是数字 4 演示了您在第一张图片中可以看到的内容,而数字 7 显示了您在第二张图片中可以看到的内容。
如果有人可以查看我在此处共享的代码和原理图并帮助我找到问题,我将不胜感激。
太感谢了,
#include <avr/io.h>
#include <util/delay.h>
#include "global.h"
#include <avr/interrupt.h>
uint8_t Codes[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xB6, 0xBE, 0xE0, 0xFE, 0xF6};
uint8_t count=0;
//temp=0
void display(uint8_t digit);
void config(void);
ISR(INT0_vect)
{
if(count<9)
{
count++;
display(count);
}
}
ISR(INT1_vect)
{
if(count>0)
{
count--;
display(count);
}
}
int main(void)
{
config();
while(1)
{
}
}
void config(void)
{
DDRA=0xFF;
PORTA=0;
cbi(DDRD,2);
cbi(DDRD,3);
sbi(PORTD,2);
sbi(PORTD,3);
GICR=(1<<INT1) | (1<<INT0);
MCUCR=0; //low level sensitivity
GIFR=(1 << INTF1) | (INTF0);
sei();
}
void display(uint8_t digit)
{
PORTA=Codes[digit];}