我在我的项目上使用指轮。我只需要将数据发送到串口一次,这样收件人就可以用它做一些事情。但是,我制作的代码不断向连续发送数据,有人可以开导我吗?而且,我正在使用AVR btw。
这是我的代码`
uint8_t fii = 0;
uint8_t previousfii = 0;
int main(void)
{
setUp32MhzInternalOsc();
setUpSerial();
stdout = &usart_output;
stdin = &usart_input;
//thumbwheel 2B
PORTF.DIRCLR = PIN1_bm;
PORTF.PIN1CTRL = PORT_OPC_PULLUP_gc;
PORTF.DIRCLR = PIN2_bm;
PORTF.PIN2CTRL = PORT_OPC_PULLUP_gc;
PORTF.DIRCLR = PIN3_bm;
PORTF.PIN3CTRL = PORT_OPC_PULLUP_gc;
while(1)
{
//thumbwheel 2B
if (!(PORTF.IN&PIN3_bm))
{
if (fii != 1)
{
fii = fii+1;
}
}
if (!(PORTF.IN&PIN1_bm))
{
if (fii != 2)
{
fii = fii+2;
}
}
if (!(PORTF.IN&PIN2_bm))
{
if (fii != 4)
{
fii = fii+4;
}
}
printf("%d\n", fii);
fii = 0;
//_delay_ms(500);
}
}
答案 0 :(得分:1)
如果每次更改时发送fii
就足够了。所以使用这样的东西:
int main(void) {
uint8_t fii = 0;
uint8_t previousFii = 0;
// < other init code here >
while(1) {
// < your other code here >
if (fii != previousFii) {
previousFii = fii;
printf("%d\n", fii);
}
}
}