diff --git a/MASTER.ino b/MASTER.ino index a4d4b69..f090369 100644 --- a/MASTER.ino +++ b/MASTER.ino @@ -9,42 +9,109 @@ #define SPI_SCK 5 #define SPI_SS 2 +enum calculator_state +{ + NUMBER_FIRST, + NUMBER_SECOND, + RESULT +}; +enum calculator_op +{ + NO_OP, + ADD, + SUB, + DIV, + MUL +}; +struct calculator +{ + // 1 число + int num1; + // 2 число + int num2; + // 3 операция + enum calculator_op operation; + // 4 результат + double result; + // 5 состояние атомата + enum calculator_state state; +}; + +void output_on_display(struct calculator * calc) { + char buffer[]; + size_t size_buffer; + switch (state) { + case NUMBER_FIRST: + display_all_clear( 0, &buffer[0]); + SPI_MasterTransmit(&buffer[0], size_buffer); + displ1ay_add_simbol( , , &buffer[0]); + SPI_MasterTransmit(&buffer[0], 1); + break; + case NUMBER_SECOND: + display_all_clear(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + break; + case RESULT: + display_all_clear(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + display_draw_line(); + SPI_MasterTransmit(&buffer[0], ) + display_add_simbol(); + SPI_MasterTransmit(&buffer[0], ) + break; + default: + display_all_clear(); + } +} void SPI_MasterInit(void) { - /* Настройка MOSI и SCK как выход, - все остальные сигналы как вход: */ - SPI_DDRX = (1 << SPI_MOSI)|(1 << SPI_SCK)|(1<