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

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
tal85
Родился
Сообщения: 3
Зарегистрирован: Сб дек 17, 2011 21:39:21

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

Сообщение 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:
Вложения
Безымянный.png
схема
(50.29 КБ) 486 скачиваний
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

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

Сообщение Shapa »

Здравствуйте!
У вас в свойствах проекта выставлена тактовая частота процессора?
Если совсем совсем ничего не получится напишите свою функцию задержки

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

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

Вернуться в «Микроконтроллеры и ПЛИС»