Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ
Out OCR2, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2. Out OCR2, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2. Mov r26, r6 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π² ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ². Mov r25, r5 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π² ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ². Mov r25, r5 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΡΠ΅Π½ ΡΡΡ Π² ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½ ΡΡΡ. Mov r24, r4 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
include «m8def.inc» //ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ.
org 0.
rjmp reset //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΊ Π½Π°ΡΠ°Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
//++++++++++ ΡΠ°Π±Π»ΠΈΡΠ° Π²Π΅ΠΊΡΠ°ΡΠΎΠ² ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ++++++++++++++++++++++++++++++++++++++++++.
.org 1 nop //rjmp EXT_INT0;
.org 2 nop //rjmp EXT_INT1;
.org 3 nop //rjmp TIM2_COMP;
.org 4 rjmp TIM2_OVF;
.org 5 nop //rjmp TIM1_CAPT;
.org 6 rjmp TIM1_COMPA;
.org 7 nop //rjmp TIM1_COMPB.
.org 8 nop //rjmp TIM1_OVF.
.org 9 nop //rjmp TIM0_OVF;
.org 10 nop //rjmp SPI_STC;
.org 11 nop //rjmp USART_RXC;
.org 12 nop //rjmp USART_UDRE;
.org 13 nop //rjmp USART_TXC;
.org 14 nop //rjmp ADC;
.org 15 nop //rjmp EE_RDY;
.org 16 nop //rjmp ANA_COMP;
.org 17 nop //rjmp TWI;
.org 18 nop //rjmp SPM_RDY;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
reset:
//************** Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ **********************************************.
ldi r19, high (RAMEND) //ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΊΠ°.
out sph, r19 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΊΠ°.
ldi r19, low (RAMEND) //ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΈΠΆΠ½ΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΊΠ°.
out spl, r19 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π½ΠΈΠΆΠ½ΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΡΠ΅ΠΊΠ°.
ldi r16,0xfc.
out ddrc, r16 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎΡΡΠ° C.
ldi r16,0xDf.
out ddrd, r16 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎΡΡΠ° D.
ldi r16,0xff.
out ddrb, r16 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎΡΡΠ° B.
ldi r16,0×04.
out pinc, r16 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎΡΡΠ° C Π² Π΅Π΄Π΅Π½ΠΈΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ.
ldi r16,0×01.
out pinb, r16 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎΡΡΠ° B.
ldi r17,0.
mov r0, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΅Π΄Π΅Π½ΠΈΡ.
mov r1, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ².
mov r2, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΎΡΠ΅Π½.
mov r3, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΡΡΡ.
mov r4, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
mov r5, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
mov r6, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΎΠ².
mov r7, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠ΄ΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
inc r7.
ldi r19,0 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ Π΄ΠΎΠ»ΠΈ.
ldi r17,1.
mov r10, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ΅ΠΆΠΈΠΌΠ° ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠΎΡΠ½ΠΎΡΡΡ 1 ΠΡ).
//******************* Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΡ1 *********************************************.
ldi r17,(0<<
out TIMSK, r17 //ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠ°/ΡΡΠ΅ΡΡΠΈΠΊΠ° Π’1.
ldi r17,(0<<<<<
out TCCR1A, r17 //ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’1 — normal.
ldi r17,(0<<<<<<<
out TCCR1B, r17 //ΡΠ°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1H, r17.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1L, r17.
ldi r17,0×00 //Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΎΡΠΈΠΌΡΠ΅ Π² ΡΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’1.
out OCR1AH, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’1.
ldi r17,0×09 //Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΎΡΠΈΠΌΡΠ΅ Π² ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’1.
out OCR1AL, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’1.
sei.
//*************************************************************************************************.
//******************* Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΠ°ΠΉΠΌΠ΅ΡΡ2 *********************************************.
ldi r17,(0<<<<
out TIMSK, r17 //ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠΌΠ΅ΡΠΎΠ²/ΡΡΠ΅ΡΡΠΈΠΊΠΎΠ² Π’2 ΠΈ T1.
ldi r17,(0<<<<<<<<
out TCCR2, r17 //ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’1 — normal (CS), clk/1024(WGM), ΡΠ°ΠΉΠΌΠ΅Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ ΠΎΡ OC2(COM).
ldi r17,(0<
out ASSR, r17 //ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ.
ldi r17,244 //Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΎΡΠΈΠΌΡΠ΅ Π² Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2.
out OCR2, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2.
ldi r17,24 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 2.
out TCNT2, r17.
sei.
//*************************************************************************************************.
//************ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΠΈΠΊΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ************************************************************.
cycle:
ldi r16,0b10000000 //Π·Π°ΠΆΠ΅ΡΡ 1-ΡΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r19 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ Π΄ΠΎΠ»ΠΈ.
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
ldi r16,0b01000000 //Π·Π°ΠΆΠ΅ΡΡ 2-ΠΎΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r20 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅Π΄Π΅Π½ΠΈΡ.
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
sbrc r10,1 //Π΅ΡΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡ 1 ΠΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
cbi PORTB, 7 //ΠΏΠΎΠ³Π°ΡΠΈΡΡ ΡΠΎΡΠΊΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·ΡΡΠ΄Π° Π΅Π΄ΠΈΠ½ΠΈΡ.
sbrc r10,0 //Π΅ΡΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡ 0,1 ΠΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
sbi PORTB, 7 //Π·Π°ΠΆΠ΅ΡΡ ΡΠΎΡΠΊΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·ΡΡΠ΄Π° Π΅Π΄ΠΈΠ½ΠΈΡ.
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
ldi r16,0b00010000 //Π·Π°ΠΆΠ΅ΡΡ 3-ΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r21 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅Π½.
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
ldi r16,0b00001000 //Π·Π°ΠΆΠ΅ΡΡ 4-ΡΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r22 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΡΡΡ.
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
ldi r16,0b00000100 //Π·Π°ΠΆΠ΅ΡΡ 5-ΡΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r23 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
ldi r16,0b00000010 //Π·Π°ΠΆΠ΅ΡΡ 6-ΠΎΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r24 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
ldi r16,0b00000001 //Π·Π°ΠΆΠ΅ΡΡ 7-ΠΎΠΉ ΡΠ°Π·ΡΡΠ΄ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ°.
out PORTD, r16.
mov r16, r25 //Π·Π°Π½Π΅ΡΡΠΈ Π² Π±ΡΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
rcall write_symbol_7SEG //Π²ΡΠ²Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° 7-ΠΌΠΈ ΡΠ΅Π³ΠΌΠ΅Π½ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ
rcall delay_20ms //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π΄Π΅ΡΠΆΠΊΡ.
sbis PINC, 0 //ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°ΠΆΠ°ΡΠ° Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°1, Π΅ΡΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ 0 ΠΏΠΎΡΡΠ° Π‘ = 0 — Π½Π°ΠΆΠ°ΡΠ°.
rcall KNOPKA1.
sbis PINC, 1 //ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°ΠΆΠ°ΡΠ° Π»ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°2, Π΅ΡΠ»ΠΈ Π²ΡΠ²ΠΎΠ΄ 1 ΠΏΠΎΡΡΠ° Π‘ = 0 — Π½Π°ΠΆΠ°ΡΠ°.
rcall KNOPKA2.
rjmp cycle //Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
KNOPKA1:
sbis PINC, 0 //Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ ΠΎΡΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ 1.
rjmp KNOPKA1 //Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡ.
ldi r17,1 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΡΡΠΎΡΠΎΠΌΠ΅ΡΠ° 1 ΠΡ.
mov r10, r17.
sbi PORTC, 2 //Π·Π°ΠΆΠ΅ΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ 1.
cbi PORTC, 3 //ΠΏΠΎΠ³Π°ΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ 2.
ldi r19,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΅Π΄Π΅Π½ΠΈΡ.
ldi r20,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠΎΠ².
ldi r21,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½.
ldi r22,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΡΡΡΡ.
ldi r23,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
ldi r24,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
ldi r25,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
ldi r26,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄.
ret.
KNOPKA2:
sbis PINC, 1 //Π·Π°Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ ΠΎΡΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ 2.
rjmp KNOPKA2 //Π·Π°ΡΠΈΠΊΠ»ΠΈΡΡ.
ldi r17,2 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΎΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΡΡΠΎΡΠΎΠΌΠ΅ΡΠ° 0,1 ΠΡ.
mov r10, r17.
sbi PORTC, 3 //Π·Π°ΠΆΠ΅ΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ 2.
cbi PORTC, 2 //ΠΏΠΎΠ³Π°ΡΠΈΡΡ ΡΠ²Π΅ΡΠΎΠ΄ΠΈΠΎΠ΄ 1.
ldi r19,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΡΡ Π΄ΠΎΠ»Π΅ΠΉ.
ldi r20,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΅Π΄Π΅Π½ΠΈΡ.
ldi r21,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠΎΠ².
ldi r22,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½.
ldi r23,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΡΡΡΡ.
ldi r24,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
ldi r25,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
ldi r26,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
ret.
TIM1_COMPA:
inc r0 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ Π΅Π΄Π΅Π½ΠΈΡ.
mov r17, r0.
subi r17,10 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΡΠ΄Π°.
brcc dec_inc //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
rjmp end_TIM1_COMPA //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
dec_inc:
inc r1 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ Π΄Π΅ΡΡΡΠΊΠΎΠ².
ldi r17,0.
mov r0, r17 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΅Π΄Π΅Π½ΠΈΡ.
mov r17, r1.
subi r17,10 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΡΠ΄Π°.
brcc sot_inc //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
rjmp end_TIM1_COMPA //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
sot_inc:
inc r2 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΎΡΠ΅Π½.
ldi r17,0.
mov r1, r17 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠ°Π².
mov r17, r2.
subi r17,10 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΡΠ΄Π°.
brcc tis_inc //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
rjmp end_TIM1_COMPA //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
tis_inc:
inc r3 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΡΡΡΡ.
ldi r17,0.
mov r2, r17 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½.
mov r17, r3.
subi r17,10 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΡΠ΄Π°.
brcc edn_tis_inc //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
rjmp end_TIM1_COMPA //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
edn_tis_inc:
inc r4 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
ldi r17,0.
mov r3, r17 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΡΡΡΡ.
mov r17, r4.
subi r17,10 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΡΠ΄Π°.
brcc dec_tis_inc //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
rjmp end_TIM1_COMPA //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
dec_tis_inc:
inc r5 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
ldi r17,0.
mov r4, r17 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
mov r17, r5.
subi r17,10 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π·ΡΡΠ΄Π°.
brcc sot_tis_inc //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
ldi r17,0.
mov r6, r17 //ΡΠ±ΡΠΎΡΡΡ ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
rjmp end_TIM1_COMPA //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ ΠΏΠΎΡΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
sot_tis_inc:
ldi r17,1 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² Π΅Π΄Π΅Π½ΠΈΡΡ ΡΠ°ΡΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
mov r6, r17.
ldi r17,0.
mov r5, r17 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
end_TIM1_COMPA:
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ°ΡΡΠΈΠΉ Π±Π°ΠΉΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1H, r17.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠΉ Π±Π°ΠΉΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1L, r17.
reti.
//———-;
//ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ°2.
TIM2_OVF:
sbrc r10,0 //Π΅ΡΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡ 1 ΠΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
rjmp accuracy_1Hz //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ΄ ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 1 Ρ.
sbrc r10,1 //Π΅ΡΠ»ΠΈ Π²ΡΠ±ΡΠ°Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡ 0,1 ΠΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ.
rjmp accuracy_01Hz //ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π° ΠΊΠΎΠ΄ ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 10 Ρ.
accuracy_01Hz:
inc r7 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ².
mov r17, r7.
subi r17,160 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ 10 Ρ (160 ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ²).
brcc save_fr01 //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
ldi r17,0.
out TCNT2, r17 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 2.
reti //Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
save_fr01:
in r19, TCNT1L //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ°1 Π² ΡΠ°Π·ΡΡΠ΄ Π΄Π΅Ρ Π΄ΠΎΠ»Π΅ΠΉ.
mov r20, r0 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΠ°Π·ΡΡΠ΄ Π΅Π΄Π΅Π½ΠΈΡ.
mov r21, r1 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ² Π² ΡΠ°Π·ΡΡΠ΄ Π΄Π΅ΡΡΡΠΊΠΎΠ².
mov r22, r2 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΡΠ΅Π½ Π² ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½.
mov r23, r3 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΡΡΡΡ Π² ΡΠ°Π·ΡΡΠ΄ ΡΡΡΡΡ.
mov r24, r4 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π΄Π΅Ρ ΡΡΡ Π² Π΄Π΅Ρ ΡΡΡ.
mov r25, r5 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΡΠ΅Π½ ΡΡΡ Π² ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½ ΡΡΡ.
mov r26, r6 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π² ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
ldi r17,0.
mov r0, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΅Π΄Π΅Π½ΠΈΡ.
mov r1, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ².
mov r2, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΎΡΠ΅Π½.
mov r3, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΡΡΡ.
mov r4, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
mov r5, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
mov r6, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΎΠ².
mov r7, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠ΄ΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ldi r17,244 //Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΎΡΠΈΠΌΡΠ΅ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2.
out OCR2, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1H, r17.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1L, r17.
ldi r17,23 //Π·Π°Π½Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ°2.
out TCNT2, r17.
reti //Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
accuracy_1Hz:
inc r7 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ².
mov r17, r7 //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ 1 Ρ (16 ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΎΠ²).
subi r17,16.
brcc save_fr1 //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
ldi r17,0.
out TCNT2, r17 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 2.
reti //Π²ΡΠΉΡΠΈ ΠΈΠ· ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ.
save_fr1:
in r19, TCNT1L //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΠ°Π·ΡΡΠ΄ Π΅Π΄Π΅Π½ΠΈΡ.
mov r20, r0 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ².
mov r21, r1 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΡΠ΅Π½ Π² ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½.
mov r22, r2 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΡΡΡΡ Π² ΡΠ°Π·ΡΡΠ΄ ΡΡΡΡΡ.
mov r23, r3 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π΄Π΅Ρ ΡΡΡ Π² Π΄Π΅Ρ ΡΡΡ.
mov r24, r4 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΎΡΠ΅Π½ ΡΡΡ Π² ΡΠ°Π·ΡΡΠ΄ ΡΠΎΡΠ΅Π½ ΡΡΡ.
mov r25, r5 //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² Π² ΡΠ°Π·ΡΡΠ΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ².
mov r26, r6.
ldi r17,0.
mov r0, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΅Π΄Π΅Π½ΠΈΡ.
mov r1, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ².
mov r2, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΎΡΠ΅Π½.
mov r3, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΡΡΡ.
mov r4, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° Π΄Π΅ΡΡΡΠΊΠΎΠ² ΡΡΡΡΡ.
mov r5, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠΎΡΠ΅Π½ ΡΡΡΡΡ.
mov r6, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΎΠ².
mov r7, r17 //Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠ° ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΎΠ΄ΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ldi r17,244 //Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π°Π½ΠΎΡΠΈΠΌΡΠ΅ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2.
out OCR2, r17 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°ΠΉΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠΌΠ΅ΡΠ° Π’2.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1H, r17.
ldi r17,0 //ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ°ΠΉΠΌΠ΅ΡΠ° 1.
out TCNT1L, r17.
ldi r17,13 //Π·Π°Π½Π΅ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² ΡΡΠ΅ΡΡΠΈΠΊ ΡΠ°ΠΉΠΌΠ΅ΡΠ°2.
out TCNT2, r17.
reti.
//—————————;
/////////// ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ Π½Π° 10 ΡΠΈΠΊΠ»ΠΎΠ² //////////////////////////////////////////////.
delay10:
ldi r21,10 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ.
ldi r20,0 //ΡΠ±ΡΠΎΡΠΈΡΡ ΡΡΠ΅ΡΡΠΈΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ.
inc10:
inc r20 //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΅ΡΡΠΈΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ.
cpse r20, r21 //ΡΡΠ°Π²Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΈ ΡΡΠ΅ΡΡΠΈΠΊ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ.
rjmp inc10 //Π²Π΅ΡΠ½ΡΡΡΡΡ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° (r20.
ret.
////// ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ////////.
delay_100ms:
; =============================.
; delay loop generator.
; 1 600 000 cycles:
; ——————————————;
; delaying 1 599 999 cycles:
ldi R22, $f1.
WGLOOP0100: ldi R23, $ 1E.
WGLOOP1100: ldi R24, $ 0D.
WGLOOP2100: dec R24.
brne WGLOOP2100.
dec R23.
brne WGLOOP1100.
dec R22.
brne WGLOOP0100.
; ——————————————;
; delaying 1 cycle:
nop.
; =============================.
ret.
////// ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ ////////.
delay_20ms:
; =============================.
; delay loop generator.
; 1 600 000 cycles:
; ——————————————;
; delaying 1 599 999 cycles:
ldi R27, $ 11.
WGLOOP020: ldi R28, $ 11.
WGLOOP120: ldi R29, $ 0D.
WGLOOP220: dec R29.
brne WGLOOP220.
dec R28.
brne WGLOOP120.
dec R27.
brne WGLOOP020.
; ——————————————;
; delaying 1 cycle:
nop.
; =============================.
ret.
/////////// ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΠ΅ΡΠ½Π°Π΄ΡΠ°ΡΠΈΡΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° Π² Π΄Π²ΠΎΠΈΡΠ½ΠΎ-Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠ΅ //////////////.
hex_to_binary_decimal:
ldi r19,0.
mov r20, r18.
div10:
subi r20,10.
brcs div10_end //ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡ, C = 1.
inc r19.
rjmp div10.
div10_end:
subi r20,246.
mov r18, r20.
ret.
write_symbol_7SEG:
// ldi r17,0×00.
ldi zl, 0×00 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ»Π°Π΄ΡΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ.
ldi zh, 0×04 //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ°ΡΡΠΈΠΉ ΡΠ°Π·ΡΡΠ΄ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ.
clc //ΡΠ±ΡΠΎΡ ΡΠ»Π°Π³Π° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° Π·Π°Π΅ΠΌΠ° C = 0.
adc zl, r16 //ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ Π°Π΄ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΊ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌΡ Π°Π΄ΡΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡΡ.
lpm r16, z //ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² Π±ΡΡΠ΅Ρ
out PORTB, r16 //Π²ΡΠ²Π΅ΡΡΠΈ ΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² ΠΏΠΎΡΡ.
ret.
org 512.
db 0b11000000/*0*/, 0b11111001/*1*/, 0b10100100/*2*/, 0b10110000/*3*/, 0b10011001/*4*/, 0b10010010/*5*/,.
0b10000010/*6*/, 0b11111000/*7*/, 0b10000000/*8*/, 0b10010000/*9*/.