Вот они...
Вот они...
Код: Выделить всё
void main (void)
{
ADCON0 = 0; // цифровые выходы
TRISC = 0; /* PORTС на выход */
PORTC = 0;
counter = 0;
while (1)
{
_asm goto DS18_onpoc _endasm;
}
}Код: Выделить всё
void DS18_onpoc (void)
{
PORTCbits.RC2=0;
Delay10KTCYx(0.5/(freq*(250e-9)*10000)); //сигнал обнуления датчика ~500мкс
PORTCbits.RC2=1;
Delay10TCYx(10); //ждём паузу ~100мкс
DS = 0xCC;
goto transfer;Код: Выделить всё
Error [1111] undefined label 'transfer' in 'DS18_onpoc'Непонятно, зачем такие ...извращения с меткой. Просто вызывайте другую необходимую функцию.Chettuser писал(а):Вопрос такой: что мне сделать если нужно перейти из данной подпрограммы (функции?) в другую?
А почему вы так думаете? И что "говорит компилятор по поводу: _asm goto DS18_onpoc _endasm;?Из главной (main) то она переходит...
Просто так проще разбить программу на блоки, которые проще отлаживать отдельно. Да и больше согласуется с блок-схемами, которые я последнее время полюбил.ValBag писал(а):Непонятно, зачем такие ...извращения с меткой. Просто вызывайте другую необходимую функцию.
Приложите весь код (в виде файла)Chettuser писал(а):Ничего не говоритСоглашается и переходит
![]()
А вот из "вспомогательной" функции переходить в ещё одну вспомогательную не хочет...
Код: Выделить всё
#include <p18cxxx.h>
#include <delays.h>
#pragma config LVP = ON
const int freq=4; //опишем частоту осциллятора
int counter,DS;
void DS18_onpoc (void)
{
PORTCbits.RC2=0;
Delay10KTCYx(0.5/(freq*(250e-9)*10000)); //сигнал обнуления датчика ~500мкс
PORTCbits.RC2=1;
Delay10TCYx(8); //ждём паузу ~100мкс
DS = 0xCC;
_asm goto transfer _endasm;
}
void transfer (void)
{
return;
}
/*reception:
{
return;
}
// _asm goto v_ds18(void) _endasm; //переходим к отправке DS в DS18
return;
}*/
void main (void)
{
ADCON0 = 0; // цифровые выходы
TRISC = 0; /* PORTB на выход */
PORTC = 0;
counter = 0;
while (1)
{
_asm goto DS18_onpoc _endasm;
PORTC=1;
}
}Есть. А тут мне кажется без разницы что писать "_asm goto .... _endasm" или "goto .... ".ValBag писал(а):Так есть в ассемблере PIC команда goto ?
Спасибо, буду дальше искать, и еще один небольшой вопросик ) недавно откопал вот такого зверька - AT49F002NT - возможно ли его прошить пятью проводами или же другим и каким способом ?Chettuser писал(а):Попробуйте спросить здесь: http://www.master-electrix.at.ua/
Прошивают МК, а в память записывают.Wereww писал(а):AT49F002NT - возможно ли его прошить пятью проводами или же другим и каким способом ?
А если вот так поменять местами?diim писал(а):в чем проблема может быть?
а какая разница??? те-же яйца только вид с боку!Gudd-Head писал(а):А если вот так поменять местами?diim писал(а):в чем проблема может быть?
А что в регистрах DDRC, DDRD ?diim писал(а):в чем проблема может быть?
они настроены на выход!ValBag писал(а):А что в регистрах DDRC, DDRD ?diim писал(а):в чем проблема может быть?
Посмотрите в AvrStudio, может это глюк Proteus?diim писал(а):они настроены на выход!
Код: Выделить всё
DDRB=0x00;diim писал(а):PORTB=0b11111111;
PORTC=0b11111111;
PORTD=0b11111111;
diim писал(а):только PORTB присваивает единички!
На самом деле протеус в этом случае все равно отобразит на выходах единицу (порт на вход, подтяжка включена), если только его на землю не коротнуть. Другое дело почему на остальных портах единиц нету. В общем если уж выкладывать код, так целиком, можно и со схемой.Gudd-Head писал(а): Это немного (совсем чуть-чуть, самую малость) не сходится с тем, что вы писали раньше
ППЦ. На АСМе так не получится)diim писал(а):стёр закрывающую и открывающую фигурную скобку главного цикла программы while {};