BlkDem писал(а):но пишу на низком уровне на Си на уровне регистров
BlkDem писал(а):И далеко не всегда прошиваю загрузчик, т.к. он жрет от 0,5 до 1 кБ флэша.
Bubaylo писал(а):на каком Си и при чем тут низкий уровень?
pinMode(9, OUTPUT); //конфигурируем пин на выход
digitelWrite(9, HIGH); //устанавливаем логическую 1 на пине
DDRB |= B00001000;
PORTB |= B00001000;
Bubaylo писал(а):А это как делается?
DDRB |= B00001000;
PORTB |= B00001000;
BlkDem писал(а):Поверь, ты еще не готов к ответам
Bubaylo писал(а):А эти переменные откуда берутся?
Bubaylo писал(а):pinMode(9, OUTPUT) - просто получает адрес из уже заложенной карты памяти, записывает по адресу байт.
Bubaylo писал(а): правда в средах ООП, но мозга хватит
Bubaylo писал(а):Интересно, а можно ли как-то скрестить дуину с ней?=)
BlkDem писал(а):Но она умеет и позволят делать как ассемблерные вставки, так и работать напрямую с регистрами на Си.
Bubaylo писал(а):Конечно можно.Только что ты хочешь использовать? Какие функции?
Страусь писал(а):лишь до регистров ввода-вывода
Страусь писал(а):Вставки на asm могут быть?
#include <avr/io.h>
#include <avr/interrupt.h>
ISR( TIMER1_OVF_vect )
{
TCNT1 = 64456; //выставляем начальное значение TCNT1
if( PINB & ( 1 << PB0 ) ) {
PORTB &= ~( 1 << PB0 );
}
else {
PORTB |= ( 1 << PB0 );
}
}
int main()
{
DDRB = ( 1 << PB0 ); // настраиваем PB0 на выход
TCCR1B = (1<<CS12)|(0<<CS11)|(1<<CS10); // настраиваем делитель
TIMSK |= (1<<TOIE1); // разрешаем прерывание по переполнению таймера
TCNT1 = 64456; // выставляем начальное значение TCNT1
sei(); // выставляем бит общего разрешения прерываний
while(1); // вечный цикл
return 0;
}
TCCR1B = (1<<CS12)|(0<<CS11)|(1<<CS10); // настраиваем делитель
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0