Код: Выделить всё
WsOut: //вывод данных
push DataReg; копируем в стек DataReg
ldi Counter,8;устанвливаем счетчик в8
m1:
lsl DataReg; << старший бит выдвигается в С регистра SREG
brcs C_1 ; проверяем флаг С , если 1 то переходим на C_1
brcc C_0 ; проверяем флаг С , если 0 то переходим на C_0
m2: ; сюда вернемся после обработки подпрограммы
dec Counter ; C--
cpi Counter,0; сравниваем значение счетчика с нулем
brne m1;переходим на m1 если не нулевой результат
pop DataReg; извлекаем из стека DataReg
ret; конец подпрограммы
C_0: //если флаг С в регистре SREG равен0
sbi PORTB,0 //установить в 1 бит 0 порта B
nop nop nop; держим 0,333 мкс
cbi PORTB,0 //установить в 0 бит 0 порта В
nop nop nop ;держим 0,9167 мкс
nop nop nop
rjmp m2; возвращаемся в подпрограмму вывода данных
C_1: //если флаг С в регистре SREG равен1
sbi PORTB,0 //установить в 1 бит 0 порта B
nop nop nop ; держим 0,8333 мкс
nop nop nop
nop nop nop
cbi PORTB,0 //установить в 0 бит 0 порта В
//держим 0,4167 мкс
rjmp m2; возвращаемся в подпрограмму вывода данных
Реализацию самих световых эффектов хочу сделать на си, так как это проще и лучше. Вопрос в следующем, как этот кусок кода оформить в виде сишной функции, и скормить компилятору? Поиск в гугле явных ответов не дал,вопросов стало только еще больше. Огромное спасибо за понимание


