рдмрдлрд╝рд░реНрд╕ (рдЕрдВрдЧреВрдареА) рдХреЗ рд╕рд╡рд╛рд▓ рдкрд░

"рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рд╡рд┐рдХрд╛рд╕ рд▓рд╛рдЧрдд рдЕрддреНрдпрдзрд┐рдХ рд▓рдЧрддреА рд╣реИ, рддреЛ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдЧрд▓рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЖрдкрдХреЛ рдХрд┐рддрдирд╛ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреА рд╣реИ"


- рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рд░рдЦ рд╕рдХрддрд╛

рдПрдХ рдмрд╛рд░, "рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рджреВрд░ рдХреА рдЖрдХрд╛рд╢рдЧрдВрдЧрд╛ рдореЗрдВ", рдореИрдВрдиреЗ рдЪрд╛рд░реНрд▓реНрд╕ рд╡реЗрджрд░рд▓реА рдХреА рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХ рдИрдЯреНрдпреВрдбреНрд╕ рдЗрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЛ рдЦрд░реАрджрд╛, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдЪрдп рдореЗрдВ рд▓реЗрдЦрдХ рдиреЗ рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдмрддрд╛рдИред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕ рдкреБрд╕реНрддрдХ рдХреЛ рдвреВрдВрдврддреЗ рд╣реИрдВ, рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдкрдврд╝реЗрдВ (рдФрд░ рдЙрд╕ рдкрд░ рд░реЛрдХ рдХреЗ рдмрд┐рдирд╛, рдмрд╛рдХреА рдкрдврд╝реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рджреА рдЧрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВ), рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрднреНрдпрд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрд╛ рдирд╣реАрдВ рд╕рдХрддрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдЖрдк рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреБрд╕реНрддрдХ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬреНрдЮрд╛рди рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреМрд╢рд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХрдИ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдк рдореЗрд░реА рд╕рд┐рдлрд╛рд░рд┐рд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рднреА рдХреЛ рдЖрдкрдХреЛ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рдкрд╣рд▓реЗ рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдбрд╛рдВрдЯрд╛ рдерд╛ рдореИрдВрдиреЗ рдПрдХ рдШрд░реЗрд▓реВ рдЖрд░рдЯреАрдУрдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдкрдиреА рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХреА рдереА, рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рд╕реБрдкреНрд░рд╕рд┐рджреНрдз (рдФрд░ рдХреБрдЫ рдЦрд╛рд╕ рдкрд╣рд▓реБрдУрдВ рдореЗрдВ, рдмрд┐рд▓реНрдХреБрд▓ рдЕрджреНрднреБрдд) mcucpp рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рд░рд┐рдВрдЧ рдмрдлрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЖрджрд░реНрд╢ рдирд╣реАрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдЕрдкрдиреА рдмрд╛рдд рд╕рдордЭрд╛рдиреЗ рдФрд░ рдЖрджрд░реНрд╢ (рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрд╕рдВрднрд╡ рд╣реЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ) рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдиреЛрдЯ - рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╛рда "рдЕрдзреВрд░рд╛" рдореЗрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рдРрд╕рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдорд▓рд╛ рд╕рд╛рдордиреЗ рдЖрдпрд╛ред

рд╣рдо рдПрдХ рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдФрд░ рдмрдлрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдореЗрдВ рд╣реИрдВ (рд╣рд╛рдБ, рд╣рдо рдЕрднреА рднреА рддреИрдпрд╛рд░реА рд╕рдВрдЪрд╛рд▓рди рдЬрд╛рд░реА рд░рдЦ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ)ред рдмрдлрд░реНрд╕ тАЛтАЛрдХреЗ рдЖрдпреЛрдЬрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╣рд╛рдВ рд╕реЗ рд╣реИ рдФрд░ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЬрд╛рдирд╡рд░ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдзрд┐ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╕реАрдорд┐рдд рдЧрддрд┐ рд╣реИ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рд╢реБрд░реВ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдФрд░ рд╣рд┐рд╕реНрд╕рд╛ рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд, рдФрд░ рдХрднреА-рдХрднреА рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рд╕рдордп рдмреАрддрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЕрдЧрд▓рд╛ рдкреНрд░рд╕рд╛рд░рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрддрд┐ рд╡рд╛рд▓реЗ рд▓реЗрдЦрдХ-рдкрд╛рдардХ рдЬреЛрдбрд╝реА рдХрд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдорд╛рдорд▓рд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ "рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рд╕реЗрд╡рд╛ рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдХрддрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ рдЕрдирдВрдд рддрдХ рдЬрд╛рддрд╛ рд╣реИ," рдФрд░ рдЕрдирдВрдд рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╕рдВрднрд╡ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛, рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдлрдЯрдиреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдФрд╕рдд рдкрд░ рд╕реЗрд╡рд╛ рдкреНрд░рд╡рд╛рд╣ рд▓реЛрдб рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд╖рдорддрд╛ рдХреА рдПрдХ рдмрдлрд░ рдореЗрдореЛрд░реА рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рд╣рдо "рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд╖рдорддрд╛" рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рд╣рдо рдмрд╛рдж рдореЗрдВ рд╕реАрдЦреЗрдВрдЧреЗ рдХрд┐ рдЗрд╕рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЬрдм рддрдХ рдпрд╣ рддрдереНрдп рдХрд┐ рдпрд╣ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдмрдлрд░ рдореЗрдореЛрд░реА рдПрдХ рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдкреНрд░реЗрд╖рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрд╡рд░реБрджреНрдз рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдпрд╣ рдХреБрдЫ рд╣рдж рддрдХ рдмрджрддрд░ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдкрд╣рд▓реЗ рдХрд╣реАрдВ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛, рдпрджрд┐ рдЖрдк рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдЙрдЪрд┐рдд рдЙрдкрд╛рдп рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЬрд╛рджреВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ xon / xoff рдЦрд░реЛрдВрдЪ рд╕реЗ рдкреИрджрд╛ рдирд╣реАрдВ рд╣реБрдЖ рдерд╛), рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдФрд░, рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ рд╕рдВрдЪрд░рдг рджрд░ рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИред рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ (рдХрдо рд╕реЗ рдХрдо рдПрдХ рддрддреНрд╡) рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдмрдлрд╝рд░реНрд╕ рдХрд╛ рдПрдХ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдлрд░ рдЖрдХрд╛рд░ рдКрдкрд░ рд╕реЗ рд╕рдЦреНрддреА рд╕реЗ рд╕реАрдорд┐рдд рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрднреА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдлрд░ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдРрд╕реЗ рдмрдлрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП FIFO рд╡рд┐рдзрд┐ (рдЕрд░реНрдерд╛рдд, рдХрддрд╛рд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛрдЧрд╛ рдФрд░ рдХрддрд╛рд░, рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рд╛рде рд░рд┐рдВрдЧ рдмрдлрд░ рдкрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдЬрдм рдореИрдВ "рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда" рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рдВрджрд░реНрдн рдХрддрд╛рд░) рдЕрд╕рдВрднрд╡ рд╣реИ, рдпрд╛ рдШрд╛рддрдХ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдШрд╛рддрдХ рджреЛрд╖ рд╣реИрдВред рдЗрд╕ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЕрд░реНрде рдХреЗрд╡рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдФрд░ рдХрд╛рдлреА рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рд░реНрд╡рд┐рд╡рд╛рдж рдлрд╛рдпрджреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ DarZaNeByред

рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдПрдордХреЗ рдореЙрдбрд▓ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп-рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛рд▓реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдЧрд╛ (рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рдзреАрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдкрд╛рд╕ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд░рд┐рдВрдЧ рдмрдлрд╝рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рд╡рд┐рд╖рдп рд╕реЗ рдЙрдирдХрд╛ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИ), рд╣рдореЗрдВ рд░реИрдЦрд┐рдХ рдореЗрдореЛрд░реА рдореЗрдВ рд░рд┐рдВрдЧ рдмрдлрд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ (рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░) рд╡реЗрдХреНрдЯрд░, рдпрд╣, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдкрддрд╛ рдпреЛрдЧреНрдп рдореЗрдореЛрд░реА рдореЗрдВ рдПрдХрдорд╛рддреНрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд╕реНрддреБ рд╣реИ), рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рдмрдлрд░ рдЗрдВрдбреЗрдХреНрд╕ (рдпрд╛ рд╢рд╛рдпрдж рджреЛ рдЗрдВрдбреЗрдХреНрд╕, рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рджреЛ рдмрд┐рдВрджреБрдУрдВ (рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ) рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдкрддреНрд░ рдмрдлрд░ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдкрд░ рдПрдХ рдХрддрд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ рдФрд░ рдореИрдВрдиреЗ рдЕрдкрдиреА рдЖрдБрдЦреЛрдВ рд╕реЗ "X1 = x2" рдХреА рд╢реИрд▓реА рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦрд╛ред x2 = x3; ... x8 = рдирдпрд╛ рдкреНрд░рддреАрдХ ", рдпрджрд┐ рдЖрдк рдХрд░реЗрдВрдЧреЗ, рддреЛ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рджреЗрд╢реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рджрд┐рдП рдЧрдП рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╣реБрдд рд╕реАрдорд┐рдд рд╕реНрдерд┐рддрд┐ рдЗрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рдмрдирд╛рддреА рд╣реИред

рд╣рдо рд╕реВрдЪрдХ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╢рдмреНрдж рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдПрдХ рд╕рд╣реА рдХреЛрдб рдФрд░ рдПрдХ рдЧрд▓рдд рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕рд╣реА рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рдпрд╣ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИ, рдпрд╛ рдпрджрд┐ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдХрдо рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рддреЗрдЬреА рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдпрд╛ рдмрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд▓реНрджреА рдЪрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реБрджреНрдзрддрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреБрдЫ рд╣рдж рддрдХ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред рд╣рдо рдЕрдкрдиреЗ рдмрдлрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрджрд╛рд╣рд░рдг рдкрд░ рдЕрдкрдирд╛ рд╡рд┐рдЪрд╛рд░ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдбрд┐рдЧреНрд░реА рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рд╕рд╛рд░ рдХреА рдУрд░ рдореБрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЧреЗ рдХреА рдЪрд░реНрдЪрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдореЗрд╢рд╛ рдЧреИрд░-рд╢реВрдиреНрдп (-рдУ 2) рдУрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╕реНрддрд░ рдкрд░ рдЪрд╛рд▓реВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ рд╕реБрдзрд╛рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 1) рдЙрдкрд╕рд░реНрдЧ рд╕рдВрд╢реЛрдзрди рдмрдирд╛рдо рдкреЛрд╕реНрдЯрдлрд╝рд┐рдХреНрд╕ рдпрд╛ 2) рдЬреИрд╕реЗ рдорд╛рдореВрд▓реА рд╕реБрдзрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╣реИ, рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ рдЬреЛрдбрд╝ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ - рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХрд▓рдХ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдХрд░реЗрдВрдЧреЗред рдмреЗрд╢рдХ, рдпрд╣ рдПрдХ рд╕рдЦреНрдд рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рдЕрд╕реЗрдВрдмрд▓рд░ рдХреЗ рдХрдЯреЛрд░реЗ рдореЗрдВ рдЙрддрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рдореБрдЦреНрдпрдзрд╛рд░рд╛ рдирд╣реАрдВ рд╣реИред

рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рд╣рдореЗрдВ рд░рд┐рдВрдЧ рдмрдлрд░ рдХреЗ рдЗрдВрдбреЗрдХреНрд╕ (рдкреЙрдЗрдВрдЯрд░) рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╛рдиреА рд╣рдореЗрдВ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ, рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗ рдХреБрдЫ рдЕрдВрддрд┐рдо рддрдХ ред рддреБрд░рдВрдд рдорд╛рди рд▓реЗрдВ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдп рд╢реВрдиреНрдп рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╣рдореЗрдВ рддреБрд░рдВрдд рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рд╣реА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рд╢реИрдХреНрд╖рд┐рдХ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИ рдФрд░ рд╣рдо рдЬрд▓реНрджреА рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЕрдВрддрд┐рдо рдПрдХ рдореИрдХреНрд╕ рд╣реИред

рдЪрд░ рдХрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

volatile int Counter = 0; Counter = (++Counter) % (Max+1); 

рдФрд░ рдпрд╣ рдареАрдХ рдРрд╕рд╛ рдХреЛрдб рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдХрдИ (рдмрд╣реБрдд рдмрд╛рд░) рдорд╛рдорд▓реЛрдВ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ - рдареАрдХ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП (рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рд╕реЗ) рд╣рдорд╛рд░рд╛ рдЪрд░ рдЕрдзрд┐рдХрддрдо рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореВрд▓реНрдп рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ рдФрд░, рдЕрдЧрд░ рдЙрд╕ рдХреНрд╖рдг рдореЗрдВ рдПрдХ рд╡реНрдпрд╡рдзрд╛рди рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЗрд╕ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рддреЛ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рддрд╛ рд╣реВрдВ рдореИрдВ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдирд╣реАрдВ рдорд╛рдирддрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:

 int Counter=0; Counter = (Counter + 1) % (Max + 1); 

рд╣рдордиреЗ рдПрдХ рдЧрд▓рддреА рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдХреЛрдб (рдЗрд╕рдХреЗ рдмрд╛рдж рдореЗрд░рд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХреЛрдб "рдХреЛрдб" рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб) рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рдирд╣реАрдВ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рдмреНрдж рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдорд╛рдиреА рд╣реИ), рдФрд░ рдпрд╣ рдХрдо рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдмрд▓реНрдХрд┐, рдФрд░ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ)ред

рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдиреЛрдЯ - рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рд╣рдо рдХреЛрдб рдЕрдиреБрдХреВрд▓рди рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЧрд▓рдд рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЬрдм рдЪрд░ рдХрд╛ рдорд╛рди рдореЙрдбреНрдпреВрд▓ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдЕрдиреБрдХреНрд░рдорд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ) (рдирд┐рд░реНрджреЗрд╢ ) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЗрдорд╛рдиреАред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк godbolt.org рдкрд░ рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВред рдЖрдкрдХреЛ рд╕реНрдерд┐рд░ рдХреАрд╡рд░реНрдб рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рднреА рд╕рдВрднрд╡ рд╣реЛ рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред рдЦреИрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрдиреБрдХреВрд▓рди рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдХреЛрдб рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рддреЗрдЬ рдирд╣реАрдВ рд╣реЛрдЧрд╛ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рдмрдбрд╝рд╛ рдФрд░ рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╕рдЦреНрдд рдпреЛрдЧреЛрдВ рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ)ред рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╢рдмреНрдж рднреНрд░рд╛рдордХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рдореВрд▓реНрдп рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЬреЛ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ - рдЕрд░реНрдерд╛рддреН, рд░рд┐рдВрдЧ рдмрдлрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЖрдк рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд╣рд░ рдореНрдпреВрдЯреЗрдмрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рд╕рдВрджрд┐рдЧреНрдз рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗрд╡рд▓ рдХрд╛рдЙрдВрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдПрдХ рдЪрд░ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рддреЛ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рд╣рдо рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдб рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд▓реЗрдирджреЗрди рдпрд╛ рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдмрд┐рд▓реНрдХреБрд▓ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

рд╣рдо рдХреЛрдб рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрднреА рднреА рдЧрд▓рдд рд╣реИ - рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ - рдФрд░ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╣ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдЪрд╛рд╣рд┐рдП (рдХрд╛рд░реНрдп рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ), рд▓реЗрдХрд┐рди рдХреБрдЫ рдФрд░ (рд╢реЗрд╖ рд╡рд┐рднрд╛рдЬрди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ), рдмрд╕ рдкрд░рд┐рдгрд╛рдо рдореИрдЪ рдХрд░реЛред рдареАрдХ рд╣реИ, рд╣рдо рдРрд╕рд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ (рдореИрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╕реЛрдЪрддрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЗ рд▓реЗрдЦрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ), рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╕рдВрдпреЛрдЧ рд╕реЗ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рд╣рдо рдЪрд░ (рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ) рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдереЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╡рд┐рднрд╛рдЬрди рдСрдкрд░реЗрд╢рди рд╣реИ (рдпрджрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдХрдорд╛рдВрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ), рдФрд░ рдпрд╣ рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЪрдХреНрд░ рдореЗрдВ рдХреЛрдИ рд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИ (10 рдЪрдХреНрд░реЛрдВ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореВрд▓реНрдп) 8-рдмрд┐рдЯ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП), рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдорд╛рдирдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрджрд┐ рд╢реЙрд░реНрдЯ рдбрд┐рд╡реАрдЬрди) рд╕реЗ рдбрд┐рд╡реАрдЬрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ рджреЗрдЦреЗрдВрдЧреЗ, рддреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рджрд╕рд┐рдпреЛрдВ рдЪрдХреНрд░реЛрдВ рдХрд╛ рд╣реЛрдЧрд╛ред

рддреЛ рдХреНрдпреЛрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрднреА рднреА рдмрд╣реБрдд рдмрд╛рд░ рдорд┐рд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдпрд╣рд╛рдВ рджрд░реНрд╢рдХреЛрдВ рд╕реЗ рд╡реЗ рдореБрдЭреЗ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрджрд┐ рдЕрдзрд┐рдХрддрдо + 1 рдХрд╛ рдорд╛рди, рдЬреЛ рдХрд┐ рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ, рддреЛ рд╕рдВрдХрд▓рдХ рд╡рд┐рднрд╛рдЬрди рдСрдкрд░реЗрд╢рди рдХреЗ рдмрдЬрд╛рдп рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдПрдЧрд╛, рдмрд┐рдЯрдХреЙрдЗрди рдЧреБрдгрд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд рдореБрдЦреМрдЯрд╛ (рдЕрдзрд┐рдХрддрдо рдХреЗ рдмрд░рд╛рдмрд░) рдкрд░ рд░рдЦ рджреЗрдВ, рдЬреЛ рдмрд╣реБрдд рддреЗрдЬрд╝реА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдмрдХреБрдЫ рдареАрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рдЗрд╕ рдХрдерди рд╕реЗ рд╕рд╣рдордд рд╣реЛрддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЕрдкрдирд╛рддрд╛ рд╣реВрдВ, рдпрджрд┐ рдирд┐рдореНрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ:

  • рдпрд╣ рдХреЗрд╡рд▓ рд╕рдВрдХрд▓рд┐рдд рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдордЪ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡ рд╣реИ,
  • рдпрд╣ рддрднреА рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЕрдиреБрдХреВрд▓рди рд╕рдХреНрд╖рдо рд╣реЛ,
  • рдпрд╣ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдордЪ рдЗрд╕ рд╢рд░реНрдд рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ,
  • рдпрд╣ рд╕рднреА рдХрд╛рд░реНрдбрд┐рдирд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реИ (рдЬрдм рдЪрд░ рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ), рдореБрдЦреМрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ (рддрд╛рд░реНрдХрд┐рдХ) рдХреА рдХрдорд╛рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реВрдиреНрдп рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдЦрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рддреБрд▓рдирд╛ рдЖрджреЗрд╢ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧрд╛, рдФрд░ рдпрджреНрдпрдкрд┐ рдпрд╣ рд╢рд╛рдЦрд╛ рдХрднреА рднреА рд╣рдорд╛рд░реА рд╕реАрдорд╛ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдерд╛рди рд▓реЗ рд▓реЗрдЧрд╛ (рдФрд░ рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд╛рд░реНрдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХрдИ рдмрд╛рд░ рд▓рдЧреЗрдЧрд╛) рдФрд░ рддреБрд▓рдирд╛ рдСрдкрд░реЗрд╢рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдлрд┐рд░ рд╕реЗ рд╕рдВрдХреЗрддрд┐рдд рд╕рд╛рдЗрдЯ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦрддреЗ рд╣реИрдВред рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд╛рд░реНрдбрд┐рдирд▓ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдПрдХ рдФрд░ рддрд░реНрдХ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкреВрд░реА рдкреЛрд╕реНрдЯ рд╕рдорд░реНрдкрд┐рдд рдХреА рд╣реИред

рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рдореБрдЦреМрдЯрд╛ рдХреЗ рд╕рд╛рде рддрд╛рд░реНрдХрд┐рдХ рдЧреБрдгрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ (рд╢реЗрд╖ рдХреА рдЧрдгрдирд╛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рддреЛ рд╣рдореЗрдВ рддрджрдиреБрд╕рд╛рд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 typedef uint8_t Counter_t; typedef int8_t sCounter_t; static inline Counter_t NextCounter(const Counter_t Counter) { #if IS_POWER2(Max + 1) return (Counter + 1) & Max #else return (Counter + 1) % (Max + 1); #endif }; 

рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╕рдм рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдФрд░ рдирд┐рдпрдВрддреНрд░рдгреАрдп рд╣реИ рдФрд░ рд╕рдм рдХреБрдЫ рд╕рдЪ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдорд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдиреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдФрд░ рдирдХрд╛рдмрдкреЛрд╢ рдирд╣реАрдВ рд╣реИрдВ), рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ рдФрд░ рд╣рдо рдЕрдм рдЙрдирдХреЗ рд▓рд┐рдП рджреЗрдЦреЗрдВрдЧреЗред рдореБрдЦреНрдп рджреЛрд╖ рдпрд╣ рд╣реИ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ - KISS рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИ, рдХрд╛рдлреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рд╕рд╛рдкреЗрдХреНрд╖ рдХреЗ рдЖрд╡реЗрджрди рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рдмрд╛рдж рд╕реЗред рдЗрд╕рд▓рд┐рдП, рдЕрдм рд╣рдо рдПрдХ рдЭрдЯрдХреЗ рдХреЗ рд╕рд╛рде рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдВрдЧреЗ (рдЕрдкрдиреЗ рднрд╛рдЧреНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВ, рд╡реЗ 100,500 рдмрд╛рд░ рдкреБрдирд░реНрдЬрдиреНрдо рд╣реЛрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ Arduino рдХреЗ рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдореЗрд░реА рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдкрдврд╝рддреЗ рд╣реИрдВ)ред

рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдкрдХреНрд╖ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдореВрд▓реА рд╡рд┐рдЪрд▓рдиред рд╣рдо рджреЛ рдХреА рд╢рдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдПрдХ рдмрд╛рдЗрдирд░реА рдирдВрдмрд░ рдХреЛ {0} 1 {0}) рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдордиреЗ рдЕрднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ

рдЬрд╛рд╕реВрд╕реА рдордд рдХрд░реЛ
#define IS_POWER2 (N) ((((((- N - 1) & (N)) == 0)

рдФрд░ рд╣рдо рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдмрд╛рдЗрдирд░реА рдиреЛрдЯреЗрд╢рди рдореЗрдВ рдЗрдХрд╛рдЗрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рд╣реА рдХреНрд░рдо {0} 1 {1} рд╣реИ - рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╕реНрдкрд╖реНрдЯ рд╣реИ

 #define IsRightSequence(N) IsPower2 ((N) + 1) 

рдФрд░ рджреВрд╕рд░рд╛ рддреБрдЪреНрдЫ рд╣реИ

 #define IsRightSequence(N) ( (((N) + 1) & (N)) == 0) 

рдзреНрдпрд╛рди рджреЗрдВ: рдореИрдВ рд╢рд╛рдирджрд╛рд░ рдкреНрд░рдореЗрдп рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди "рдЯреНрд░рд╛рдВрд╕реЗрдВрдбреЗрдВрдЯрд▓ рдбрд┐рдЧреНрд░реА рдореЗрдВ рдПрдХ рдЯреНрд░рд╛рдиреНрд╕реЗрдВрдбреИрдВрдЯрд▓ рд╕рдВрдЦреНрдпрд╛ рд╣рдореЗрд╢рд╛ рдЯреНрд░рд╛рдВрд╕рдбреЗрдВрдЯрд▓ рд╣реЛрддреА рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдХреЙрдирд╕реЗрдкреНрдЯ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рддреБрдЪреНрдЫ рди рд╣реЛред"

рдФрд░ рд╣рдо рдХреИрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдЗрдХрд╛рдЗрдпреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реИ {0} 1 {1} {0}

 #define IsSequence(N) IsPower2( (N) ^ ((N) << 1)) 

рдФрд░ рдЕрдВрдд рдореЗрдВ - рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдЯ рдХрд╛ рдЪрдпрди рдХреИрд╕реЗ рдХрд░реЗрдВ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдо рдореЗрдВ рдЖрдПрдЧрд╛)

 #define LowerBit(N) ((((N) - 1) ^ (N)) & (N)). 


рд▓реЗрдХрд┐рди рдЬреЛ рдХрд╛рдо рдЖ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣ рдЙрд╕рдиреЗ рдХрд┐рдпрд╛
 #define IsRightSequence(N) (IsSequence(N) && (LowerBit(N) == 1)) 

рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдЕрд╡рд▓реЛрдХрди - рдпреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛рдлреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ 0 рджреЛ рдХреА рд╢рдХреНрддрд┐ рд╣реИ рдФрд░ рдПрдХ рд╕рд╣реА рдЕрдиреБрдХреНрд░рдо (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдХреНрд░рдо рднреА), рдЬреЛ рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд╣реИред рд▓реЗрдХрд┐рди 1 рдЗрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реЗ рдХрд╛рдлреА рд╕рд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реВрдиреНрдп, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдмрд╕ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрди рдореИрдХреНрд░реЛ рдХреА рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрдкрддреНрддрд┐ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рддрд░реНрдХ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдзрд╛рд░рдгрд╛ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╡реЗ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдбрд┐рдирд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрднреБрдд рдкреБрд╕реНрддрдХ, рдЯреНрд░рд┐рдХреНрд╕ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдореИрдХреНрд░реЛрдЬрд╝ рдФрд░ рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдордЬрд╝реЗрджрд╛рд░ рдФрд░ рд╢рд┐рдХреНрд╖рд╛рдкреНрд░рдж рдХрд╛рд░реНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реИрдВред

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд░рд┐рдВрдЧ рдмрдлрд░ рдЗрдВрдбреЗрдХреНрд╕ рдкрд░ рд╡рд╛рдкрд╕ред рд╣рдордиреЗ рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдФрд░ рднреА рдЕрдзрд┐рдХ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рдореЗрдВ рджреЛрд╖ рд╣реИрдВ (рдЬреЛ рдЗрд╕ рдкрд░ рд╕рдВрджреЗрд╣ рдХрд░реЗрдВрдЧреЗ)ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ - рдмрдлрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдЕрд╡рд╕реНрдерд╛ рдореЗрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рджреВрд╕рд░рд╛ - рдЕрд╕рдлрд▓ рд▓рдВрдмрд╛рдИ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рд╕рдордп рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЫреЛрдЯреЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЕрднреА рднреА рдХреБрдЫ рдирд┐рд╢реНрдЪрд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ "рдЕрдзрд┐рдХ" рд╢рдмреНрдж рдХреА рд╡рд░реНрддрдиреА рдореЗрдВ 4 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдордЬрд╛рдХ рдпрд╛рдж рджрд┐рд▓рд╛рддреА рд╣реИред рд╣рдо рдЙрди рд╕рднреА рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗ (рдХреБрдЫ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ) рдФрд░ рддреБрд░рдВрдд, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП, рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдо рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреИрд╕реЗ рдХрд┐:

 static inline Counter_t NextCounter(const Counter_t Counter) { if ((Counter + 1) > Max) { return 0; } else { return Counter + 1; }; }; 

(рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдордЭрддреЗ рд╣реИрдВ, рдореИрдВ рдорд┐рд╕реНрд░ рдХреЗ рдХреЛрд╖реНрдардХреЛрдВ рдХрд╛ рд╕рдорд░реНрдердХ рд╣реВрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ)ред

рд╣рдо рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЪреБрдиреЗ рд╣реБрдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рднрд╛рд╖рд╛ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ - рдХреЛрдИ рд╕рдВрджреЗрд╣ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдХреЛрдб рдХреА рдЧрддрд┐ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЪреВрдВрдХрд┐ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЕрдиреНрдп рдХрдорд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ (рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдХрдорд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдореМрдЬреВрдж рд╣реИрдВ рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗ)ред

рдЖрдЗрдП рд╣рдо рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ - рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдПрдХрддрд╛ (1) рдФрд░ рддреБрд▓рдирд╛ (2) рд╣рдореЗрд╢рд╛, рдлрд┐рд░ рд╢реВрдиреНрдп (1) (рд╢рд╛рдпрдж рд╣реА рдХрднреА) рдпрд╛ рдЬреЛрдбрд╝рдирд╛ (1) (рд▓рдЧрднрдЧ рд╣рдореЗрд╢рд╛) - рдЬреЛ 1 + 2 + 1 + ╬Ф ~ 4 рдкреНрд░рд╛рдердорд┐рдХ рджреЗрддрд╛ рд╣реИред рд╕рдВрдЪрд╛рд▓рди рдФрд░ рд╢реВрдиреНрдп рдореЗрдореЛрд░реАред рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╕рд╣реА рдореЛрдб рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдВрдХрд▓рдХ рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдЧрд╛ рдФрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рд╣рдо рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдБ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рд╣реИ:

 static inline Counter_t NextCouner(const Counter_t Counter) { register sCounter_t Tmp; Tmp = (Counter + 1); if (Tmp > Max) { Tmp = 0; }; return Tmp; }; 

рд╣рдо рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рддреЗ рд╣реИрдВ - рдЬреЛрдбрд╝ рдФрд░ рддреБрд▓рдирд╛ рд╣рдореЗрд╢рд╛, рд╢реВрдиреНрдп (рд╢рд╛рдпрдж рд╣реА рдХрднреА) - рд▓рдЧрднрдЧ 3 рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдПрдХ рд╕реНрдореГрддрд┐ рддрддреНрд╡ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рдПрд▓рд┐рдореЗрдВрдЯ (рдирд┐рд╣рд┐рдд) рдерд╛, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╢реБрджреНрдз рд▓рд╛рдн рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджреЛ рдФрд░ рдХрдорд┐рдпрд╛рдВ рдереАрдВ - 1) DRY рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди (рдПрдХ рджреЛ рдмрд╛рд░ рд╡реГрджреНрдзрд┐ рдХреА рдЧрдгрдирд╛) рдФрд░ 2) рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд┐рдХрд╛рд╕ рдмрд┐рдВрджреБ рдереЗ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдордиреЗ рднреА рд╕рдордЭ рдирд╣реАрдВ рдЦреЛрдИ, рдпрд╛рдиреА, рд╣рдо рдПрдХ рд╢реЙрдЯ рдХреЗ рд╕рд╛рде рдЦрд░рдЧреЛрд╢реЛрдВ рдХреЗ рдПрдХ рдЭреБрдВрдб рдХреЛ рдорд╛рд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдФрд░ рд╣рдордиреЗ рдпрд╛ рддреЛ рдХреЛрдИ рдХрд╛рд░рддреВрд╕ рдирд╣реАрдВ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ - рдпрд╣ рдмреИрд░рди рдореБрдирдЪреМрд╕реЗрди рдХреА рд╢реИрд▓реА рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рдХрд╣рд╛рдиреА рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВрдиреЗ if ( (Tmp = Counter + 1) > Max) рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдВрдХрд▓рдХ рдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдХрд┐ рд╡рд╣ рдирд┐рд░рд░реНрдердХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрд╣ рд╕рдмрд╕реЗ рдЬрд╝рдмрд░рджрд╕реНрдд рд░реВрдк рдореЗрдВ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рд╣реИ, рдореБрдЭреЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рдореВрд▓реНрдп рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рдордЬрдмреВрдд рднрд╛рд╡рдирд╛ рдХрд╛ рдХрд╛рд░рдг рдирд╣реАрдВ рдмрддрд╛ рд╕рдХрддрд╛, рдлреНрд░рд╛рдпрдб рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдмрдЪрдкрди рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдордиреЛрд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЖрдШрд╛рдд рд╣реИред рдЖрдзреБрдирд┐рдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдкрдиреЗ рджрдо рдкрд░ рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдлреА рд╕рдХреНрд╖рдо рд╣реИрдВ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВрдиреЗ рдПрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреНрд╡рд╛рд▓рд┐рдлрд╛рдпрд░ рднреА рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рдФрд░ рд╕рд╣реА рдПрдХ (рд╕реА рднрд╛рд╖рд╛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ) рдореЗрд▓ рдЦрд╛рдПрдЧрд╛ред рдлрд┐рд░ рднреА, рдореИрдВ рдЖрдкрдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреЛ рдЙрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд▓рдЧрддреА рд╣реИред

рд╣рдо рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкреВрд░реНрдгрддрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдЕрднреА рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рд╣реИрдВред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреБрдЫ рд╣рдж рддрдХ рд╕реБрдзрд╛рд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рджрд┐рд╢рд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдХреЗрд╡рд▓ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдорд╛рдиреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

 static inline Counter_t NextCouner(const Counter_t Counter) { register Counter_t Tmp; Tmp = (Counter - 1); if (Tmp < 0) { Tmp = ; }; return Tmp; }; 

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдХреБрдЫ рднреА рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рд╣рдореЗрдВ рд╕рдордп рдкрд░ рд▓рд╛рдн рдорд┐рд▓рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдирд╣реАрдВ рдХрд┐ рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рдШрдЯрдиреЗ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдЙрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдврд╝рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдПрдХ рд╕рдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рд╕реБрдирд╛), рд▓реЗрдХрд┐рди рддреБрд▓рдирд╛ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдгред рдпрджрд┐ рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдореИрдВрдиреЗ рддреБрд▓рдирд╛ рдХреЛ 2 рдкреНрд░рд╛рдердорд┐рдХ рдСрдкрд░реЗрд╢рди рдорд╛рдирд╛ (рдкрд╣рд▓реЗ рд╣рдо рдШрдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдПрдХ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ), рддреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реАрдзреЗ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рддреБрд▓рдирд╛ рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдСрдкрд░реЗрд╢рди рдореЗрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╣рдореЗрд╢рд╛ рджреЛ рдФрд░ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╣реЛрддрд╛ рд╣реИред (рд╢рд╛рдпрдж рд╣реА рдХрднреА) рдФрд░ рд╣рдордиреЗ рдПрдХ рдСрдкрд░реЗрд╢рди (рдмрд┐рдирд╛ рдХреБрдЫ рдЦреЛрдП) рдмрдЪрд╛рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, "рдПрдХ рддрд┐рдкрд╣рд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫрд╛ рд╣реИред" рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдЖрджрд░реНрд╢ рд╣реИ - рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирд╣реАрдВред рдпрд╣ рдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рд╕реНрдХ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдиреАрдЪ рд╣реИ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 2 рдкреНрд░рд╛рдердорд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рдФрд░ рдпрд╣ рд╢рд╛рдпрдж рдЗрд╕рдХреА рдПрдХрдорд╛рддреНрд░ рдЦрд╛рдореА рд╣реИред

рдПрдХ рдФрд░ рднреА рддреЗрдЬ рд╕рдорд╛рдзрд╛рди рд╣реИ - рдмрд╕ рдХрд╛рдЙрдВрдЯрд░ рд╡реИрд▓реНрдпреВ рдмрдврд╝рд╛рдПрдБ (рдШрдЯрд╛рдПрдБ) рдФрд░ рдХреБрдЫ рди рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реА рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдЙрд╕ рдорд╛рди рдХреЗ рд╕рд╛рде рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡реАрдХреГрдд рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред 8-рдмрд┐рдЯ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд▓рд┐рдП (рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ uint8_t рдХрд╛ рд╣реИ), рдпрд╣ 255 рд╣реЛрдЧрд╛, рдлрд┐рд░ рд╣рдо рд╕рд┐рд░реНрдл рдХрд╛рдЙрдВрдЯрд░ = рдХрд╛рдЙрдВрдЯрд░ + 1 рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рд╢рдмреНрдж рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдХрд╛рдЙрдВрдЯрд░ + = 1 рдпрд╛ ++ рдХрд╛рдЙрдВрдЯрд░ рд▓рд┐рдЦрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рд╣реИрдВ рдФрд░ рд╡реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реЛрдВрдЧреЗред рдпрджрд┐ рд╣рдо рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдЪреВрдВрдХрд┐ рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рд╣реИ), рддреЛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЕрдЧрд░ рд╣рдо рдПрдЖрд░рдПрдо рдпрд╛ рдПрд╡реАрдЖрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ (рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдореИрдВрдиреЗ рдЕрднреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдереА, рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рд╣реЛрдЧрд╛ рдЬреАрд╕реАрд╕реА рд╕рдВрдХрд▓рдХ рдХреЗ рддрд╣рдд рдПрдХ рд╣реА) (рд▓реЗрдЦрдХ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХреАрдХреГрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдпрд╣ рдЕрддреАрдд рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рднрд╛рд╖рдг рдХреНрд░рд╛рдВрддрд┐ рд╣реИ рдЬрдм рдХрдВрдкреНрдпреВрдЯрд░ рдмрдбрд╝реЗ рдФрд░ рдореЗрдореЛрд░реА рдЫреЛрдЯреЗ рдереЗ), рдФрд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рднреА рд╕реНрддрд░ рдкрд░ рдЪрд╛рд▓реВ рд╣реЛ рдЧрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рджрд┐рдП рдЧрдП рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реЛрдВрдЧреЗред

рдЖрдзреБрдирд┐рдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмрд╣реБрдд рдЙрдиреНрдирдд рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдВрдмрдВрдзрд┐рдд рдореЛрдб рдХреЛ рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рдЙрдВрдЯрд░ ++ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ (рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ) рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯрд╛рд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЗрд░рд╛рджрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЬрдиреНрдо рджреЗ рд╕рдХрддрд╛ рд╣реИред рдзреАрдореА рдХреЛрдб, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХред

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ 256-рддрддреНрд╡ рдмрдлрд░ рд╣рдореЗрд╢рд╛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рд╣реИ, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВред рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЖрдк рдмрдлрд░ рдХреЛ рдкреЗрдЬ рдмреЙрд░реНрдбрд░ рдкрд░ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рд╕реЗ рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдХреЗ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпреВрдирд┐рдпрди рдХреАрд╡рд░реНрдб рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрддрд╛рдПрдЧрд╛, рдореИрдВ рдЗрд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд▓рд╛ рд╕рдХрддрд╛ рд╣реВрдВред рдЦрд░рд╛рдм), рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдордЬрдмреВрдд рд▓рдЧрд╛рд╡ рдХреЗ рд╕рд╛рде рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрдгрдп рд╣реИ, рдЬреЛ рдЦрддрд░рдирд╛рдХ рд░реВрдк рд╕реЗ рд╢рдмреНрдж рдХреЗ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рдЕрд░реНрде рдореЗрдВ рдЪрд╛рд▓ рдХреЗ рдХрд░реАрдм рд╣реИ, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реА рд╢реИрд▓реА рдирд╣реАрдВ рд╣реИред

рдмреЗрд╢рдХ, рдХреЛрдИ рднреА рд╣рдореЗрдВ рдПрдХ рдЖрд╡рд░рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдпрд╛ рдЙрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдЕрдзрд┐рдХрддрдо (рдФрд░ рдиреНрдпреВрдирддрдо рдХреЗ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрд╕ рдЧреИрд░-рд╢реВрдиреНрдп рдиреНрдпреВрдирддрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ) рдХрд╛рдЙрдВрдЯрд░ рдорд╛рди, рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред

рдЦреИрд░, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рд╣рдо рд░рд┐рдВрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рд▓рд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗред
рд╡рд┐рдзрд┐рдЪрдВрдЪрд▓рддрд╛рд▓реАрдб рд╕рдордп
┬▒0 (1)1
┬▒%1 (7)2
+ рдЕрдЧрд░3 (рдХреЛрдИ рднреА)3.x
- рдЕрдЧрд░3 (рдХреЛрдИ рднреА)2.x

рдХреЛрд╖реНрдардХ рдореЗрдВ рджреВрд╕рд░реА рдкрдВрдХреНрддрд┐ рдмрдлрд░ рдЖрдХрд╛рд░ рдорд╛рди (256 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ) рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдХрд╛рд░ 0 рдХрд╛ рдПрдХ рдмрдлрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд░реБрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, DarZaNeBy (рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рдлрд╛рдпрджреЗ рдиреБрдХрд╕рд╛рди рдХреА рдХреАрдордд рдкрд░ рдЦрд░реАрджреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рдЕрд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рд╡реЗрддрдирд╡реГрджреНрдзрд┐ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рд╛рде рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрдзрд┐рдХ рд╕рдлрд▓ рдкреНрд░рддрд┐рдпреЛрдЧреА рд╣реИ рдФрд░ рдЕрдЧрд▓реЗ рджреМрд░ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рддреА рд╣реИред рдХрд┐рд╕реА рднреА рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВред

рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдиреЛрдЯ - рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рд╣рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдмрд╕ рд╣рдо рдЕрдВрддрд░рд╛рд▓ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрди рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдХреЛрдб рдЗрд╖реНрдЯрддрдо рдореЗрдВ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдирд┐рд░реНрдорд╛рдг (рдФрд░ рдпреЗ рднрд╛рд╖рд╛рдПрдВ) рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдкреНрд░реЗрдд рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рджрдпрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдореЙрдбреНрдпреВрд▓ (рдЗрдирд▓рд╛рдЗрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ рдордЬрдмреВрдд рдирд╛рдо) рдмрдирд╛рдпрд╛, рдФрд░ рдЕрдм рд╣рдо рд░рд┐рдВрдЧ рдмрдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред

рдФрд░ рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдпрд╣ рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдмрдлрд░ рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛ рддрддреНрд╡ рдХреЛ рд░рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЧреЗрдЯреНрдЯрд░ рдФрд░ рд╕реЗрдЯрд░ред рдЗрди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рдмрд┐рдирд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рджреЛрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдмрдлрд░ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрднрд╡ рд╣реИ (рдереЛрдбрд╝рд╛ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ), рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдореВрд▓реНрдп рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рд╣реИред рдЕрдЧрд▓реА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ - рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ - рдпрд╛ рддреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореВрд▓реНрдп (рдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛) рдХреЗ рд░реВрдк рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдкрд╣рд▓реА рд╡рд┐рдзрд┐ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рдирд╣реАрдВ рд╣реИред
рд▓реЗрдХрд┐рди рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдмрдлрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рд╣реИ - рдЗрд╕ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрд┐рд╕реЗ рд╣рдореЗрд╢рд╛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдИ рднреА рд╣рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд░рд╣рдиреЗ рджреЗрдВред рд╣рдореЗрдВ рдмрдлрд╝рд░ рд╕реЗ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЖрдЗрдП рдЗрд╕ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВред

рд╡рд╛рдкрд╕ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдореЗрдВ рдХрддрд╛рд░ рдХреЗ рддрддреНрд╡реЛрдВ рдФрд░ рджреЛ рдЕрдиреБрдХреНрд░рдорд┐рддреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЧрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдПрдХ рдмрдлрд░ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╕реНрдерд╛рди рдХреИрд╕реЗ рдорд┐рд▓реЗрдЧрд╛ (рдФрд░ рдпреЗ рд╕рдВрдХреЗрдд) рдПрдХ рдЕрд▓рдЧ рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ, рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╣рдо рдЗрд╕ рдХреНрд╖рдг рдХреЛ рдХреЛрд╖реНрдардХ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╕ рд╣реИред рдХреБрдЫ (рдкреБрд╕реНрддрдХ рдХреЗ рд▓реЗрдЦрдХ "рдЧрдгрд┐рддрдЬреНрдЮреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ" рд╕рд╣рд┐рдд, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВ, рдореИрдВ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ) рднрд░реЗ рд╣реБрдП рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдмреБрд░рд╛рдИ рдХреНрдпреЛрдВ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рд╣рдо рддреБрд░рдВрдд рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╕реВрдЪрдХ рд╣реИрдВ, рди рдХрд┐ рд╕рдВрдХреЗрдд, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрднреА-рдХрднреА рдореИрдВрдиреЗ рдЦреБрдж рдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред ( ), ( )- , , , . ( 256 ), , , ( , 8 , , 4- ), , , ( , ).

, 51 ( ) 2 ( ) 3 ( ), , , . , , GCC x51, AVR .

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ рдЪрд╛рд▓реЗрдВ рдЬреЛ рдЕрдЧрд▓реЗ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЧрддрд┐ рдХреЛ рдмрдврд╝рд╛рддреА рд╣реИрдВ, рд╡реЗ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдФрд░ рдЕрдЧрд░ рд╣рдо рдЗрд╕ рд░рд╛рдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдХреЗрдд рд╕рдордЭрдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реИрдВ (рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░рд╛рдп рд╕рд╣реА рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рдореМрдЬреВрдж рд╣реИ), рддреЛ рд╡рд┐рдХрд▓реНрдк рд╕реНрдкрд╖реНрдЯ рд╣реИ - рдЕрдиреБрдХреНрд░рдорд┐рддред

рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдХреНрдпрд╛ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рдпрд╣рд╛рдВ рдореИрдХреНрд╕ рдмрдлрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рднреАрддрд░ рдХрд▓реНрдкрдирд╛ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рдЕрд╕реАрдорд┐рдд рд╣реИ (рдФрд░ рдЗрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ), рд▓реЗрдХрд┐рди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╕реЗрдЯ рдХрд╛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрд░реНрде рд╣реИред рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд▓рд┐рдП, рдпреЗ рджреЛ рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рд╣реИрдВ: 1) рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЕрдВрддрд┐рдо рддрддреНрд╡ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ 2) рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЕрдЧрд▓рд╛ рддрддреНрд╡ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЪреВрдВрдХрд┐ рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж, рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдереЛрдбрд╝рд╛ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдлрд┐рд░ рд╣рдо рджреВрд╕рд░рд╛ рдЪреБрдирддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдПрдХ рдореВрд░реНрдд рд▓рд╛рдн рдХрд╛ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реИред рд░реАрдб рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рд╣рдо рддреБрд░рдВрдд рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЙрд╕ рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдЧрд▓реА рдмрд╛рд░ рдкрдврд╝рдиреЗ рдкрд░ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рддреБрд░рдВрдд рдПрдХ рд╕рд░рд▓ (рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЕрд░реНрде рдореЗрдВ) рдХрд╕реМрдЯреА рд╣реИ рдХрд┐ рдХрддрд╛рд░ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ - рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реЛрддреА рд╣реИ - рдЕрдЧрд░ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдордЪ рддрддреНрд╡реЛрдВ рдХреЛ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ,рддрдм рд╕реВрдЪрдХрд╛рдВрдХ рд╕рдВрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдо рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рдЦрд╛рд▓реА рдХрддрд╛рд░ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред

(┬л, ┬╗) , . тАФ 1) , 2) ( , ) 3) , , 4) 256 , 5) ( ), . , , , , .

, (, , ), 1 . :

 #define NeedOverflowControl YES typedef uint8_t Data_t; static Data_t BufferData[Max]; static Counter_t BufferWriteCounter=0, BufferReadCounter=BufferWriteCounter; void BufferWrite(const data_t Data) { BufferData[BuffWriteCounter] = Data; register counter_t Tmp = NextCount(BufferWriteCounter); #if (NeedOverflowControl == YES) if (Tmp == BufferReadCounter) {BufferOverflow();} else #endif { BufferWriteCounter = Tmp; } }; 

, , тАж , :

  inline int BufferIsEmpty(void) { return ( BufferReadCounter == BufferWriteCounter ); }; inline int BufferIsFull(void) { return ( BufferReadCounter == NextCounter(BufferWriteCounter) ); }; #define DataSizeIsSmaller (sizeof(data_t) < sizeof(counter_t)) data_t BufferRead(void) { #if DataSizeIsSmaller register data_t Tmp = BufferData[BufferReadCounter]; #else register counter_t Tmp = BufferReadCounter; #endif BufferReadCounter = NextCount(BufferReadCounter); #if DataSizeIsSmaller return Tmp; #else return BufferData[Tmp]; #endif }; 

, ( ) тАФ , , , тАФ , . , , , .

, , тАФ , , , .

, ( )

1) ( тАФ , , тАФ , , ).
(, , )

2) тАФ , .

:

3) рдФрд░ 4) рд╕рдорд╕реНрдпрд╛ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░реЗрдВ рдФрд░ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░реЗрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ ("рдореБрд╕реНрдХрд╛рди рдФрд░ рд▓рд╣рд░")ред рд╡реЗ рдЦрд░рд╛рдм рдХреНрдпреЛрдВ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбрд┐рд░рд┐рдЪрд▓реЗрдЯ рд╕рд┐рджреНрдзрд╛рдВрдд (рдПрди рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдФрд░ рдПрди + 1 рдкрдХреНрд╖рд┐рдпреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛) рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рд╣рдо рдбреЗрдЯрд╛ рддрддреНрд╡ рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рджреЛ рддрд░реАрдХреЗ рдХреНрдпреЛрдВ рд╣реИрдВ? рд╣рдо

3) рдкрд┐рдЫрд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рддрддреНрд╡ рдХреЛ

рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо 4) рдЙрди рддрддреНрд╡реЛрдВ рдХреЛ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реБрдП рд╣реИрдВред

рдЗрдирдореЗрдВ рд╕реЗ рдХреМрди рд╕реА рд╡рд┐рдзрд┐рдпрд╛рдВ рдмрджрддрд░ рд╣реИрдВ - "рджреЛрдиреЛрдВ рдмрджрддрд░ рд╣реИрдВ", рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореБрдЦреНрдп рджреЛрд╖ рдЕрд╕рдВрдЧрдд рд╣реИ - рд╣рдо рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рдзрд┐ 3 рдХрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ (рдЗрд╕рдХреЗ рд▓рд┐рдП рдпрд╣ рд░рд┐рдХреЙрд░реНрдб рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ), рдЬреЛ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ рдпрджрд┐ рдУрд╡рд░рдлреНрд▓реЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЦрд╛рд▓реА рд╣реИред

тАФ , ( , ),

5) тАФ , , , , тАФ , .

тАФ , , .

, , , , , , , , , , , . , 4 , , . MRSW (Multi-Reader Single-Writer) ┬лThe Art of Mulpiprocessor Programming┬╗ ( , ) ( ) . тАФ , , .

MRMW , ┬л┬╗ (, , ┬л ┬╗ ). , , , , . , , , (, , тАФ , , , ), .

, ( ) , . , , , , , , , .

 typedef uint8_t data_t; static data_t BufferData[Max]; static counter_t BufferWriteCounter=0, BufferReadCounter=WriteCounter; static int8_t BufferHaveData = 0; void BufferWrite(const data_t Data) { if ((BufferWriteCounter == BufferReadCounter) && (BufferHaveDataFlag == 1)) {BufferOverflow();} else { BufferData[BufferWriteCounter] = Data; BufferHaveDataFlag = 1; BufferWriteCounter = NextCounter(BufferWriteCounter); }; }; inline int BufferIsEmpty(void) { return ((BufferReadCounter==BufferWriteCounter) && (BufferHaveDataFlag == 0));}; data_t BufferRead(void) { register counter_t Tmp; Tmp = BufferReadCounter; BufferReadCounter = NextCount(BufferReadCounter); if (BufferReadCount == BufferWriteCounter) { BufferHaveDataFlag = 1; }; return BufferData[Tmp]; }; 

, , , , , .

, ( 0 1, , , ), , , , , , ( ), , ,

-
 typedef (NoBufferHaveData= 0, BufferHaveData =1) BufferHave DataFlag_t; BufferHaveData_t BufferYaveDataFlag; inline void BufferHaveDataFlagSet(void) {BufferHaveDataFlag = NoBufferHaveData;}; inline void BufferHaveDataFlagClr(void) {BufferHaveDataFlag = BufferHaveData;}; inline int BufferHaveDataFlagIsSet(void) {return (int)(BufferHaveDataFlag == BufferHaveData);}; 


, , 0 1, . , , , 0 1. , , , , BufferFullFlag , BufferIsNotEmptyFlag . , KISS , , , , , ┬л ┬╗.

рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдзреНрд╡рдЬ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдмрдлрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдордВрдЬрд╕реНрдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЛ рдЕрдиреБрдХреНрд░рдореЛрдВ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рд╖рдп рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдкрдХ рдкреЛрд╕реНрдЯ рдирд┐рдХрд▓рд╛, рдореИрдВрдиреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЧрд▓реА рдмрд╛рд░ рд╣реИред

PS рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореБрдЭреЗ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдХреНрдпрд╛ рдкрд╕рдВрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдордп, рдШрд░реЗрд▓реВ RTOS рдХреЗ рд▓реЗрдЦрдХреЛрдВ рдиреЗ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрджреЗрд╣ рдХреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рд▓реЗ рд▓рд┐рдпрд╛:

  1. рдмрдлрд░ рдХреЗ рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджрд┐рдП рдЧрдП рд╣реИрдВ - рдПрдХ рджреЛ рдХреА рд╢рдХреНрддрд┐ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд▓рд┐рдП (рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИ), рдФрд░ рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкреЗрди рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдХрд░рдг рдЪреБрдирдирд╛ рд╣реЛрдЧрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡реЗ рдЧрд▓рддрд┐рдпрд╛рдВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рд░ рдЬрдЧрд╣ рдЪреЗрдХ рд╣реИрдВред
  2. рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЕрдВрддрд┐рдо рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛рдирд╛ рдпрд╛ рдмрдлрд░ рддрддреНрд╡ рд╕реЗ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪред
  3. рдбреЗрдЯрд╛ рдмрдлрд░ рдХреЛ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдбрд┐рдЧреНрд░реА 2 рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЕрдзрд┐рднреЛрдЧ рджрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐ред
  5. рдПрдХ рдордирдорд╛рдирд╛ рдЖрдХрд╛рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдПрдХ рдХрд╛рдЙрдВрдЯрд░
  6. рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЦрдВрдбреЛрдВ рдХрд╛ рдЖрдпреЛрдЬрди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ (рджреЛ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЗ рд╕рд╛рде) рдмрд╕ рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЙрдирдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдкрд░рдорд╛рдгреБ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
  7. рдХреБрдЫ рд╢реИрд▓реА рд▓рд╛рдкрд░рд╡рд╛рд╣реА, рд▓рд╛рдЗрдиреЛрдВ рдХреА рддрд░рд╣

     return ((_writeCount - Atomic::Fetch(&_readCount)) & (size_type)~(_mask)) != 0; 

    рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреА рджреВрд╕рд░реА рдЫрдорд╛рд╣реА - рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╕реА рдХреЗ рд▓рд┐рдП рджреЛрд╖реА рдард╣рд░рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рднрд╛рд╖рд╛ рд╕реНрд╡рдпрдВ рдХреЛ рджреЛрд╖ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ

     size_type(~(_mask)) 

    рд▓реЗрдХрд┐рди рдпрд╣ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВред

рдкреАрдкреАрдПрд╕ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓реЗрдЦрдХ рдЗрд╕ рдЖрд▓реЛрдЪрдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реИрдВ рдФрд░ рдЙрдЪрд┐рдд рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗред

Source: https://habr.com/ru/post/hi438476/


All Articles