Т1.
) 1 об/хв
(4)
Приймаються До справ = 1024 (TCCR1B = 0x05)
Тоді
(5)
або TCNT1L = 0xBF, TCNT1H = 0xF6.
) 2 об/хв
В
За формулою (4) TCNT1 = 64350 або TCT1L = 0x5E, TCNT1H = 0xFB.
) 4 об/хв
По (5) TCNT1 = 64943 або TCT1L = 0xAF, TCNT1H = 0xFD.
об/хв
По (5) маємо TCNT1 = 65239 або TCT1L = 0xD7, TCNT1H = 0xFE.
) 100 об/хв
По (5) маємо TCNT1 = 65511 або TCT1L = 0xE7, TCNT1H = 0xFF.
) 200 об/хв
По (5) маємо TCNT1 = 65523 або TCT1L = 0xF3, TCNT1H = 0xFF.
) 400 об/хв
По (5) маємо TCNT1 = 65529 або TCT1L = 0xF9, TCNT1H = 0xFF.
Розрахуємо значення частоти для таймера Т2 за формулою
В
Виберемо значення До справ = 64 (ТССR2 = 0х04), а ТСNТ2 = 0. Тоді частота таймера Т2:
В
5.2 Лістинг програми
. include "m8535def.inc"
. cseg
. org 0 reset
. org 4; вектор переривання Т2 T2
. org $ 008; вектор переривання Т1T1; по переповнення
. org $ 20
. def vhod = r19
. def star = r20
. def ml = r21
. def obmotka = r22
. def hg = r23
. def smesh = r24
reset: r16, $ 5F; ініціалізація стекаspl, r16r16, $ 2sph, r16
; ініціалізація портів
ldi r16, $ FF r17 DDRA, r17; порт В на вхід PORTA, r16; підтягуємо резісториDDRС, r16 DDRB, r16DDRD, r16; порти B, С і D на вихід
; ініціалізація таймера T2r16, 0; зупинка Т2TCCR2, r16TCNT2, r16; f = 490 Гцr16, $ 04; До справ = 64 TCCR2, r16r16, $ 40; дозвіл переривань по переповнення Т1 і Т2TIMSK, r16
; ініціалізація Т1 r16, 0 r17, $ FFTCCR1A, r16; зупинка таймера Т1TCCR1B, r16TCNT1L, r16TCNT1H, r17r16, 0x05TCCR1B, r16r16, 0x44; дозвіл переривань по переповнення Т1 і Т2TIMSK, r16
ldi r31, 2obmotka, $ 01hg, $ 01 smesh; глобальне дозвіл
main: vhod, PINA; залежно від стану входу задаємо скоростьvhod, $ 0F