Как я могу использовать scanf с помощью отладчика в Atmel Studio? - PullRequest
0 голосов
/ 13 апреля 2019

Когда я построчно отлаживаю программу, пока не будет достигнут оператор scanf, в среде IDE откроется вкладка «Разборка», которая никак не улучшит ситуацию.Как мне ввести ключ в программу, если при отладке программы достигнут оператор scanf ???

код:

#include <avr/io.h>
#include <stdio.h>

int main(void)
{
    DDRA = 0x00; //PORTA = 0x00;
    DDRB = 0xFF; //PORTB = 0x00;

    typedef enum {
        firstkey,
        secondkey,
        dooropens,
        }doorstate;

    doorstate state = firstkey;
    char secretkey;
    while (1) 
    {
        switch(state) 
        {
            case firstkey:
                scanf("%c", secretkey); //?????
                if (secretkey == '#')  {
                    PORTA == 0x01 << 3;
                    state = secondkey; 
                }
                else 
                    state = firstkey;  
                break;
            case secondkey:
                scanf("%c", secretkey);//?????
                if (secretkey == 'Y')  {
                    PORTA = PORTA | 0x02;
                    state = dooropens;
                }
                else 
                    state = firstkey;  
                break; 
            case dooropens:
                PORTB = 0x01;
                if (PORTA == 0x80) {
                    state = firstkey;
                    PORTB = 0x00;
                }
                break;
            default:
                state = firstkey;
        }
    }
}

1 Ответ

0 голосов
/ 14 апреля 2019

Разборка, вероятно, происходит из-за того, что вы входите в вместо над библиотечной функцией.В этом случае источник библиотечной функции недоступен отладчику, поэтому у него нет другого выбора, кроме как показать вам сборку.

Используйте пошаговый режим, и функция будет работать нормально и примет ввод и управление вернется к отладчику после функция вернется.

...