ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

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*/.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ