реклама на сайте
подробности

 
 
> PIC - глюки или руки кривы?
MiKruSoft
сообщение Jan 25 2005, 09:38
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 25-01-05
Из: МО
Пользователь №: 2 164



PIC16F877A. Пользую PICCLite c MPLABом. Есть функция, внутри в цикле вызов другой (используется для задержки). При работе периодически слетаю на другие адреса программы. Причем, даже в симуляторе. Отловил шаг, на котором это происходит - ничем не отличается от других. Это что, глюк или забыл что-то настроить в пике? cranky.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MiKruSoft
сообщение Jan 25 2005, 11:21
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 25-01-05
Из: МО
Пользователь №: 2 164



Логично smile.gif
Примерно так:
//*************
#define DelayUs() { ubyte i; i = 100; do {RE0 = 0; RE0 = 1;} while(--i); }
//-------------
void DelayM(unsigned char cnt)
{
ubyte inn;
do
{
inn = 10;
do
{
DelayUs(); //
}
while(--inn);
}
while(--cnt);
}
//-------------

main()
{
ubyte ind;
for(ind = 0; ind < 16; ind ++)
{
DelayM(100);
Write_DR(fr2[ind]); // байтовый массив
DelayM(100); // --------> слёт
}
}
//***************************
Слетает, когда ind имеет значение 5 (i и inn при этом могут быть разными). При слёте переменная ind сбрасывается в 0. И снова по кругу. Если цикл на уменьшение - ind не сбрасывается, а принимает начальное значение.
асм коду соответствует
------------------------------
Чувствую, что что-то криво, принимаю любые идеи %)
------------------------------
Vic: Про банки спасибо - уже смотрю smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 12th August 2025 - 05:11
Рейтинг@Mail.ru


Страница сгенерированна за 0.0138 секунд с 7
ELECTRONIX ©2004-2016