Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Это рыба для индикации (не тестировал пока). 2(вх)-4(вых) декодер всё-таки по заданию буду пользовать, что отразил в коде. Походу они только сдвоенные бывают.
; Обработчик прерывания от нулевого таймера
; Нулевой таймер всего 8-разрядный, поэтому больших задержек на нём
; не получить. Он у нас отвечает за быстрое переключение самих индикаторов
TIM0_OVF:
; сохраняем статус регистр
in StatReg, SREG
; Здесь мы постоянно перебираем индикаторы
; Динамическая индикация короче.
; Текущие символы находятся в регистрах r5,r6,r7
inc Dig ; переходим к следующему разрядуsbrc Dig, 2 ; обнуляем значение разряда, если превысело 3 (всего: 0,1,2)
clr Dig
Digit1:
; Первый разряд индикатора (считать слева направо ->)
cpi Dig, 0
brne Digit2out PORTB, r5 ; вывод символа на порт
; Устанавливаем адресные выходы
sbi DDRC, DDC6
sbi DDRC, DDC7
cbi PORTC, PINC6 ; - 00
cbi PORTC, PINC7 ; /rjmp NoDig
Digit2:
; Второй разряд
cpi Dig, 1
brne Digit3out PORTB, r6 ; вывод символа
; Устанавливаем адресные выходы
sbi DDRC, DDC6
sbi DDRC, DDC7
cbi PORTC, PINC6 ; - 01
sbi PORTC, PINC7 ; /rjmp NoDig
Digit3:
; Третий разряд
cpi Dig, 2
brne NoDigout PORTB, r7 ; вывод символа
; Устанавливаем адресные выходы
sbi DDRC, DDC6
sbi DDRC, DDC7
sbi PORTC, PINC6 ; - 10
cbi PORTC, PINC7 ; /NoDig:
; Изменяем счётчик TCNT0 таймера Timer0
ser _tmp
out TCNT0, _tmp; Восстанавливаем статус регистр
out SREG, StatReg
reti; TIM0_OVF