рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдЦреЛрдВ рдореЗрдВред рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдпрд╛ рддреЛ рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕рд░рд▓ рд╕реВрдЪреА рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдпрд╛ рддреИрдпрд╛рд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╡рд┐рд╖рдо рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдПред
рдЗрд╕ рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рдкрдардиреАрдп рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реИред рд▓реЗрдЦ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЖрджреЗрд╢реЛрдВ рдФрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд╣рд▓реЗ рд╣реА рджрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИред рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рдЕрд╡рд╕рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВрдЧреЗред
рдПрдХ рд╕рдордп рдореЗрдВ, ATMEL рдиреЗ рдЖрда-рдмрд┐рдЯ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░реНрд╕ рдХреА рдПрдХ рд▓рд╛рдЗрди рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдФрд░ рдПрдХ рд╕рд░рд▓, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрдорд╛рдВрдб рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдкреВрд░реНрдгрддрд╛ рдХреА рдХреЛрдИ рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреБрдЫ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд┐рд░реНрджреЗрд╢ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдХреНрд░реЛ рдЕрд╕реЗрдВрдмрд▓рд░, рдирд┐рд░реНрдорд╛рддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛, рдХреГрдкрдпрд╛ рдФрд░ рдмрд┐рд▓реНрдХреБрд▓ рдирд┐: рд╢реБрд▓реНрдХ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдб рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдХреНрд░реЛрдЬрд╝ рд╕реЗ рд╕реАрдзреЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреБрдЫ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрджрдо рдЙрдард╛рдПрдВрдЧреЗ
рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
.EQU FOSC = 16000000 .EQU CLK8 = 0
рдпреЗ рджреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдЖрдкрдХреЛ рдореИрдХреНрд░реЛрдЬрд╝ рдореЗрдВ "рдореИрдЬрд┐рдХ рдирдВрдмрд░" рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ, рдЬрд╣рд╛рдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдЖрд╡реГрддреНрддрд┐ рдФрд░ рдкрд░рд┐рдзреАрдп рд╡рд┐рднрдХреНрдд рдХреЗ рдлреНрдпреВрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреА рдЬрд╛рддреА рд╣реИред рдкрд╣рд▓реА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣рд░реНрдЯреНрдЬ рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреНрд░рд┐рд╕реНрдЯрд▓ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╣реИ, рджреВрд╕рд░реА рдкрд░рд┐рдзреАрдп рдЖрд╡реГрддреНрддрд┐ рд╡рд┐рднрдХреНрдд рдХреА рд╕реНрдерд┐рддрд┐ рд╣реИред
рдирд╛рдордХрд░рдг рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ
.DEF TempL = r16 .DEF TempH = r17 .DEF TempQL = r18 .DEF TempQH = r19 .DEF AL = r0 .DEF AH = r1 .DEF AQL = r2 .DEF AQH = r3
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдХреБрдЫ рд╣рдж рддрдХ рдирд┐рд░рд░реНрдердХ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рдЬреЛ рдореИрдХреНрд░реЛрдЬрд╝ рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо 32-рдмрд┐рдЯ рдорд╛рди (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЛ 16-рдмрд┐рдЯ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ Temp рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдЪрд╛рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдореЗрдВ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдХреНрд░реЛрдЬрд╝ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд╕реНрдерд╛рдпреА рднрдВрдбрд╛рд░рдг рд░рдЬрд┐рд╕реНрдЯрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рддреЛ TempQL рдФрд░ TempQH рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЧреБрдгрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдореИрдХреНрд░реЛ рдХреЗ рд▓рд┐рдП A рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рд╕рд╛рде 32-рдмрд┐рдЯ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рддреЛ AQ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред
рд╕рд░рд▓ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝
рдЕрдм рдЬрдм рд╣рдордиреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдирд╛рдордХрд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд▓рд┐рдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрди рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗ, рдЬреЛ рдЧрд╛рдпрдм рд╣реИрдВ рдФрд░ рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдХреЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред AVR рдЕрд╕реЗрдВрдмрд▓рд░ рдореЗрдВ рдПрдХ рдЕрдЬреАрдм рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ 64 рдкреЛрд░реНрдЯреНрд╕ / рдЖрдЙрдЯ рдХрдорд╛рдВрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╢реЗрд╖ lds / sts рдХреЗ рд▓рд┐рдП ред рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрдорд╛рдВрдб рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд╣рдо рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред
.MACRO XOUT .IF @0<64 out @0,@1 .ELSE sts @0,@1 .ENDIF .ENDMACRO .MACRO XIN .IF @1<64 in @0,@1 .ELSE lds @0,@1 .ENDIF .ENDMACRO
рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛ рдореЗрдВ рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдмрдВрджрд░рдЧрд╛рд╣ рдХрд╛ рдкрддрд╛ 64 рд╕реЗ рдХрдо рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рд╕рд╢рд░реНрдд рдЕрдиреБрднрд╛рдЧ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рджреВрд╕рд░рд╛ред рд╣рдорд╛рд░реЗ рдореИрдХреНрд░реЛрдЬрд╝ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрдирдкреБрдЯ / рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЖрджреЗрд╢реЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░реА рдЯреАрдо рдореЗрдВ рдЙрдиреНрдирдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд╣рдо рдорд╛рдирдХ рдирд╛рдордХрд░рдг рдЙрдкрд╕рд░реНрдЧ рдПрдХреНрд╕ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЖрджреЗрд╢реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬреЛ рдХреЛрдбрд╛рдВрддрд░рдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд▓рдЧрд╛рддрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдЖрдЙрдЯрдкреБрдЯ рдЗрдирдкреБрдЯ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рд▓рд┐рдЦрдиреЗ рдХреА рдХрдорд╛рди рд╣реИред рдЗрд╕ рдЖрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛
.MACRO OUTI ldi TempL,@1 .IF @0<64 out @0, TempL .ELSE sts @0, TempL .ENDIF .ENDMACRO
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореИрдХреНрд░реЛ рдореЗрдВ рдирд╛рдо, рдХрдорд╛рдВрдб рдирд╛рдордХрд░рдг рддрд░реНрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рдирдХ рдирд╛рдо рдХреЛ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ I рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдбреЗрд╡рд▓рдкрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдореИрдХреНрд░реЛ рдореЗрдВ, рд╣рдо рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЯреЗрдореНрдкрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдХ рдПрдХрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реА рдЬреЛрдбрд╝реА 16-рдмрд┐рдЯ рдореВрд▓реНрдп рдХрд╛ рднрдВрдбрд╛рд░рдг рдХрд░рддреА рд╣реИред I / O рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд▓рд┐рдП 16-рдмрд┐рдЯ рдорд╛рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдореИрдХреНрд░реЛ рдмрдирд╛рдПрдБ
.MACRO OUTIW ldi TempL,HIGH(@1) .IF @0<64 out @0H, TempL .ELSE sts @0H, TempL .ENDIF ldi TempL,LOW(@1) .IF @0<64 out @0L, TempL .ELSE sts @0L, TempL .ENDIF .ENDMACRO
рдЗрд╕ рдореИрдХреНрд░реЛ рдореЗрдВ, рд╣рдо 16-рдмрд┐рдЯ рдорд╛рди рд╕реЗ рдирд┐рдореНрди рдФрд░ рдЙрдЪреНрдЪ рдмрд╛рдЗрдЯ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд LOW рдФрд░ рдЙрдЪреНрдЪ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдореИрдХреНрд░реЛ рдирд╛рдо рдореЗрдВ, рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ I рдФрд░ W рдХреЛ рдХрдорд╛рдВрдб рдореЗрдВ рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реЗрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрдорд╛рдВрдб 16-рдмрд┐рдЯ рд╡реИрд▓реНрдпреВ (рд╢рдмреНрдж) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕реНрдореГрддрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рдЬрд┐рд╕реНрдЯрд░ рдЬреЛрдбрд╝реЗ рдХреЗ рд▓реЛрдб рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдХреЛрдИ рдХрдо рдЕрдХреНрд╕рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрдЗрдП рдРрд╕реЗ рдореИрдХреНрд░реЛ рдмрдирд╛рдПрдВ
.MACRO ldiw ldi @0L, LOW(@1) ldi @0H, HIGH(@1) .ENDMACRO
рдЗрд╕ рдореИрдХреНрд░реЛ рдореЗрдВ, рд╣рдо рдЗрд╕ рддрдереНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛ рдкрд░ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдФрд░ рдмрдВрджрд░рдЧрд╛рд╣реЛрдВ рдХреЗ рдорд╛рдирдХ рдирд╛рдордХрд░рдг рдХрд╛ рдЕрд░реНрде рд╣реИ рдирд┐рдЪрд▓реЗ рдФрд░ рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдПрдЪ рдХреЗ рд▓рд┐рдП рдбрдмрд▓-рдмрд╛рдЗрдЯ рдорд╛рди рдХреЗ рдКрдкрд░реА рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдкреЛрд╕реНрдЯрдлрд┐рдХреНрд╕ рдПрд▓ ред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЪрд░реЛрдВ рдХрд╛ рдирд╛рдордХрд░рдг рдХрд░рддреЗ рд╕рдордп рдЗрд╕ рдирд┐рдпрдо рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдХреНрд░реЛ рдЙрдирдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдореИрдХреНрд░реЛрдЬрд╝ рдХреА рд╕реБрдВрджрд░рддрд╛ рдЗрд╕ рддрдереНрдп рдореЗрдВ рднреА рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рдЬрдм рджреВрд╕рд░рд╛ рдСрдкрд░реЗрдВрдб рдПрдХ рдирдВрдмрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдпрд╣ рд▓реЗрдмрд▓ рдХрд╛ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореИрдХреНрд░реЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЬрдЯрд┐рд▓ рдЖрджреЗрд╢реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛрдЬрд╝ред
рдЬрдм рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдореИрдХреНрд░реЛрдЬрд╝ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдореИрдХреНрд░реЛрдЬрд╝ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
рд╣рдо рдЕрдкрдиреА рд╕рднреА рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╣рдо рдирд╛рдо рджреЗрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Library.inc ред рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрдк-рд▓реЗрдЦ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд╣реЛрдВрдЧреЗ
_sub0: .IFDEF __sub0 ; ----- ----- ret .ENDIF
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, __sub0 рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╕рдмрд░реВрдЯрд┐рди рдХреЛ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдиреНрдпрдерд╛, рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ Macro.inc рдореЗрдВ, рд╣рдо рдлреЙрд░реНрдо рдХреЗ рдореИрдХреНрд░реЛрдЬрд╝ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
.MACRO SUB0 .IFNDEF __sub0 .DEF __sub0 .ENDIF ; --- call _sub0 .ENDMACRO
рдЗрд╕ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╣рдо __sub0 рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░, рдпрджрд┐ рдпрд╣ рдЧрд╛рдпрдм рд╣реИ, рддреЛ рд╣рдо рджреГрдврд╝ рд╕рдВрдХрд▓реНрдк рдХрд░рддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдмрд░реВрдЯреАрди рдХреЛрдб рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддрд╛ рд╣реИред рдореИрдХреНрд░реЛрдЬрд╝ рдореЗрдВ рджрд┐рдирдЪрд░реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рд▓реЗрдЧрд╛
.INCLUDE тАЬMacro.incтАЭ ;---- ---- .INCLUDE тАЬLibrary.incтАЭ
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо 8-рдмрд┐рдЯ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореИрдХреНрд░реЛ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрддреЗ рд╣реИрдВред рд╣рдо рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рддрд░реНрдХ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ AL (r0) рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ , рдФрд░ AH (r1) рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рд╢реЗрд╖ рднрд╛рдЧред рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдмрд░реВрдЯреАрди рджрд┐рдЦреЗрдЧрд╛
_div8u: .IFDEF __ div8u ;AH - ;AL ;TempL - ;TempH - ;TempQL - clr AL; clr AH; ldi TempQL,9 d8u_1: rol TempL dec TempQL brne d8u_2 ret d8u_2: rol A sub AH, TempH brcc d8u_3 add AH,TempH clc rjmp d8u_1 d8u_3: sec rjmp d8u_1 .ENDIF
рдЗрд╕ рджрд┐рдирдЪрд░реНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдХреНрд░реЛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реЛрдЧреА
.MACRO DIV8U .IFNDEF __div8u .DEF __div8u .ENDIF mov TempL, @0 mov TempH, @1 call _div8u .ENDMACRO
рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдирд┐рд░рдВрддрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
.MACRO DIV8UI .IFNDEF __div8u .DEF __div8u .ENDIF mov TempL, @0 ldi TempH, @1 call _div8u .ENDMACRO
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдбрд┐рд╡реАрдЬрди рдСрдкрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рддреБрдЪреНрдЫ рд╣реИ
DIV8U r10, r11 ; r0 = r10/r11 r1 = r10 % r11 DIV8UI r10, 35 ; r0 = r10/35 r1 = r10 % 35
рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рдЙрди рд╕рднреА рджрд┐рдирдЪрд░реНрдпрд╛рдУрдВ рдХреЛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ Library.inc рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдмрд╛рд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗред рдкреНрд░рд╡реЗрд╢ рд▓реЗрдмрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╣рд╛рд▓рдд рдХреА рд╕реАрдорд╛ рд╕реЗ рдкрд░реЗ рд▓реЗрдмрд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╕рдВрдХрд▓рдХ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рд╕рд╢рд░реНрдд рдмреНрд▓реЙрдХ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ рд▓реЗрдмрд▓ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдб рдореЗрдВ рдЕрдкреНрд░рдпреБрдХреНрдд рдЯреИрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдбрд░рд╛рд╡рдиреА рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЯреИрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред
рдкрд░рд┐рдзреАрдп рдореИрдХреНрд░реЛрдЬрд╝
рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрд╣рд╛рдВ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреЛрдб рд╕реЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдФрд░ рдмрд┐рдЯреНрд╕ рдХреЗ mnemonic рдкрджрдирд╛рдореЛрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рдпрд╣ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдХрд┐рд╕ рдореЛрдб рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рдХрднреА-рдХрднреА рдореЛрдб рд╡рд┐рднрд┐рдиреНрди рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдмрд┐рдЯ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ USART рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЪрд▓реЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдЖрд░рдВрднреАрдХрд░рдг рдореИрдХреНрд░реЛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
.MACRO USART_INIT ; speed, bytes, parity, stop-bits .IF CLK8 == 0 .SET DIVIDER = FOSC/16/@0-1 .ELSE .SET DIVIDER = FOSC/128/@0-1 .ENDIF ; Set baud rate to UBRR0 outi UBRR0H, HIGH(DIVIDER) outi UBRR0L, LOW(DIVIDER) ; Enable receiver and transmitter .SET UCSR0B_ = (1<<RXEN0)|(1<<TXEN0) outi UCSR0B, UCSR0B_ .SET UCSR0C_ = 0 .IF @2 == 'E' .SET UCSR0C_ |= (1<<UPM01) .ENDIF .IF @2 == 'O' .SET UCSR0C_ |= (1<<UPM00) .ENDIF .IF @3== 2 .SET UCSR0C_ |= (1<<USBS0) .ENDIF .IF @1== 6 .SET UCSR0C_ |= (1<<UCSZ00) .ENDIF .IF @1== 7 .SET UCSR0C_ |= (1<<UCSZ01) .ENDIF .IF @1== 8 .SET UCSR0C_ = UCSR0C_ |(1<<UCSZ01)|(1<<UCSZ00) .ENDIF .IF @1== 9 .SET UCSR0C_ |= (1<<UCSZ02)|(1<<UCSZ01)|(1<<UCSZ00) .ENDIF ; Set frame format outi UCSR0C,UCSR0C_ .ENDMACRO
рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдореЗрдВ USART рд╕реЗрдЯрдЕрдк рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рдЙрди рдорд╛рдиреЛрдВ рд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЧрдИ, рдЬреЛ рдПрдХ рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝реЗ рдмрд┐рдирд╛ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рдереЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдерд╛, рд╡реЗ рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдореИрдХреНрд░реЛ рдореЗрдВ, рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╣рдордиреЗ рдЖрд╡реГрддреНрддрд┐ рдФрд░ рд╡рд┐рднрд╛рдЬрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреНрдпреЛрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рд╣реИрдВред рдареАрдХ рд╣реИ, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдХреНрд░реЛ рдХреЗ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдХреЛрдб рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкрд░рд┐рдгрд╛рдореА рдПрдХ рд╣реА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реЛрдЧреА рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдЖрд░рдВрднреАрдХрд░рдг рд▓рд┐рдЦ рд░рд╣реЗ рдереЗред
USART рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП , рдпрд╣рд╛рдВ рдХреБрдЫ рдФрд░ рдЫреЛрдЯреЗ рдореИрдХреНрд░реЛ рд╣реИрдВ
.MACRO USART_SEND_ASYNC outi UDR0, @0 .ENDMACRO
рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо USART рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рд░реБрдХрд╛рд╡рдЯ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ USART_SEND_ASYNC рдХреЗ рдмрдЬрд╛рдп рдиреАрдЪреЗ рдореИрдХреНрд░реЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ
.MACRO USART_SEND USART_Transmit: xin TempL, UCSR0A sbrs TempL, UDRE0 rjmp USART_Transmit outi UDR0, @0 .ENDMACRO
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╣рдо рдкреЛрд░реНрдЯ рдСрдХреНрдпреВрдкреЗрдВрд╕реА рдЪреЗрдХрд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдбреЗрдЯрд╛ рддрднреА рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬрдм рдкреЛрд░реНрдЯ рдлреНрд░реА рд╣реЛред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдкрд░рд┐рдзреАрдп рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдпрд╣ рддрд░реАрдХрд╛ рдХрд┐рд╕реА рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рди рдХрд┐ рдХреЗрд╡рд▓ USART рдХреЗ рд▓рд┐рдП ред
рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
рдЖрдЗрдП рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдб рдХреА рддреБрд▓рдирд╛ рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЗрдВ рдЬреЛ рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!" рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ UART рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЯрд░реНрдорд┐рдирд▓ рдХреЗ рд▓рд┐рдПред
RESET: ldi r16, high(RAMEND) out SPH,r16 ldi r16, low(RAMEND) out SPL,r16 USART_Init: out UBRR0H, r17 out UBRR0L, r16 ldi r16, (1<<RXEN0)|(1<<TXEN0) out UCSRnB,r16 ldi r16, (1<<USBS0)|(3<<UCSZ00) out UCSR0C,r16 ldi ZL, LOW(STR<<1) ldi ZH, HIGH(STR<<1) LOOP: lpm r16, Z+ or r16,r16 breq END USART_Transmit: in r17, UCSR0A sbrs r17, UDRE0 rjmp USART_Transmit out UDR0,r16 rjmp LOOP END: rjmp END STR: .DB тАЬHello world!тАЭ,0
рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ
.INCLUDE тАЬmacro.incтАЭ .EQU FOSC = 16000000 .EQU CLK8 = 0 RESET: ldiw SP, RAMEND; USART_INIT 19200, 8, "N", 1 ldiw Z, STR<<1 LOOP: lpm TempL, Z+ test TempL breq END USART_SEND TempL rjmp LOOP END: rjmp END STR: .DB тАЬHello world!тАЭ,0
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред рджреЛрдиреЛрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдХреНрд░реЛрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдХреЛрдб рдХреЛрдб рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдФрд░ рдкрдардиреАрдп рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди рдЖрдкрдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЖрджреЗрд╢ рдХреЛрдб рдмрдирд╛рдП рдмрд┐рдирд╛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЖрджреЗрд╢ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЦрд╛рдореА рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдбреЗрдЯрд╛ рдХреЛ "рдлреЙрд░рд╡рд░реНрдб" рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп рдЕрдиреБрдореЗрдп рд╕рдВрдЪрд╛рд▓рди рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдорд╛рдирдХреЛрдВ рд╕реЗ рдмрд╣реБрдд рдорд╛рдореВрд▓реА рдмрд╛рдд рдХрд╣ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддрд┐рдмрдВрдз рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛрдЬрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦрдирд╛ jmp / rjmp рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдЖрджреЗрд╢ рджреЗрддрд╛ рд╣реИ рдФрд░ рдЬрдЯрд┐рд▓ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдореИрдХреНрд░реЛ рдХреЗ рдХреЛрдб рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рддрд╛ рд╣реИред