2016-11-21 8 views
0

im работает с маховичком на моем чертеже. Мне нужно отправить данные в последовательный порт только один раз, чтобы получатель мог что-то с этим сделать. однако код, который я сделал, постоянно посылал данные на серийный номер, может кто-нибудь просветить меня, пожалуйста? и, im используя AVR btw.Отправляйте данные Thumbwheel в последовательный только один раз

вот мой code`

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

«только один раз», вероятно, также не то, что вы хотите. Может быть, вы хотите отправить данные при изменении одного из контактов? –

+0

yes .. thats what i man sir –

+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); 
     } 
    } 
} 
+0

Какой код инициализации должен быть? –

+0

Ничего не связано с моим ответом. Вы не указали свой полный код, поэтому я предположил, что у вас есть инициализация направления PORT или какой-то другой материал. –

+0

отредактировано, еще раз проверьте мой код –