{"id":488563,"date":"2026-07-26T01:14:11","date_gmt":"2026-07-26T01:14:11","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=488563"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=488563","title":{"rendered":"\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u0432 \u0441\u0442\u0435\u0441\u043d\u0435\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><strong>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0410\u043b\u0438\u0441\u044b AI<\/strong><\/p>\n<p><em>\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u0441\u043d\u0451\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u2014 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u043e\u0431\u044b\u0439 \u0432\u044b\u0437\u043e\u0432. \u042f \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0430 \u0442\u0430\u043a: \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430\u00bb, \u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u043d\u043e \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u0436\u0451\u0441\u0442\u043a\u0438\u043c\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438.<\/em> <\/p>\n<p>\u0412 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0442\u043e\u043a\u0430,\u00a0 \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0445, \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c. \u041c\u0435\u043d\u044e \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u0438 \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0432\u043e\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p>\u0412\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0431\u044b\u043b \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0434\u0436\u0435\u043d\u0442\u043b\u044c\u043c\u0435\u043d\u0441\u043a\u0438\u0439 \u043d\u0430\u0431\u043e\u0440: \u0434\u0438\u0441\u043f\u043b\u0435\u0439, 4 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e 20 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430, 16 \u043a\u043b\u0430\u0432\u0438\u0448. \u0421\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0442\u0430\u043a:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/401\/977\/49a\/40197749a94c93ebbfb25afa436e36de.jpg\" alt=\"\u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u2013 4\u044520; \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 - 16 \u043a\u043b\u0430\u0432\u0438\u0448\" title=\"\u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u2013 4\u044520; \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 - 16 \u043a\u043b\u0430\u0432\u0438\u0448\" width=\"446\" height=\"251\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/401\/977\/49a\/40197749a94c93ebbfb25afa436e36de.jpg 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/401\/977\/49a\/40197749a94c93ebbfb25afa436e36de.jpg 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>\u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u2013 4\u044520; \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 &#8212; 16 \u043a\u043b\u0430\u0432\u0438\u0448<\/figcaption><\/div>\n<\/figure>\n<h2>\u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430<\/h2>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439.<\/p>\n<p><strong>unsigned char mgetc(void) <\/strong>{\u2026} \u00a0\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 <\/p>\n<p>\u0424\u0443\u043d\u0446\u0446\u0438\u044f <strong>mgetc() <\/strong>\u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0438\u043b\u0438 0xFF, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e. \u0415\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u0440\u0438\u0431\u043e\u0440\u0443.<\/p>\n<p><strong>unsigned char mgetcnw(void) <\/strong>{ \u00a0\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0431\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f<\/p>\n<p>\u00a0 unsigned char ch;<\/p>\n<p>\u00a0 if ((ch = mgetc())== 0xFF)\u00a0 \/\/ \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e<\/p>\n<p>\u00a0\u00a0\u00a0 return ch;<\/p>\n<p>\u00a0 while (mgetc() != 0xFF);\u00a0 \/\/ \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043d\u0430\u0436\u0430\u0442\u0430, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f<\/p>\n<p>\u00a0 return ch;<\/p>\n<p>}<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>mgetcnw() <\/strong>\u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 <strong>mgetc()<\/strong>, \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u0438\u0431\u043e \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043b\u0438\u0431\u043e 0xFF. \u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043d\u0430\u0436\u0430\u0442\u0430, \u043e\u043d\u0430 \u0436\u0434\u0435\u0442 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u0443\u044e \u0440\u0435\u0430\u043a\u0446\u0438\u044e \u043d\u0430 \u043e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435.<\/p>\n<p><strong>unsigned char mgetcw(void) <\/strong>{ \u00a0\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c<\/p>\n<p>\u00a0 unsigned char ch;<\/p>\n<p>\u00a0 while ((ch = <strong>mgetcnw<\/strong>()) == 0xFF);\u00a0 \/\/ \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f<\/p>\n<p>\u00a0 return ch;<\/p>\n<p>}<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>mgetcw() <\/strong>\u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 <strong>mgetcnw()<\/strong>, \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438. \u0412\u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u0441\u0435 \u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.<\/p>\n<h2>\u0414\u0438\u0441\u043f\u043b\u0435\u0439<\/h2>\n<p>\u0421 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f. <\/p>\n<p><strong>code struct <\/strong>{<strong>\u00a0 <\/strong>\u00a0<strong>\u00a0<\/strong><\/p>\n<p>\u00a0\u00a0\u00a0 int ns;\u00a0 \/\/ \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a<\/p>\n<p>\u00a0\u00a0\u00a0 int ls;  \/\/ \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435)<\/p>\n<p>} <strong>Disply<\/strong> = {4,20};<\/p>\n<p><strong>Disply, <\/strong>\u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u0439.<\/p>\n<p>\u0414\u0432\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u0440\u0441\u043e\u0440\u0430.<\/p>\n<p>#define <strong>KURSOR_ON<\/strong>\u00a0 InitCommIND(0x0E) \u00a0\/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430<\/p>\n<p>#define <strong>KURSOR_OFF<\/strong> InitCommIND(0x0C) \u00a0\/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430<\/p>\n<p><strong>int PutcIND(char ch, unsigned char y, unsigned char x)<\/strong> <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>PutcIND() <\/strong>\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0438\u043c\u0432\u043e\u043b.\u00a0 <\/p>\n<p><strong>int PutsIND(char *str, unsigned char y, unsigned char x)<\/strong> <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>PutsIND() <\/strong>\u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.\u00a0 <\/p>\n<p><strong>void ClrIND(void)<\/strong><\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>ClrIND() <\/strong>\u0447\u0438\u0441\u0442\u0438\u0442 \u044d\u043a\u0440\u0430\u043d.<\/p>\n<p><strong>void MoveCur(unsigned char y, unsigned char x)<\/strong><\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <strong>MoveCur() <\/strong>\u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440.<\/p>\n<p>\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b <strong>y<\/strong>, <strong>x<\/strong>\u2013 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440\u0441\u0442\u0440\u043e\u043a\u0438\u0438 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 0.<\/p>\n<h2>\u041c\u0435\u043d\u044e<\/h2>\n<p>\u0418\u0434\u0435\u044e <strong>\u043c\u0435\u043d\u044e<\/strong> \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a: \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0440\u043e\u043a, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043b\u0438\u0431\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 <strong>\u043c\u0435\u043d\u044e<\/strong>, \u043b\u0438\u0431\u043e \u043d\u0430 <strong>\u0444\u0443\u043d\u043a\u0446\u0438\u044e<\/strong>. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u0443 \u0438\u0434\u0435\u044e.<\/p>\n<p><strong>\/\/ \u041c\u0430\u043a\u0440\u043e\u044f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0435\u043d\u044e<\/strong><\/p>\n<p>#define <strong>MENU_DEF <\/strong>code struct Menu \u00a0\/\/ \u043c\u0435\u043d\u044e<\/p>\n<p>#define <strong>MENU_POINT <\/strong>xdata struct Menu* \u00a0\/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0435\u043d\u044e <\/p>\n<p>#define <strong>MENU_COUNT <\/strong>xdata struct MenuI \u00a0\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/p>\n<p>#define <strong>STRINGS <\/strong>code char \u00a0\/\/ \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 code<\/p>\n<p>#define <strong>STRINGSx <\/strong>xdata char \u00a0\/\/ \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 xdata<\/p>\n<p>#define <strong>MENU_PAR(M) <\/strong>&amp;M \u00a0\/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0435\u043d\u044e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c<\/p>\n<p>#define <strong>MENU_SONS <\/strong>code struct Menu \u00a0\/\/ \u043c\u0435\u043d\u044e, \u043f\u043e\u0442\u043e\u043c\u043a\u0438<\/p>\n<p>#define <strong>FUNCTIONS <\/strong>code void \u00a0\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f<\/p>\n<p>#define <strong>MENU_INI(M) <\/strong><a href=\"http:\/\/M.ni\" rel=\"noopener noreferrer nofollow\">M.ni<\/a>=M.nb=0 \u00a0\/\/ \u043c\u0435\u043d\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/p>\n<p>#define <strong>MENU_INI_NI(M,NI)<\/strong> <a href=\"http:\/\/M.ni\" rel=\"noopener noreferrer nofollow\">M.ni<\/a>=NI;M.nb=0 \u00a0\/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 <strong>NI<\/strong><\/p>\n<p>#define <strong>SIZE(N) <\/strong>(sizeof(N)\/sizeof(char *)) \u00a0\/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/em>: <strong>code<\/strong> \u2013 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, <strong>xdata<\/strong> \u2013 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 <strong>MENU_DEF<\/strong> \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438<strong> code, <\/strong>\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<strong> MENU_COUNT <\/strong>\u0432 \u043f\u0430\u043c\u044f\u0442\u0438<strong> xdata. <\/strong>\u00a0\u00a0<\/p>\n<p><strong>\/\/ \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044e<\/strong><\/p>\n<p><strong>MENU_DEF <\/strong>{ \u00a0\/\/ \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430<\/p>\n<p>\u00a0\u00a0int ns; \u00a0\/\/ \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e<\/p>\n<p>\u00a0 char **St; \u00a0\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e<\/p>\n<p>\u00a0 struct Menu *Par; \u00a0\/\/ \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043c\u0435\u043d\u044e \u043f\u0440\u0435\u0434\u043a\u0430<\/p>\n<p>\u00a0 struct Menu **Sons; \u00a0\/\/ \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u043d\u044e \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432<\/p>\n<p>\u00a0 void(**Fun)(void); \u00a0\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f <\/p>\n<p>\u00a0 struct MenuI *Mi; \u00a0\/\/ \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 MENU_COUNT<\/p>\n<p>};<\/p>\n<p>\u0420\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 <strong>Sons<\/strong> \u0438 <strong>Fun <\/strong>\u0440\u0430\u0432\u043d\u0430 <strong>ns<\/strong> \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u043d\u044e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <strong>Fun <\/strong>\u0440\u0430\u0432\u0435\u043d 0 \u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 <strong>Sons <\/strong>\u0440\u0430\u0432\u0435\u043d 0.<\/p>\n<p><strong>MENU_COUNT <\/strong>{ \u00a0\/\/ \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435<\/p>\n<p>\u00a0 int nb; \u00a0\/\/ \u043d\u043e\u043c\u0435\u0440 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435<\/p>\n<p>\u00a0 int ni; \u00a0\/\/ \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<p>};<\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 <strong>\u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043c\u0435\u043d\u044e &#8212; <\/strong>\u044d\u0442\u043e \u043c\u0435\u043d\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442.<strong> <\/strong><\/p>\n<p><strong>MENU_POINT MenuTek; \u00a0<\/strong>\/\/\u00a0 C\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043c\u0435\u043d\u044e<\/p>\n<p>\u041d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 <strong>MENU_DEF <\/strong>\u0438 <strong>MENU_COUNT <\/strong>\u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p><strong>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u043d\u044e<\/strong><\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f<strong> MenuDisp() <\/strong>\u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442<strong> <\/strong>\u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u043d\u044e MenuTek.<\/p>\n<p><strong>void MenuDisp(void) <\/strong>{ \u00a0\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043c\u0435\u043d\u044e MenuTek<\/p>\n<p>\u00a0 int n, ns; \u00a0\/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u043d\u044e<\/p>\n<p>\u00a0 ns = (MenuTek-&gt;ns &lt;= Disply.ns) ? MenuTek-&gt;ns : Disply.ns;<\/p>\n<p>\u00a0 ClrIND();<\/p>\n<p>\u00a0 for (n = 0; n &lt; ns; ++n){ \u00a0\/\/ \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430<\/p>\n<p>\u00a0\u00a0\u00a0 PutsIND(&#187; &#171;, n, 0);<\/p>\n<p>\u00a0\u00a0\u00a0 PutsIND(MenuTek-&gt;St[MenuTek-&gt;Mi-&gt;nb + n], n, 1);<\/p>\n<p>\u00a0 }<\/p>\n<p>\u00a0 PutsIND(&#171;&gt;&#187;, (MenuTek-&gt;Mi-&gt;ni &#8212; MenuTek-&gt;Mi-&gt;nb), 0); \u00a0\/\/ &#171;&gt;&#187;-\u043c\u0430\u0440\u043a\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<p>}<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f<strong> MenuNext() <\/strong>\u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a <strong>\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435<\/strong> \u043c\u0435\u043d\u044e.<\/p>\n<p><strong>void MenuNext(void) <\/strong>{ <strong>\u00a0<\/strong>\/\/ \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u043d\u0438\u0437<\/p>\n<p>\u00a0 if (MenuTek-&gt;Mi-&gt;ni &lt; MenuTek-&gt;ns-1){<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 MenuTek-&gt;Mi-&gt;ni++; \u00a0\/\/ \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u00a0<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 if ((MenuTek-&gt;Mi-&gt;ni &#8212; MenuTek-&gt;Mi-&gt;nb) &gt;= Disply.ns)<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0MenuTek-&gt;Mi-&gt;nb++; \u00a0\/\/ \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0432\u0432\u0435\u0440\u0445<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 MenuDisp();<\/p>\n<p>\u00a0 }<\/p>\n<p>}<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f<strong> MenuPrev() <\/strong>\u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a <strong>\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435<\/strong> \u043c\u0435\u043d\u044e.<\/p>\n<p><strong>void MenuPrev(void) <\/strong>{<strong> \u00a0<\/strong>\/\/ \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0432\u0435\u0440\u0445<\/p>\n<p>\u00a0 if (MenuTek-&gt;Mi-&gt;ni &gt; 0){<\/p>\n<p>\u00a0 \u00a0\u00a0MenuTek-&gt;Mi-&gt;ni&#8212;; \u00a0\/\/ \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443<\/p>\n<p>\u00a0\u00a0\u00a0 if (MenuTek-&gt;Mi-&gt;ni &lt; MenuTek-&gt;Mi-&gt;nb)<\/p>\n<p>\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0MenuTek-&gt;Mi-&gt;nb&#8212;; \u00a0\/\/ \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0432\u043d\u0438\u0437<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 MenuDisp();<\/p>\n<p>\u00a0 }<\/p>\n<p>}<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f<strong> MenuEnter() <\/strong>\u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 <strong>\u0432\u044b\u0431\u043e\u0440<\/strong> \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e.<\/p>\n<p><strong>void MenuEnter(void) <\/strong>{ <strong>\u00a0<\/strong>\/\/ \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u0434\u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/p>\n<p>\u00a0 if(*(MenuTek-&gt;Fun[MenuTek-&gt;Mi-&gt;ni]) != 0) \u00a0\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 (*(MenuTek-&gt;Fun[MenuTek-&gt;Mi-&gt;ni]))();<\/p>\n<p>\u00a0 else <\/p>\n<p>\u00a0\u00a0\u00a0 if(MenuTek-&gt;Sons[MenuTek-&gt;Mi-&gt;ni] != 0){ \u00a0\/\/ \u043f\u043e\u0434\u043c\u0435\u043d\u044e<\/p>\n<p>\u00a0 \u00a0\u00a0\u00a0\u00a0MenuTek = MenuTek-&gt;Sons[MenuTek-&gt;Mi-&gt;ni];<\/p>\n<p>\u00a0 \u00a0\u00a0\u00a0\u00a0MenuTek-&gt;Mi-&gt;ni=MenuTek-&gt;Mi-&gt;nb=0;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0 MenuDisp(); \u00a0\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e<\/p>\n<p>}<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f<strong> MenuBack() <\/strong>\u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 <strong>\u0432\u044b\u0445\u043e\u0434<\/strong> \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e.<\/p>\n<p><strong>void MenuBack(void) <\/strong>{ \u00a0\/\/ \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e<\/p>\n<p>\u00a0 if (MenuTek-&gt;Par == 0) \u00a0\/\/ \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442<\/p>\n<p>\u00a0\u00a0\u00a0 return;<\/p>\n<p>\u00a0 ClrIND();<\/p>\n<p>\u00a0 MenuTek = MenuTek-&gt;Par; \u00a0\/\/ \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e<\/p>\n<p>\u00a0 MenuDisp();<\/p>\n<p>}<\/p>\n<p>\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f<strong> UserFun() &#8212; <\/strong>\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p><strong>void UserFun(void) <\/strong>{\u00a0 \/\/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f<\/p>\n<p>\u00a0 ClrIND();<\/p>\n<p>\u00a0 PutsIND(&#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f&#187;, 0,0);<\/p>\n<p>\u00a0 PutsIND(&#171;\u0444\u0443\u043d\u043a\u0446\u0438\u044f &#8230;&#187;, 1,0);<\/p>\n<p>\u00a0 while(mgetcw() == 0xFF);<\/p>\n<p>}<\/p>\n<p>\u041a\u0430\u043a \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 \u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 <strong>\u043c\u0435\u043d\u044e <\/strong>\u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435.<\/p>\n<p><strong>\/\/ \u041a\u043b\u0430\u0432\u0438\u0448\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u043d\u044e<\/strong><\/p>\n<p>#define KEY_PREV kA \u00a0\/\/ \u0432\u0432\u0435\u0440\u0445\/\u0432\u043b\u0435\u0432\u043e<\/p>\n<p>#define KEY_NEXT kB \u00a0\/\/ \u0432\u043d\u0438\u0437\/\u0432\u043f\u0440\u0430\u0432\u043e<\/p>\n<p>#define KEY_ENTER kD \u00a0\/\/ \u0432\u044b\u0431\u043e\u0440<\/p>\n<p>#define KEY_ESC kC \u00a0\/\/ \u0432\u044b\u0445\u043e\u0434<\/p>\n<p><strong>void Menu(unsigned char KeyIn)<\/strong> { \u00a0\/\/ \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043c\u0435\u043d\u044e \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043b\u0430\u0432\u0438\u0448<\/p>\n<p><strong>\u00a0 switch(KeyIn)<\/strong>{<\/p>\n<p><strong>\u00a0 case KEY_PREV: \u00a0<\/strong>\/\/ \u0432\u0432\u0435\u0440\u0445<\/p>\n<p>\u00a0\u00a0\u00a0 <strong>MenuPrev<\/strong>();<\/p>\n<p>\u00a0 \u00a0\u00a0break;<\/p>\n<p><strong>\u00a0 case KEY_NEXT: \u00a0<\/strong>\/\/ \u0432\u043d\u0438\u0437<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong><\/p>\n<p>\u00a0\u00a0\u00a0 <strong>MenuNext<\/strong>();<\/p>\n<p>\u00a0 \u00a0\u00a0break;<\/p>\n<p>\u00a0 <strong>case KEY_ENTER: \u00a0<\/strong>\/\/ \u0432\u044b\u0431\u043e\u0440<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong><\/p>\n<p>\u00a0\u00a0\u00a0 <strong>MenuEnter<\/strong>();<\/p>\n<p>\u00a0 \u00a0\u00a0break;<\/p>\n<p><strong>\u00a0 case KEY_ESC: \u00a0<\/strong>\/\/ \u0432\u044b\u0445\u043e\u0434<strong>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/strong><\/p>\n<p>\u00a0\u00a0\u00a0 <strong>MenuBack<\/strong>();<\/p>\n<p>\u00a0 \u00a0\u00a0break;<\/p>\n<p>\u00a0 }<\/p>\n<p>}<\/p>\n<p>\u0412\u043e\u0442, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u0441\u0435. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0438\u0436\u0435.<\/p>\n<h2>\u041c\u0435\u043d\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u21161  (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b)  <\/h2>\n<p><strong>\/\/ \u00a0\u00a0 \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e<\/strong><\/p>\n<p>\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0435 \u043c\u0435\u043d\u044e <strong>MenuMain<\/strong> \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432. \u0412\u044b\u0431\u043e\u0440 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0432\u044b\u0437\u043e\u0432\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 FunON() \u0438 FunOFF() \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e, \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044e <strong>MenuTok<\/strong>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">&gt; \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f<\/p>\n<p align=\"left\">\u00a0 \u00a0\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f<\/p>\n<p align=\"left\">\u00a0 \u00a0\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>STRINGS<\/strong> *StMain[] = {&#171;\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f&#187;, &#171;\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f&#187;, &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187;};<\/p>\n<p><strong>FUNCTIONS<\/strong> (*FunMain[])() = {FunON, FunOFF, MenuTokIni};<\/p>\n<p><strong>MENU_SONS<\/strong> *SonsMain[] = {0,0,0};<\/p>\n<p><strong>MENU_COUNT<\/strong> MiMain = {0,0};<\/p>\n<p><strong>MENU_DEF<\/strong> <strong>MenuMain<\/strong> = {<strong>SIZE<\/strong>(StMain), StMain, <strong>MENU_PAR<\/strong>(0), SonsMain, FunMain, &amp;MiMain};<\/p>\n<p><strong>\/\/ \u00a0\u00a0 \u041c\u0435\u043d\u044e &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187;<\/strong><\/p>\n<p>\u0412 \u043c\u0435\u043d\u044e <strong>MenuTok<\/strong> \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 <strong>MenuTokIni().<\/strong> \u041c\u0430\u0441\u0441\u0438\u0432\u044b L1[],L2[],L3[] \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 xdata. <\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">&gt; \u041b\u0430\u043c\u043f\u0430 \u21161\u00a0\u00a0 4.00 A\u00a0\u00a0\u00a0 <\/p>\n<p align=\"left\">\u00a0 \u00a0\u041b\u0430\u043c\u043f\u0430 \u21162\u00a0\u00a0 5.00 A\u00a0\u00a0\u00a0 <\/p>\n<p align=\"left\">\u00a0 \u00a0\u041b\u0430\u043c\u043f\u0430 \u21163\u00a0\u00a0 6.00 A <\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><strong>STRINGSx <\/strong>L1[21], L2[21], L3[21];<\/p>\n<p><strong>STRINGS<\/strong> *StTok[] =\u00a0 {L1, L2, L3};<\/p>\n<p><strong>FUNCTIONS<\/strong> (*FunTok[])() = {LampTok, LampTok, LampTok};<\/p>\n<p><strong>MENU_SONS<\/strong> *SonsTok[] = {0,0,0};<\/p>\n<p><strong>MENU_COUNT<\/strong> MiTok = {0,0}; <\/p>\n<p><strong>MENU_DEF<\/strong> <strong>MenuTok<\/strong> = {<strong>SIZE<\/strong>(StTok), StTok, <strong>MENU_PAR<\/strong>(MenuNast), SonsTok, FunTok, &amp;MiTok};<\/p>\n<p><strong>\/\/\u00a0 \u0418\u043d\u0438\u0446\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187;<\/strong><\/p>\n<p>xdata float<strong> <\/strong>Tok[N_LAMP]; \u00a0\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u043e\u043a\u043e\u0432 \u043b\u0430\u043c\u043f<\/p>\n<p><strong>void MenuTokIni(void)<\/strong>{<\/p>\n<p>\u00a0 int i;<\/p>\n<p>\u00a0 for(i=0; i&lt;N_LAMP; ++i) <\/p>\n<p>\u00a0 \u00a0\u00a0sprintf(StTok[i], &#187; \u041b\u0430\u043c\u043f\u0430 \u2116%d: %.2fA&#187;, i+1, Tok[i]);<\/p>\n<p>\u00a0 <strong>MenuTek <\/strong>= &amp;MenuTok;\u00a0 \/\/ \u0437\u0430\u0442\u0435\u043c MenuDisp() \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u0443\u0435\u0442 \u044d\u043a\u0440\u0430\u043d\u00a0\u00a0 <\/p>\n<p>}<\/p>\n<p><strong>\/\/\u00a0 \u0424\u0443\u043d\u043a\u0446\u0438\u044f &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187; <\/strong><\/p>\n<p><strong>void LampTok(void)<\/strong>{<\/p>\n<p>\u00a0 int nLamp, yn;<\/p>\n<p>\u00a0 nLamp = MenuTok.Mi-&gt;ni;\u00a0 \/\/ \u043d\u043e\u043c\u0435\u0440 \u043b\u0430\u043c\u043f\u044b<\/p>\n<p>\u00a0 yn = MenuTok.Mi-&gt;ni &#8212; MenuTok.Mi-&gt;nb; \u00a0\/\/ \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 <\/p>\n<p>\u00a0 getfloatN(yn, 12, &amp;Tok[nLamp], StTok[nLamp], 4);<\/p>\n<p>}<\/p>\n<h2>\u041c\u0435\u043d\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u21162 (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b)<\/h2>\n<p>\u042d\u0442\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u043d\u044e. \u0418\u0442\u0430\u043a, \u043c\u0435\u043d\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0430\u043c\u043f, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e <strong>MenuEnter<\/strong>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">&gt;\u041b\u0430\u043c\u043f\u0430 \u21161\u00a0 \u00a0\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u00a0   <\/p>\n<p align=\"left\">\u00a0 \u041b\u0430\u043c\u043f\u0430 \u21162\u00a0 \u00a0\u0412\u044b\u0431\u0440\u0430\u0442\u044c   <\/p>\n<p align=\"left\">\u00a0 \u041b\u0430\u043c\u043f\u0430 \u21163 \u00a0\u00a0\u0412\u044b\u0431\u0440\u0430\u0442\u044c<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043b\u0430\u043c\u043f\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430, \u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e MenuSet. \u0412 MenuSet \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043a\u0438<em>. <\/em>\u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0426\u0410\u041f \u0438 \u0410\u0426\u041f, \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e <strong>MenuSave<\/strong>.<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">&gt;4A 4.00 \u00a04.00 \u00a0\u00a0\u0417\u0430\u0434\u0430\u0442\u044c<\/p>\n<p align=\"left\">\u00a0 5A 5.00   \u00a05.00 \u00a0\u00a0\u0417\u0430\u0434\u0430\u0442\u044c<\/p>\n<p align=\"left\">\u00a0 6A 6.00 \u00a06.00\u00a0 \u00a0\u0417\u0430\u0434\u0430\u0442\u044c<\/p>\n<p align=\"left\">\u00a0\u00a0\u00a0 \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c   &lt;D&gt;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041c\u0435\u043d\u044e <strong>MenuSave<\/strong> \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0441\u0441\u0447\u0435\u0442\u0430 \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <strong>KEY_ENTER<\/strong> \u0438\u043b\u0438 \u0432\u044b\u0439\u0442\u0438 \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f <strong>KEY_ESC.<\/strong><\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">\u0426\u0410\u041f:\u00a0 \u00a0\u00a0\u0410=1.00\u00a0\u00a0   \u0412=0.00<\/p>\n<p align=\"left\">\u0410\u0426\u041f:\u00a0\u00a0\u00a0   \u0410=1.00\u00a0\u00a0 \u0412=0.00<\/p>\n<p align=\"left\">&gt;\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00a0 &lt;D&gt;<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0426\u0410\u041f, \u0410\u0426\u041f &#8212; \u0446\u0438\u0444\u0440\u043e-\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438. \u041e \u043c\u0435\u0442\u043e\u0434\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 \u0426\u0410\u041f \u0438\u043b\u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u0438\u0437 \u0410\u0426\u041f, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0432 \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/992372\/\" rel=\"noopener noreferrer nofollow\">\u00ab\u041c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0413\u0430\u0443\u0441\u0441\u0430 \u0441 \u0432\u0435\u0441\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0439\u00bb<\/a><\/p>\n<p><strong>\/\/ \u041c\u0435\u043d\u044e \u0412\u042b\u0411\u0420\u0410\u0422\u042c<\/strong><\/p>\n<p><strong>STRINGS<\/strong> *StEnter[] = {\u201d\u041b\u0430\u043c\u043f\u0430 \u21161\u00a0\u00a0 \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u201d, \u201d\u041b\u0430\u043c\u043f\u0430 \u21162\u00a0\u00a0 \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u201d, \u201d\u041b\u0430\u043c\u043f\u0430 \u21163\u00a0\u00a0 \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u201d}; \/\/ \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0430\u043c\u043f<\/p>\n<p><strong>FUNCTIONS<\/strong> (*FunEnter[])() = {MenuSetIni, MenuSetIni, MenuSetIni}; <\/p>\n<p><strong>MENU_SONS<\/strong> *SonsEnter[] = {0,0,0};<\/p>\n<p><strong>MENU_COUNT<\/strong> MiEnter = {0,0}; <\/p>\n<p><strong>MENU_DEF<\/strong> <strong>MenuEnter<\/strong> = {<strong>SIZE<\/strong>(StEnter), StEnter, <strong>MENU_PAR<\/strong>(0), SonsEnter, FunEnter, &amp;MiEnter};<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f MenuSetIni() \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u043c\u0435\u043d\u044e MenuSet \u0434\u043b\u044f \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043b\u0430\u043c\u043f\u044b.<\/p>\n<p><strong>\/\/ \u041c\u0435\u043d\u044e \u0417\u0410\u0414\u0410\u0422\u042c<\/strong><\/p>\n<p><strong>STRINGSx <\/strong>Set1[21];\u00a0 \/\/ 4A x.xx\u00a0 x.xx \u0417\u0430\u0434\u0430\u0442\u044c<\/p>\n<p><strong>STRINGSx <\/strong>Set2[21];\u00a0 \/\/ 5A x.xx\u00a0 x.xx \u0417\u0430\u0434\u0430\u0442\u044c<\/p>\n<p><strong>STRINGSx <\/strong>Set3[21];\u00a0 \/\/ 6A x.xx\u00a0 x.xx \u0417\u0430\u0434\u0430\u0442\u044c<\/p>\n<p><strong>STRINGSx <\/strong>Set4[21];\u00a0 \/\/&gt;\u0420\u0410\u0421\u0421\u0427\u0418\u0422\u0410\u0422\u042c<\/p>\n<p><strong>STRINGS<\/strong> *StSet[] =\u00a0 {Set1, Set2, Set3, Set4};\u00a0 \/\/ \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e<\/p>\n<p><strong>FUNCTIONS<\/strong> (*FunSet[])() = {FSet,FSet,FSet,FRass};<\/p>\n<p><strong>MENU_SONS<\/strong> *SonsSet[] = {0,0,0,0};<\/p>\n<p><strong>MENU_COUNT<\/strong> MiSet = {0,0}; <\/p>\n<p><strong>MENU_DEF<\/strong> <strong>MenuSet<\/strong> = {<strong>SIZE<\/strong>(StSet), StSet, <strong>MENU_PAR<\/strong>(MenuEnter), SonsSet, FunSet, &amp;MiSet};<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f FSet() \u0437\u0430\u0434\u0430\u0435\u0442 \u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u0435\u0442 \u0442\u043e\u043a.<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f Frass() \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0438 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u043c\u0435\u043d\u044e <strong>MenuSave<\/strong>.<\/p>\n<p><strong>\/\/ \u041c\u0435\u043d\u044e \u0420\u0410\u0421\u0421\u0427\u0418\u0422\u0410\u0422\u042c:\u00a0 &gt;\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c<\/strong><\/p>\n<p><strong>STRINGSx <\/strong>Save1[21];\u00a0 \/\/ \u0426\u0410\u041f<\/p>\n<p><strong>STRINGSx <\/strong>Save2[21];\u00a0 \/\/ \u0410\u0426\u041f<\/p>\n<p><strong>STRINGSx <\/strong>Save3[21];\u00a0 \/\/ \u043f\u0443\u0441\u0442\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430<\/p>\n<p><strong>STRINGSx <\/strong>Save4[21];\u00a0 \/\/ \u0417\u0410\u041f\u0418\u0421\u0410\u0422\u042c<\/p>\n<p><strong>STRINGS<\/strong> *StSave[] =\u00a0 {Save1, Save2, Save3, Save4};\u00a0 \/\/ \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e<\/p>\n<p><strong>FUNCTIONS<\/strong> (*FunSave[])() = {0,0,0,FSaveAB};<\/p>\n<p><strong>MENU_SONS<\/strong> *SonsSave[] = {0,0,0,0};<\/p>\n<p><strong>MENU_COUNT<\/strong> MiSave = {0,0}; <\/p>\n<p><strong>MENU_DEF<\/strong> <strong>MenuSave<\/strong> = {<strong>SIZE<\/strong>(StSave), StSave, <strong>MENU_PAR<\/strong>(MenuEnter), SonsSave, FunSave, &amp;MiSave};<\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f FSaveAB() \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0437\u0430\u0442\u0435\u043c \u043f\u043e \u043a\u043b\u0430\u0432\u0438\u0448\u0435 <strong>KEY_ESC<\/strong> \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u0432 \u043c\u0435\u043d\u044e <strong>MenuEnter.<\/strong><\/p>\n<p><strong>\/\/ \u0420\u0430\u0431\u043e\u0447\u0438\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b<\/strong><\/p>\n<p>code float TokXt[]={4,5,6};\u00a0 \/\/ \u0442\u043e\u043a \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432 \u0426\u0410\u041f, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/p>\n<p>xdata float TokX[N_IZM];\u00a0 \/\/ \u0442\u043e\u043a\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u0410\u0426\u041f<\/p>\n<p>xdata float TokY[N_IZM];\u00a0 \/\/ \u0442\u043e\u043a\u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u043c, \u0432\u0432\u043e\u0434\u044f\u0442\u0441\u044f \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b <\/p>\n<p><strong>\/\/\u00a0 \u0418\u043d\u0438\u0446\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e \u0417\u0430\u0434\u0430\u0442\u044c<\/strong><\/p>\n<p><strong>void MenuSetIni(void)<\/strong>{<\/p>\n<p>\u00a0 int nIzm;<\/p>\n<p>\u00a0 <strong>MENU_INI<\/strong>(MiSet);<\/p>\n<p>\u00a0 for(nIzm=0; nIzm&lt;N_IZM; ++nIzm)\u00a0 <\/p>\n<p>\u00a0\u00a0\u00a0 sprintf(StSet[nIzm], &#171;%.0fA %.2f %.2f \u0417\u0430\u0434\u0430\u0442\u044c&#187;, TokXt[nIzm], 0, 0);<\/p>\n<p>\u00a0 strcpy(Set4,&#187;\u0420\u0410\u0421\u0421\u0427\u0418\u0422\u0410\u0422\u042c&#187;);<\/p>\n<p>\u00a0 <strong>MenuTek <\/strong>= &amp;MenuSet;<\/p>\n<p>}<\/p>\n<p><strong>\/\/ \u0417\u0430\u0434\u0430\u043d\u0438\u0435 \u0438 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0430 \u043b\u0430\u043c\u043f\u044b<\/strong><\/p>\n<p><strong>void FSet(void)<\/strong>{<\/p>\n<p>\u00a0 int nLamp, nIzm; unsigned int TokIzmKod;<\/p>\n<p>\u00a0 nLamp = MenuEnter.Mi-&gt;ni;\u00a0 \/\/ \u043d\u043e\u043c\u0435\u0440 \u043b\u0430\u043c\u043f\u044b \u0438\u0437 \u043c\u0435\u043d\u044e MenuEnter<\/p>\n<p>\u00a0 nIzm = MenuSet.Mi-&gt;ni;\u00a0 \/\/ \u043d\u043e\u043c\u0435\u0440 \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f \u0438\u0437 \u043c\u0435\u043d\u044e MenuSet<\/p>\n<p>\u00a0 <strong>\/\/ \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0442\u043e\u043a\u0430, \u0426\u0410\u041f<\/strong><\/p>\n<p>\u00a0 <strong>START_PROCESS<\/strong>(TokOnMetr);\u00a0 \/\/ \u0437\u0430\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 TokOnMetr, \u043f\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u043a\u0430 \u043b\u0430\u043c\u043f\u044b<\/p>\n<p>\u00a0 while(!<strong>END_PROCESS<\/strong>(TokOnMetr));\u00a0 \/\/ \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f TokOnMetr<\/p>\n<p>\u00a0 <strong>\/\/ \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u0442\u043e\u043a\u0430, \u0410\u0426\u041f<\/strong><\/p>\n<p>\u00a0 TokIzmKod = ConvADC(AdrADC[nLamp], N_IZM_ADC);\u00a0 \/\/ \u0443\u0441\u0440\u0435\u0434\u043d\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0442\u043e\u043a\u0430<\/p>\n<p>\u00a0 TokX[nIzm] = TokIzmKod*ADCv_MAX\/ADCc_MAX;\u00a0 \/\/ \u043f\u0435\u0440\u0435\u0441\u0447\u0435\u0442 \u0432 \u0430\u043c\u043f\u0435\u0440\u044b<\/p>\n<p>\u00a0 <strong>\/\/ \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u043c, \u0432\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u044b<\/strong><\/p>\n<p>\u00a0 sprintf(StSet[nIzm], &#171;&gt;%.0fA %.2f %.2f \u0417\u0430\u0434\u0430\u0442\u044c&#187;, TokXt[nIzm], TokX[nIzm], 0);<\/p>\n<p>\u00a0 getfloatN(&amp;TokY[nIzm], StSet[nIzm], nIzm, 9, 4);\u00a0 \/\/ \u0432\u0432\u043e\u0434 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u043c<\/p>\n<p>\u00a0 <strong>\/\/ \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e MenuSet<\/strong><\/p>\n<p>\u00a0 sprintf(StSet[nIzm], &#171;%.0fA %.2f %.2f \u0417\u0430\u0434\u0430\u0442\u044c&#187;, TokXt[nIzm], TokX[nIzm], TokY[nIzm]);<\/p>\n<p>}<\/p>\n<p><em>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u043e<\/em> \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u0445 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0432 \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/982814\/\" rel=\"noopener noreferrer nofollow\">\u00ab\u0418\u043d\u0442\u0435\u0440\u043f\u0440\u0435\u0442\u0430\u0446\u0438\u044f \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432 \u0441\u0440\u0435\u0434\u0435 \u044f\u0437\u044b\u043a\u0430 \u00ab\u0421\u00bb \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 ADuC \u0438 \u0435\u043c\u0443 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445\u00bb<\/a>.<\/p>\n<p><strong>\/\/ \u0420\u0430\u0441\u0441\u0447\u0435\u0442 \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0445 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u043e\u0432 (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442)<\/strong><\/p>\n<p><strong>void FRass(void)<\/strong>{<\/p>\n<p>\/\/ \u0440\u0430\u0441\u0441\u0447\u0435\u0442, \u0437\u0430\u0442\u0435\u043c:<\/p>\n<p><strong>\u00a0 <\/strong>MenuSaveIni();\u00a0 \/\/\u00a0 \u0418\u043d\u0438\u0446\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e MenuSave<\/p>\n<p>\u00a0 <strong>MenuTek <\/strong>= &amp;MenuSave; \/\/ \u043c\u0435\u043d\u044e MenuSave \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0442\u0435\u043a\u0443\u0449\u0438\u043c<\/p>\n<p>}<\/p>\n<p><strong>\/\/\u00a0 \u0418\u043d\u0438\u0446\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e \u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c<\/strong><\/p>\n<p><strong>void MenuSaveIni(void)<\/strong>{<\/p>\n<p>\u00a0 int nLamp;<\/p>\n<p>\u00a0 nLamp = MenuEnter.Mi-&gt;ni;\u00a0 \/\/ \u0438\u0437 \u043c\u0435\u043d\u044e MenuEnter \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043b\u0430\u043c\u043f\u044b<\/p>\n<p>\u00a0 <strong>MENU_INI_NI<\/strong>(MiSave,3);\u00a0 \/\/ \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c\u0441\u044f \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 &#171;\u0417\u0410\u041f\u0418\u0421\u0410\u0422\u042c&#187; <\/p>\n<p>\u00a0 \/\/ \u041f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0426\u0410\u041f \u0438 \u0410\u0426\u041f<\/p>\n<p>\u00a0 sprintf(Save1, &#171;\u0426\u0410\u041f: A=%.2f B=%.2f&#187;, KA_DAC[nLamp], KB_DAC[nLamp]); <\/p>\n<p>\u00a0 sprintf(Save2, &#171;\u0410\u0426\u041f: A=%.2f B=%.2f&#187;, KA_ADC[nLamp], KB_ADC[nLamp]);<\/p>\n<p>\u00a0 strcpy(Save3,&#187; &#171;);<\/p>\n<p>\u00a0 strcpy(Save4,&#187;\u0417\u0410\u041f\u0418\u0421\u0410\u0422\u042c&#187;);<\/p>\n<p>}<\/p>\n<h2>\u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430. \u041f\u0440\u0438\u043c\u0435\u0440 \u21163<\/h2>\n<p>\u0417\u0434\u0435\u0441\u044c \u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u0437 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u00ab\u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u00bb.<\/p>\n<p><strong>\/\/ \u0412\u044b\u0431\u043e\u0440 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430<\/strong><\/p>\n<p>\/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: ym, xm \u2013 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435; st \u2013 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0440\u043e\u043a; sti \u2013 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430; stn \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u043e\u043c\u0435\u0440 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p><strong>unsigned char getlist(unsigned char ym, unsigned char xm, char **st, unsigned char sti, unsigned char stn)<\/strong>{<\/p>\n<p>\u00a0 unsigned char ch, stii;<\/p>\n<p>\u00a0 ClrIND(); stii = sti;\u00a0 \/\/ \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<p>\u00a0 PutsIND(st[stii], ym, xm);<\/p>\n<p>\u00a0 while(1){<\/p>\n<p>\u00a0\u00a0\u00a0 ch=mgetcw();<\/p>\n<p>\u00a0\u00a0\u00a0 if(ch ==<strong> KEY_PREV<\/strong>){\u00a0 \/\/ \u0432\u0432\u0435\u0440\u0445 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 if(stii &gt; 0)&#8212;stii;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_NEXT<\/strong>){\u00a0 \/\/ \u0432\u043d\u0438\u0437 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 if(stii &lt; stn-1)++stii;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_ENTER<\/strong>)return stii;\u00a0 \/\/ \u0432\u044b\u0431\u043e\u0440<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_ESC<\/strong>)return sti;\u00a0 \/\/ \u043e\u0442\u043a\u0430\u0437<\/p>\n<p>\u00a0\u00a0\u00a0 PutsIND(st[stii], ym, xm);\u00a0 \/\/ \u0432\u044b\u0432\u043e\u0434 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438<\/p>\n<p>\u00a0 }<\/p>\n<p>}<\/p>\n<p><strong>code char chk[11]=&#187;0123456789<\/strong>&#171;;\u00a0 \/\/ \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/p>\n<p><strong>\/\/ \u0412\u0432\u043e\u0434 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/strong><\/p>\n<p>\/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: ym, xm \u2013 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435; chs \u2013 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432; lm \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u00a0 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/p>\n<p><strong>unsigned char getchs(unsigned char ym, unsigned char xm, char *chs, unsigned char lm)<\/strong>{<\/p>\n<p>\u00a0 unsigned char ch, xi, xb, xe;<\/p>\n<p>\u00a0 xi = xb = xm;\u00a0 \/\/ \u043f\u0435\u0440\u0432\u044b\u0439 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b<\/p>\n<p>\u00a0 xe = xb+lm-1;\u00a0 \/\/ \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b<\/p>\n<p>\u00a0 MoveCur(ym, xi);<\/p>\n<p>\u00a0 while(1){<\/p>\n<p>\u00a0\u00a0\u00a0 ch=mgetcw();<\/p>\n<p>\u00a0\u00a0\u00a0 if(ch &gt;= k0 &amp;&amp; ch &lt;= k9){\u00a0 \/\/ \u0446\u0438\u0444\u0440\u0430<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 chs[xi] = chk[ch];<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 PutcIND(chk[ch],ym,xi);<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 if(xi &lt; xe)++xi;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch == kS){ \u00a0\/\/ \u043f\u0440\u043e\u0431\u0435\u043b<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 chs[xi] = &#8216; &#8216;;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PutcIND(&#8216; &#8216;,ym,xi);<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Xi = (xi &lt; 19)?xi+1:xi;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch == kZ){\u00a0 \/\/ \u0442\u043e\u0447\u043a\u0430<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 chs[xi] = &#8216;.&#8217;;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 PutcIND(&#8216;.&#8217;,ym,xi);<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 Xi = (xi &lt; 19)?xi+1:xi;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_PREV<\/strong>){\u00a0 \/\/ \u0432\u043b\u0435\u0432\u043e \u043a\u0443\u0440\u0441\u043e\u0440<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 if(xi &gt; xb)&#8212;xi;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_NEXT<\/strong>){\u00a0 \/\/ \u0432\u043f\u0440\u0430\u0432\u043e \u043a\u0443\u0440\u0441\u043e\u0440<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 if(xi &lt; xe)++xi;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_ENTER<\/strong>){\u00a0 \/\/ \u0432\u0432\u043e\u0434<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 chs[xe+1] = &#8216;\\0&#8217;;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0 return RET_OK;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 else if(ch ==<strong> KEY_ESC<\/strong>){\u00a0 \/\/ \u043e\u0442\u043a\u0430\u0437<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 chs[xe+1] = &#8216;\\0&#8217;;<\/p>\n<p>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return RET_ERR;<\/p>\n<p>\u00a0\u00a0\u00a0 }<\/p>\n<p>\u00a0\u00a0\u00a0 MoveCur(ym, xi)<\/p>\n<p>\u00a0 }<\/p>\n<p>}<\/p>\n<p><strong>\/\/ \u0412\u0432\u043e\u0434 \u0446\u0435\u043b\u043e\u0433\u043e<\/strong><\/p>\n<p>\/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: ym, xm \u2013 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, st \u2013 \u0431\u0443\u0444\u0435\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 21; lm \u2013 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430.<\/p>\n<p><strong>unsigned char getint(unsigned char ym, unsigned char xm, int <em>mem, char <\/em>st, unsigned char lm)<\/strong>{<\/p>\n<p>\u00a0 KURSOR_ON;<\/p>\n<p>\u00a0 PutsIND(st, ym, 0);\u00a0 \/\/ \u0432\u044b\u0432\u043e\u0434 st \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/p>\n<p>\u00a0 if (getchs(ym, xm, st, lm) == RET_OK){\u00a0 \/\/ <strong>KEY_ENTER<\/strong><\/p>\n<p>\u00a0\u00a0\u00a0 sscanf(&amp;st[xm], &#171;%d&#187;, mem);<\/p>\n<p>\u00a0\u00a0\u00a0 KURSOR_OFF;<\/p>\n<p>\u00a0\u00a0\u00a0 return RET_OK;<\/p>\n<p>\u00a0 }<\/p>\n<p>\u00a0 KURSOR_OFF;<\/p>\n<p>\u00a0 return RET_ERR;\u00a0 \/\/ <strong>KEY_ESC<\/strong><\/p>\n<p>}<\/p>\n<p><strong>\/\/ \u0412\u0432\u043e\u0434 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u0441 \u0442\u043e\u0447\u043a\u043e\u0439 <\/strong><\/p>\n<p>\/\/ \u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: ym, xm \u2013 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0438 \u0432 \u0431\u0443\u0444\u0435\u0440\u0435; \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, st \u2013 \u0431\u0443\u0444\u0435\u0440 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 21; lm \u2013 \u0440\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u043b\u044f \u0432\u0432\u043e\u0434\u0430.<\/p>\n<p><strong>unsigned char getfloatN(unsigned char ym, unsigned char xm, float <em>mem, char <\/em>st, unsigned char lm)<\/strong>{<\/p>\n<p>\u00a0 KURSOR_ON;<\/p>\n<p>\u00a0 PutsIND(st, ym, 0);\u00a0 \/\/ \u0432\u044b\u0432\u043e\u0434 st \u043d\u0430 \u044d\u043a\u0440\u0430\u043d<\/p>\n<p>\u00a0 strcpy(chs, st);<\/p>\n<p>\u00a0 if (getchs(ym, xm, lm)==RET_OK){\u00a0 \/\/ <strong>KEY_ENTER<\/strong><\/p>\n<p>\u00a0\u00a0\u00a0 sscanf(&amp;chs[xm], &#171;%f&#187;, mem);<\/p>\n<p>\u00a0\u00a0\u00a0 KURSOR_OFF;<\/p>\n<p>\u00a0\u00a0\u00a0 return RET_OK;<\/p>\n<p>\u00a0 }<\/p>\n<p>\u00a0 KURSOR_OFF;<\/p>\n<p>\u00a0 return RET_ERR;\u00a0 \/\/ <strong>KEY_ESC<\/strong><\/p>\n<p>}<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1063030\/\">https:\/\/habr.com\/ru\/articles\/1063030\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0410\u043b\u0438\u0441\u044b AI\u041f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0441\u0442\u0435\u0441\u043d\u0451\u043d\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u044f\u0445 \u2014 \u044d\u0442\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0441\u043e\u0431\u044b\u0439 \u0432\u044b\u0437\u043e\u0432. \u042f \u0431\u044b \u0441\u043a\u0430\u0437\u0430\u043b\u0430 \u0442\u0430\u043a: \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u00ab\u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0435\u0441\u0442\u0430\u00bb, \u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043a\u0430\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435, \u043d\u043e \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u0436\u0451\u0441\u0442\u043a\u0438\u043c\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f\u043c\u0438. \u0412 \u043c\u043e\u0435\u0439 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0438\u0431\u043e\u0440\u043e\u0432, \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0442\u043e\u043a\u0430,\u00a0 \u0438\u0441\u043f\u044b\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u043a \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0445, \u043d\u0435 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c. \u041c\u0435\u043d\u044e \u043a\u0430\u043a \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a \u0438 \u043f\u0443\u0442\u0435\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0431\u044b\u043b\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e. \u0425\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u0432\u043e\u0435\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.\u0412\u043e \u0432\u0441\u0435\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0430\u0445 \u0431\u044b\u043b \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0434\u0436\u0435\u043d\u0442\u043b\u044c\u043c\u0435\u043d\u0441\u043a\u0438\u0439 \u043d\u0430\u0431\u043e\u0440: \u0434\u0438\u0441\u043f\u043b\u0435\u0439, 4 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u043e 20 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430, 16 \u043a\u043b\u0430\u0432\u0438\u0448. \u0421\u0445\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u043b\u043e \u0442\u0430\u043a:\u0434\u0438\u0441\u043f\u043b\u0435\u0439 \u2013 4\u044520; \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430 &#8212; 16 \u043a\u043b\u0430\u0432\u0438\u0448\u041a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u043e\u0439.unsigned char mgetc(void) {\u2026} \u00a0\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0424\u0443\u043d\u0446\u0446\u0438\u044f mgetc() \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0438\u043b\u0438 0xFF, \u0435\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e. \u0415\u0451 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0441\u0445\u0435\u043c\u043e\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u043f\u0440\u0438\u0431\u043e\u0440\u0443.unsigned char mgetcnw(void) { \u00a0\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0431\u0435\u0437 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u00a0 unsigned char ch;\u00a0 if ((ch = mgetc())== 0xFF)\u00a0 \/\/ \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043d\u0430\u0436\u0430\u0442\u043e\u00a0\u00a0\u00a0 return ch;\u00a0 while (mgetc() != 0xFF);\u00a0 \/\/ \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043d\u0430\u0436\u0430\u0442\u0430, \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f\u00a0 return ch;}\u0424\u0443\u043d\u043a\u0446\u0438\u044f mgetcnw() \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 mgetc(), \u043d\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043b\u0438\u0431\u043e \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438, \u043b\u0438\u0431\u043e 0xFF. \u041d\u043e \u0435\u0441\u0442\u044c \u043e\u0434\u043d\u0430 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0435\u0441\u043b\u0438 \u043a\u043b\u0430\u0432\u0438\u0448\u0430 \u043d\u0430\u0436\u0430\u0442\u0430, \u043e\u043d\u0430 \u0436\u0434\u0435\u0442 \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u0443\u044e \u0440\u0435\u0430\u043a\u0446\u0438\u044e \u043d\u0430 \u043e\u0434\u043d\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435.unsigned char mgetcw(void) { \u00a0\/\/ \u0447\u0442\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \u0441 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435\u043c\u00a0 unsigned char ch;\u00a0 while ((ch = mgetcnw()) == 0xFF);\u00a0 \/\/ \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043d\u0430\u0436\u0430\u0442\u0438\u044f\u00a0 return ch;}\u0424\u0443\u043d\u043a\u0446\u0438\u044f mgetcw() \u0431\u0430\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 mgetcnw(), \u043e\u0436\u0438\u0434\u0430\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u0438\u044f, \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043a\u043e\u0434 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u043a\u043b\u0430\u0432\u0438\u0448\u0438. \u0412\u043e\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u0441\u0435 \u043e \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.\u0414\u0438\u0441\u043f\u043b\u0435\u0439\u0421 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0432\u0441\u0435 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u043c \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u044f. code struct {\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 int ns;\u00a0 \/\/ \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u00a0\u00a0\u00a0 int ls;  \/\/ \u0434\u043b\u0438\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 (\u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435)} Disply = {4,20};Disply, \u044d\u0442\u043e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u0434\u0438\u0441\u043f\u043b\u0435\u0439.\u0414\u0432\u0430 \u043c\u0430\u043a\u0440\u043e\u0441\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u043a\u0443\u0440\u0441\u043e\u0440\u0430.#define KURSOR_ON\u00a0 InitCommIND(0x0E) \u00a0\/\/ \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430#define KURSOR_OFF InitCommIND(0x0C) \u00a0\/\/ \u0432\u044b\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043a\u0443\u0440\u0441\u043e\u0440\u0430int PutcIND(char ch, unsigned char y, unsigned char x) \u0424\u0443\u043d\u043a\u0446\u0438\u044f PutcIND() \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u0438\u043c\u0432\u043e\u043b.\u00a0 int PutsIND(char *str, unsigned char y, unsigned char x) \u0424\u0443\u043d\u043a\u0446\u0438\u044f PutsIND() \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.\u00a0 void ClrIND(void)\u0424\u0443\u043d\u043a\u0446\u0438\u044f ClrIND() \u0447\u0438\u0441\u0442\u0438\u0442 \u044d\u043a\u0440\u0430\u043d.void MoveCur(unsigned char y, unsigned char x)\u0424\u0443\u043d\u043a\u0446\u0438\u044f MoveCur() \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0430\u0435\u0442 \u043a\u0443\u0440\u0441\u043e\u0440.\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b y, x\u2013 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440\u0441\u0442\u0440\u043e\u043a\u0438\u0438 \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435. \u041d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u0441\u0442\u0440\u043e\u043a \u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 0.\u041c\u0435\u043d\u044e\u0418\u0434\u0435\u044e \u043c\u0435\u043d\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a: \u044d\u0442\u043e \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0440\u043e\u043a, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0443 \u043b\u0438\u0431\u043e \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u043d\u044e, \u043b\u0438\u0431\u043e \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e. \u041d\u0438\u0436\u0435 \u044f \u043f\u0440\u0438\u0432\u043e\u0436\u0443 \u043c\u0430\u043a\u0440\u043e\u0441\u044b \u0438 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0435 \u044d\u0442\u0443 \u0438\u0434\u0435\u044e.\/\/ \u041c\u0430\u043a\u0440\u043e\u044f\u0437\u044b\u043a \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043c\u0435\u043d\u044e#define MENU_DEF code struct Menu \u00a0\/\/ \u043c\u0435\u043d\u044e#define MENU_POINT xdata struct Menu* \u00a0\/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0435\u043d\u044e #define MENU_COUNT xdata struct MenuI \u00a0\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435#define STRINGS code char \u00a0\/\/ \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 code#define STRINGSx xdata char \u00a0\/\/ \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 xdata#define MENU_PAR(M) &amp;M \u00a0\/\/ \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u043d\u0430 \u043c\u0435\u043d\u044e \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c#define MENU_SONS code struct Menu \u00a0\/\/ \u043c\u0435\u043d\u044e, \u043f\u043e\u0442\u043e\u043c\u043a\u0438#define FUNCTIONS code void \u00a0\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f#define MENU_INI(M) M.ni=M.nb=0 \u00a0\/\/ \u043c\u0435\u043d\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435, \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f#define MENU_INI_NI(M,NI) M.ni=NI;M.nb=0 \u00a0\/\/ \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f, \u0442\u0435\u043a\u0443\u0449\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 NI#define SIZE(N) (sizeof(N)\/sizeof(char *)) \u00a0\/\/ \u0440\u0430\u0437\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: code \u2013 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442, xdata \u2013 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0445. \u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 MENU_DEF \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 code, \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 MENU_COUNT \u0432 \u043f\u0430\u043c\u044f\u0442\u0438 xdata. \u00a0\u00a0\/\/ \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u043d\u044eMENU_DEF { \u00a0\/\/ \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0430\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430\u00a0\u00a0int ns; \u00a0\/\/ \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e\u00a0 char **St; \u00a0\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e\u00a0 struct Menu *Par; \u00a0\/\/ \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043c\u0435\u043d\u044e \u043f\u0440\u0435\u0434\u043a\u0430\u00a0 struct Menu **Sons; \u00a0\/\/ \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0435\u043d\u044e \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432\u00a0 void(**Fun)(void); \u00a0\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u00a0 struct MenuI *Mi; \u00a0\/\/ \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 MENU_COUNT};\u0420\u0430\u0437\u043c\u0435\u0440\u043d\u043e\u0441\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 Sons \u0438 Fun \u0440\u0430\u0432\u043d\u0430 ns \u2013 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044e. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0435 \u043c\u0435\u043d\u044e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 Fun \u0440\u0430\u0432\u0435\u043d 0 \u0438, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0435\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0441\u0441\u044b\u043b\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 Sons \u0440\u0430\u0432\u0435\u043d 0.MENU_COUNT { \u00a0\/\/ \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044e \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435\u00a0 int nb; \u00a0\/\/ \u043d\u043e\u043c\u0435\u0440 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435\u00a0 int ni; \u00a0\/\/ \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438};\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043c\u0435\u043d\u044e &#8212; \u044d\u0442\u043e \u043c\u0435\u043d\u044e, \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u043d\u0430 \u0434\u0438\u0441\u043f\u043b\u0435\u0435 \u0432 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442. MENU_POINT MenuTek; \u00a0\/\/\u00a0 C\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u043c\u0435\u043d\u044e\u041d\u0430 \u0431\u0430\u0437\u0435 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440 MENU_DEF \u0438 MENU_COUNT \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u043d\u044e\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f MenuDisp() \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u043d\u044e MenuTek.void MenuDisp(void) { \u00a0\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u043c\u0435\u043d\u044e MenuTek\u00a0 int n, ns; \u00a0\/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043c\u0435\u043d\u044e\u00a0 ns = (MenuTek-&gt;ns &lt;= Disply.ns) ? MenuTek-&gt;ns : Disply.ns;\u00a0 ClrIND();\u00a0 for (n = 0; n &lt; ns; ++n){ \u00a0\/\/ \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u044d\u043a\u0440\u0430\u043d\u0430\u00a0\u00a0\u00a0 PutsIND(&#187; &#171;, n, 0);\u00a0\u00a0\u00a0 PutsIND(MenuTek-&gt;St[MenuTek-&gt;Mi-&gt;nb + n], n, 1);\u00a0 }\u00a0 PutsIND(&#171;&gt;&#187;, (MenuTek-&gt;Mi-&gt;ni &#8212; MenuTek-&gt;Mi-&gt;nb), 0); \u00a0\/\/ &#171;&gt;&#187;-\u043c\u0430\u0440\u043a\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438}\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f MenuNext() \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043c\u0435\u043d\u044e.void MenuNext(void) { \u00a0\/\/ \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u043d\u0438\u0437\u00a0 if (MenuTek-&gt;Mi-&gt;ni &lt; MenuTek-&gt;ns-1){\u00a0\u00a0\u00a0\u00a0\u00a0 MenuTek-&gt;Mi-&gt;ni++; \u00a0\/\/ \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 if ((MenuTek-&gt;Mi-&gt;ni &#8212; MenuTek-&gt;Mi-&gt;nb) &gt;= Disply.ns)\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0MenuTek-&gt;Mi-&gt;nb++; \u00a0\/\/ \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0432\u0432\u0435\u0440\u0445\u00a0\u00a0\u00a0\u00a0\u00a0 MenuDisp();\u00a0 }}\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f MenuPrev() \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043c\u0435\u043d\u044e.void MenuPrev(void) { \u00a0\/\/ \u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0443 \u0432\u0432\u0435\u0440\u0445\u00a0 if (MenuTek-&gt;Mi-&gt;ni &gt; 0){\u00a0 \u00a0\u00a0MenuTek-&gt;Mi-&gt;ni&#8212;; \u00a0\/\/ \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443\u00a0\u00a0\u00a0 if (MenuTek-&gt;Mi-&gt;ni &lt; MenuTek-&gt;Mi-&gt;nb)\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0MenuTek-&gt;Mi-&gt;nb&#8212;; \u00a0\/\/ \u0441\u043a\u0440\u043e\u043b\u043b\u0438\u043d\u0433 \u0432\u043d\u0438\u0437\u00a0\u00a0\u00a0\u00a0\u00a0 MenuDisp();\u00a0 }}\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f MenuEnter() \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0431\u043e\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u043c\u0435\u043d\u044e.void MenuEnter(void) { \u00a0\/\/ \u0432\u044b\u0431\u043e\u0440 \u043f\u043e\u0434\u043c\u0435\u043d\u044e \u0438\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0 if(*(MenuTek-&gt;Fun[MenuTek-&gt;Mi-&gt;ni]) != 0) \u00a0\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0\u00a0\u00a0\u00a0\u00a0 (*(MenuTek-&gt;Fun[MenuTek-&gt;Mi-&gt;ni]))();\u00a0 else \u00a0\u00a0\u00a0 if(MenuTek-&gt;Sons[MenuTek-&gt;Mi-&gt;ni] != 0){ \u00a0\/\/ \u043f\u043e\u0434\u043c\u0435\u043d\u044e\u00a0 \u00a0\u00a0\u00a0\u00a0MenuTek = MenuTek-&gt;Sons[MenuTek-&gt;Mi-&gt;ni];\u00a0 \u00a0\u00a0\u00a0\u00a0MenuTek-&gt;Mi-&gt;ni=MenuTek-&gt;Mi-&gt;nb=0;\u00a0\u00a0\u00a0 }\u00a0 MenuDisp(); \u00a0\/\/ \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e}\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f MenuBack() \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0432\u044b\u0445\u043e\u0434 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u043c\u0435\u043d\u044e.void MenuBack(void) { \u00a0\/\/ \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e\u00a0 if (MenuTek-&gt;Par == 0) \u00a0\/\/ \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u00a0\u00a0\u00a0 return;\u00a0 ClrIND();\u00a0 MenuTek = MenuTek-&gt;Par; \u00a0\/\/ \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044e\u00a0 MenuDisp();}\/\/ \u0424\u0443\u043d\u043a\u0446\u0438\u044f UserFun() &#8212; \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.void UserFun(void) {\u00a0 \/\/ \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0 ClrIND();\u00a0 PutsIND(&#171;\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0430\u044f&#187;, 0,0);\u00a0 PutsIND(&#171;\u0444\u0443\u043d\u043a\u0446\u0438\u044f &#8230;&#187;, 1,0);\u00a0 while(mgetcw() == 0xFF);}\u041a\u0430\u043a \u043e\u0442\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u043a\u043b\u0430\u0432\u0438\u0448 \u0438 \u0440\u0430\u0431\u043e\u0442\u0443 \u0441 \u043c\u0435\u043d\u044e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u043d\u0438\u0436\u0435.\/\/ \u041a\u043b\u0430\u0432\u0438\u0448\u0438 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u043d\u044e#define KEY_PREV kA \u00a0\/\/ \u0432\u0432\u0435\u0440\u0445\/\u0432\u043b\u0435\u0432\u043e#define KEY_NEXT kB \u00a0\/\/ \u0432\u043d\u0438\u0437\/\u0432\u043f\u0440\u0430\u0432\u043e#define KEY_ENTER kD \u00a0\/\/ \u0432\u044b\u0431\u043e\u0440#define KEY_ESC kC \u00a0\/\/ \u0432\u044b\u0445\u043e\u0434void Menu(unsigned char KeyIn) { \u00a0\/\/ \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u043c\u0435\u043d\u044e \u043f\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u044e \u043a\u043b\u0430\u0432\u0438\u0448\u00a0 switch(KeyIn){\u00a0 case KEY_PREV: \u00a0\/\/ \u0432\u0432\u0435\u0440\u0445\u00a0\u00a0\u00a0 MenuPrev();\u00a0 \u00a0\u00a0break;\u00a0 case KEY_NEXT: \u00a0\/\/ \u0432\u043d\u0438\u0437\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 MenuNext();\u00a0 \u00a0\u00a0break;\u00a0 case KEY_ENTER: \u00a0\/\/ \u0432\u044b\u0431\u043e\u0440\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 MenuEnter();\u00a0 \u00a0\u00a0break;\u00a0 case KEY_ESC: \u00a0\/\/ \u0432\u044b\u0445\u043e\u0434\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0 MenuBack();\u00a0 \u00a0\u00a0break;\u00a0 }}\u0412\u043e\u0442, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438 \u0432\u0441\u0435. \u041f\u0440\u0438\u043c\u0435\u0440\u044b \u043d\u0438\u0436\u0435.\u041c\u0435\u043d\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u21161  (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b)  \/\/ \u00a0\u00a0 \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u043c\u0435\u043d\u044e\u041a\u043e\u0440\u043d\u0435\u0432\u043e\u0435 \u043c\u0435\u043d\u044e MenuMain \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0442\u0440\u0435\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432. \u0412\u044b\u0431\u043e\u0440 \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442 \u043a \u0432\u044b\u0437\u043e\u0432\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 FunON() \u0438 FunOFF() \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e. \u041f\u0440\u0438 \u0432\u044b\u0431\u043e\u0440\u0435 \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e, \u0442\u0435\u043a\u0443\u0449\u0438\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043c\u0435\u043d\u044e MenuTok.&gt; \u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f\u00a0 \u00a0\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f\u00a0 \u00a0\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043aSTRINGS *StMain[] = {&#171;\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f&#187;, &#171;\u0412\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043b\u0430\u043c\u043f&#187;, &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187;};FUNCTIONS (*FunMain[])() = {FunON, FunOFF, MenuTokIni};MENU_SONS *SonsMain[] = {0,0,0};MENU_COUNT MiMain = {0,0};MENU_DEF MenuMain = {SIZE(StMain), StMain, MENU_PAR(0), SonsMain, FunMain, &amp;MiMain};\/\/ \u00a0\u00a0 \u041c\u0435\u043d\u044e &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187;\u0412 \u043c\u0435\u043d\u044e MenuTok \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 MenuTokIni(). \u041c\u0430\u0441\u0441\u0438\u0432\u044b L1[],L2[],L3[] \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 xdata. &gt; \u041b\u0430\u043c\u043f\u0430 \u21161\u00a0\u00a0 4.00 A\u00a0\u00a0\u00a0 \u00a0 \u00a0\u041b\u0430\u043c\u043f\u0430 \u21162\u00a0\u00a0 5.00 A\u00a0\u00a0\u00a0 \u00a0 \u00a0\u041b\u0430\u043c\u043f\u0430 \u21163\u00a0\u00a0 6.00 A STRINGSx L1[21], L2[21], L3[21];STRINGS *StTok[] =\u00a0 {L1, L2, L3};FUNCTIONS (*FunTok[])() = {LampTok, LampTok, LampTok};MENU_SONS *SonsTok[] = {0,0,0};MENU_COUNT MiTok = {0,0}; MENU_DEF MenuTok = {SIZE(StTok), StTok, MENU_PAR(MenuNast), SonsTok, FunTok, &amp;MiTok};\/\/\u00a0 \u0418\u043d\u0438\u0446\u0438\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043c\u0435\u043d\u044e &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187;xdata float Tok[N_LAMP]; \u00a0\/\/ \u043c\u0430\u0441\u0441\u0438\u0432 \u0442\u043e\u043a\u043e\u0432 \u043b\u0430\u043c\u043fvoid MenuTokIni(void){\u00a0 int i;\u00a0 for(i=0; i&lt;N_LAMP; ++i) \u00a0 \u00a0\u00a0sprintf(StTok[i], &#187; \u041b\u0430\u043c\u043f\u0430 \u2116%d: %.2fA&#187;, i+1, Tok[i]);\u00a0 MenuTek = &amp;MenuTok;\u00a0 \/\/ \u0437\u0430\u0442\u0435\u043c MenuDisp() \u043f\u0435\u0440\u0435\u0440\u0438\u0441\u0443\u0435\u0442 \u044d\u043a\u0440\u0430\u043d\u00a0\u00a0 }\/\/\u00a0 \u0424\u0443\u043d\u043a\u0446\u0438\u044f &#171;\u0417\u0430\u0434\u0430\u0442\u044c \u0442\u043e\u043a&#187; void LampTok(void){\u00a0 int nLamp, yn;\u00a0 nLamp = MenuTok.Mi-&gt;ni;\u00a0 \/\/ \u043d\u043e\u043c\u0435\u0440 \u043b\u0430\u043c\u043f\u044b\u00a0 yn = MenuTok.Mi-&gt;ni &#8212; MenuTok.Mi-&gt;nb; \u00a0\/\/ \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u00a0 getfloatN(yn, 12, &amp;Tok[nLamp], StTok[nLamp], 4);}\u041c\u0435\u043d\u044e. \u041f\u0440\u0438\u043c\u0435\u0440 \u21162 (\u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442\u044b)\u042d\u0442\u0438\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u043c \u044f \u043f\u043e\u043a\u0430\u0436\u0443 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u0435\u043c\u044b \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043c\u0435\u043d\u044e. \u0418\u0442\u0430\u043a, \u043c\u0435\u043d\u044e \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0430\u043c\u043f, \u043d\u0430\u0437\u043e\u0432\u0435\u043c \u0435\u0433\u043e MenuEnter.&gt;\u041b\u0430\u043c\u043f\u0430 \u21161\u00a0 \u00a0\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u00a0   \u00a0 \u041b\u0430\u043c\u043f\u0430 \u21162\u00a0 \u00a0\u0412\u044b\u0431\u0440\u0430\u0442\u044c   \u00a0 \u041b\u0430\u043c\u043f\u0430 \u21163 \u00a0\u00a0\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u041a\u043e\u0433\u0434\u0430 \u043b\u0430\u043c\u043f\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430, \u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e MenuSet. \u0412 MenuSet \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u0438 \u0438\u0437\u043c\u0435\u0440\u044f\u044e\u0442\u0441\u044f \u0442\u043e\u043a\u0438. \u041a\u043e\u0433\u0434\u0430 \u0432\u044b\u0431\u0440\u0430\u043d\u0430 \u0441\u0442\u0440\u043e\u043a\u0430 \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c, \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u043e\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u044b \u0434\u043b\u044f \u0426\u0410\u041f \u0438 \u0410\u0426\u041f, \u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043c\u0435\u043d\u044e MenuSave.&gt;4A 4.00 \u00a04.00 \u00a0\u00a0\u0417\u0430\u0434\u0430\u0442\u044c\u00a0 5A 5.00   \u00a05.00 \u00a0\u00a0\u0417\u0430\u0434\u0430\u0442\u044c\u00a0 6A 6.00 \u00a06.00\u00a0 \u00a0\u0417\u0430\u0434\u0430\u0442\u044c\u00a0\u00a0\u00a0 \u0420\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c   &lt;D&gt;\u041c\u0435\u043d\u044e MenuSave \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0440\u0430\u0441\u0441\u0447\u0435\u0442\u0430 \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f KEY_ENTER \u0438\u043b\u0438 \u0432\u044b\u0439\u0442\u0438 \u0431\u0435\u0437 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f KEY_ESC.\u0426\u0410\u041f:\u00a0 \u00a0\u00a0\u0410=1.00\u00a0\u00a0   \u0412=0.00\u0410\u0426\u041f:\u00a0\u00a0\u00a0   \u0410=1.00\u00a0\u00a0 \u0412=0.00&gt;\u0417\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00a0 &lt;D&gt;\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0426\u0410\u041f, \u0410\u0426\u041f &#8212; \u0446\u0438\u0444\u0440\u043e-\u0430\u043d\u0430\u043b\u043e\u0433\u043e\u0432\u044b\u0439 \u0438 \u0430\u043d\u0430\u043b\u043e\u0433\u043e-\u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438. \u041e \u043c\u0435\u0442\u043e\u0434\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439, \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0445 \u0432 \u0426\u0410\u041f \u0438\u043b\u0438 \u0447\u0438\u0442\u0430\u0435\u043c\u044b\u0445 \u0438\u0437 \u0410\u0426\u041f, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0435\u0441\u0442\u044c \u0432 \u043c\u043e\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00ab\u041c\u0435\u0442\u043e\u0434 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0413\u0430\u0443\u0441\u0441\u0430 \u0441 \u0432\u0435\u0441\u043e\u0432\u044b\u043c\u0438 \u043a\u043e\u044d\u0444\u0444\u0438\u0446\u0438\u0435\u043d\u0442\u0430\u043c\u0438 \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u0439\u00bb\/\/ \u041c\u0435\u043d\u044e \u0412\u042b\u0411\u0420\u0410\u0422\u042cSTRINGS *StEnter[] = {\u201d\u041b\u0430\u043c\u043f\u0430 \u21161\u00a0\u00a0 \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u201d, \u201d\u041b\u0430\u043c\u043f\u0430 \u21162\u00a0\u00a0 \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u201d, \u201d\u041b\u0430\u043c\u043f\u0430 \u21163\u00a0\u00a0 \u0412\u044b\u0431\u0440\u0430\u0442\u044c\u201d}; \/\/ \u0441\u043f\u0438\u0441\u043e\u043a \u043b\u0430\u043c\u043fFUNCTIONS (*FunEnter[])() = {MenuSetIni, MenuSetIni, MenuSetIni}; MENU_SONS *SonsEnter[] = {0,0,0};MENU_COUNT MiEnter = {0,0}; MENU_DEF MenuEnter =&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-488563","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=488563"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/488563\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=488563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=488563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=488563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}