From 13d7246559044319e6d2924ad4cb53dc5e41c17c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9A=D1=80=D0=B8=D1=81=D1=82=D0=B8=D0=BD=D0=B0=20=D0=91?= =?UTF-8?q?=D0=BE=D1=87=D0=BA=D0=B8=D0=BD=D0=B0?= Date: Mon, 22 May 2023 12:54:34 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MASTER.ino | 241 +++++++++++++++++++++++++++++++++++------------------ 1 file changed, 158 insertions(+), 83 deletions(-) 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<