никак не могу после асма правильно юзать си. Вчерась люди меня поругали за нерациональность написания, вот часть моей программа
N_bit=34; // Кол-во передаваемых бит
while (N_bit>0) // полная передача команды
{
bit_stat_1 = st_bit;
if (N_bit==34) // определяем наличие статрового бита
{
bit_stat_1 = start_1;
bit_stat_2 = start_2;
if (repit==1)N_bit=1; // если команда повторяется
goto TX_BIT;
}
if (N_bit==1) // Передача законченна , пауза
{
bit_stat_2 = pause ;
goto TX_BIT;
}
if (tx_byte & (1UL<<(N_bit-2))) // Выполняем если текущий бит "1"
{
bit_stat_2 = one;
goto TX_BIT;
}
else
{
bit_stat_2 = zero;
goto TX_BIT;
};
TX_BIT:
//=========================== Transmit BIT ===========================================
number_ovf=0; // обнуляем счётчик
mod_ON // Включили модуляцию
out_led=1; // Высокий уровень управления светодиодом
Start_Timer // Запуск таймера
number_ovf=0; // обнуляем счётчик
while (number_ovf<bit_stat_1); // передаём первую часть бита
#asm ("nop");
number_ovf=0; // обнуляем счётчик
mod_OFF // Включили модуляцию
out_led=0; // Низкий уровень управления светодиодом
while (number_ovf<bit_stat_2); // передаём вторую часть бита
N_bit--; // Счётчик-1
}
программа полностью рабочая..
Как поизящнее это изобразить на языке си
может есть где почитать про общую концепцию написания программ на языке си..
Спасибо!