Страница 1 из 1

Помогите ПОЖАЛУЙСТА С Vdelay_ms(), лапы почьти повесил

Добавлено: Пн янв 09, 2012 22:38:48
tal85
:cry:
Всем здравствуйте, смысл такой, есть группа светодиодов подключенных к порту B микроконтроллера PiC 16f628A, я заставляю их мигать через функцию задержки Delay_ms() и все нормально работает, но мне нужно использовать функцию задержки в которую можно подставлять переменную - это Vdelay_ms(), т.е. изменяемая задержка, но когда я прошиваю контроллер не один из светодиодов вообще не горит. Вопрос в следующем, почему не работает схема с функцией Vdelay_ms(), самое что интересное в протеусе все нормально и корректно работает, а в железе нет?

Не подумайте что у меня не получается и я сразу пишу на форум, нет, просто я облазил весь интернет - русский, англицкий и нигде ничего более полезного чем Vdelay_ms() является стандарной функцией и ее исходник лежит в папке с программой не нашел. Я скопировал код функции и вставил ее в проект, откомпилировал, запустил дебаггер - все работает как часики, ни к каким внешним файлам не обращается, в протеусе все тоже работает как надо, но в железе кирдык. Пользуюсь компилятором mikroC PRO for PIC 4.6.
Частота кварца кстати 20МГц.

ПОМОГИТЕ ПОЖАЛУЙСТА, а то уже 3 вечера убил на это дело, а результата - 0 :kill:

Листинг программы:

void V1Delay_ms(unsigned int pause)
{
unsigned long NumberOfCyc;
NumberOfCyc = Clock_kHz()>>2; // this will be done by compiler, no asm will be genereated except that for assignment;
NumberOfCyc *= pause;
if (NumberOfCyc < 690)
return;
NumberOfCyc -= 690;
NumberOfCyc = NumberOfCyc >> 5; // Dec and While below take around 32 instructions
while (NumberOfCyc--)
{
asm nop;
asm nop;
asm nop;
asm nop;
asm nop;
asm nop;
asm nop;
asm nop;
}
}
void main()
{
unsigned int pause;
TRISB=0;
PORTB=0;
while(1)
{
pause=100;
RB0_BIT=1;
RB1_BIT=1;
RB2_BIT=1;
RB3_BIT=1;
RB4_BIT=1;
RB5_BIT=1;
RB6_BIT=1;
RB7_BIT=1;
V1Delay_ms(pause);
RB0_BIT=0;
RB1_BIT=0;
RB2_BIT=0;
RB3_BIT=0;
RB4_BIT=0;
RB5_BIT=0;
RB6_BIT=0;
RB7_BIT=0;
V1Delay_ms(pause);
}
}

Заранее всем огромное спасибо :beer:

Re: Помогите ПОЖАЛУЙСТА С Vdelay_ms(), лапы почьти повесил

Добавлено: Ср янв 11, 2012 09:49:14
Shapa
Здравствуйте!
У вас в свойствах проекта выставлена тактовая частота процессора?
Если совсем совсем ничего не получится напишите свою функцию задержки

Код: Выделить всё

void myDealy(unsigned int delay)
{
unsigned int i;
for(i = 0; i < delay; i++)
Delay_ms(100);
}
Кстати, сколько работал mikroC очень он мне не нравится. Он слишком далеко ош ушел от стандартного си. И в угоду простоты разработки, разработчики много чего не реализовали