Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
;Один шаг 256-зубой пилы ШИМ = ISR таймера
t0isr:
in stsav,SREG ;Сохраняем статус. STSAV - общий для всех невложенных прерываний
push temp ;Сохраняем временный рабочий регистр
inc pwm ;Добавляем очередной зуб к пиле ШИМ
cp r2,pwm ;Перенос=1 при Rx <= PWM rol tmp ;Вдвигаем перенос в рабочий регистр
cp r3,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r4,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r5,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r6,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r7,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r8,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
cp r9,pwm ;Перенос=1 при Rx <= PWM
rol tmp ;Вдвигаем перенос в рабочий регистр
out PORTA,tmp ;Выставляем ноги PWM 1..8
pop temp ;Восстанавливаем временный рабочий регистр
out SREG,stsav ;Восстанавливаем регистр статуса
reti
На С сам сделай по этому алгоритму. Были длинные дискуссии по этому поводу здесь и на Сахаре