−50
- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
Timer_Overflow_Interrupt(void)
{
switch(TMR_State) // Обработчик прерывания по переполнению
{
case 0:
{
Clr_Pin(); // Вывод в 0
TCNT = 255-100; // Задержка в 100 (до переполнения)
TMR_State = 1; // Следующая стадия 1
Break; // Выход
}
case 1:
{
Set_Pin();
TCNT = 255-1;
TMR_State = 2;
Break;
}
case 2:
{
Clr_Pin();
TCNT = 255-5;
TMR_State = 3;
Break;
}
case 3:
{
Set_Pin();
TCNT = 255-2;
TMR_State = 4;
Break;
}
case 4:
{
Clr_Pin();
TCNT = 255-3;
TMR_State = 5;
Break;
}
case 5:
{
Set_Pin();
TCNT = 255-4;
TMR_State = 6;
Break;
}
case 6:
{
Clr_Pin();
Timer_OFF(); // Выключаем таймер. Работа окончена
TMR_State = 0; // Обнуляем состояние
Break;
}
default: break;
}
}
http://easyelectronics.ru/avr-uchebnyj-kurs-konechnyj-avtomat.html
А не лучше ли сделать массив указателей на функции, каждая из которых будет соответствовать case-у, и пусть там оно вызывает из массива фукнцию под номером TMR_State? Притом вот эту хню TMR_State = 1; TMR_State = 2; TMR_State = 3; которая дублируется во всех этих case-ах, ее ж можно хуйнуть всего один раз, типа TMR_State = (TMR_state+1)%7. Хотя для AVR контроллеров это скорее всего будет дорогая операция, так что можно хуйнуть TMR_State = TMR_state == 7 ? 0 : TMR_state+1;
Запостил:
j123123,
20 Июля 2016
Кесарево кесарю, богу божье.
Do one thing and do it well.
разве как и под сисдмином подразумевается офисный эникей
последний регистр, который можно было увидеть глазами, был наверное годах в 60х. Ламповый такой.
ого, это даже не 60е, это еще раньше)
собери-ка лучше сумматор или дешифратор, например
З.Ы. И дешифратор для семисигментника.
Что это?
Я, к сожалению, ни с чем таким не игрался. Только с компьютером, и то чисто софтварно.
Ну и у отца на работе подрабатывал - всякую фигню для управления двигателями, титанами и прочими няшками на пускателях собирал. Зарядник ебических масштабов для автопогрузчика.
Потом комп пытался спаять по схеме из журнала, половина даже работала... В итоге забил когда появился настоящий комп :(
В общем, ничего особо серьёзного...
Но вообще это круто, на самом деле. Чем раньше человек начал, и чем более лоу левел были его первые эксперементы, тем более он годный компьютерщик.
Иди вон http://www.zachtronics.com/kohctpyktop-engineer-of-the-people/ проходи, а потом ставь http://www.cburch.com/logisim/ и делай свой процессор.
Чем лучше? Как ты их переключать собрался?
Ещё бывают поляризованные реле с контактами без возвращающей пружины: если к катушке приложить напряжение одной полярности, то контакты переключатся в одну сторону; если поменять полярность, то переключатель пойдёт в противоположную сторону; в покое последнее состояние сохраняется, если сильно не трясти.
А зачем массив и индекс? Просто указатель на функцию. Один на весь автомат.
Ну static в сишку слава богу завезли. И единицы трансляции тоже. Так что юзай и наслаждайся инкапсуляцией ;)
> не использовали локальные переменные в функцях
Приписывай к глобалкам префикс g_, например.
double g_constant = 6.67408e-11
А то ещё подумаешь, что в g_constant лежит не G, а g которое 9.8...
Хех, на tiny 13 эта "дорогая операция" съедала, емнип, 25% флеша.
Регистронезависимость в Си?