 |
|
|
|
| Благодарности и т.д. |
| Ветка полезна ... буду почитывать |
|
100% |
[ 9 ] |
| Уберите это безобразие! |
|
0% |
[ 0 ] |
|
| Всего проголосовало : 9 |
|
| Автор |
Сообщение |
DL36 Живет здесь... (>100)

Зарегистрирован: 04.10.2006 Сообщения: 192 Откуда: Херсон
|
Добавлено: 30 Янв 2008, 17:16 Заголовок сообщения: |
|
|
Еще один вариант задержки.
Задается в виде байта, ограничения для частоты кварца 40 мГц - 80 мкс.
Ошибки задержки в примере ХайТека связаны с проблемами целочисленного деления.
Поскольку как правило величина задержки известна на момент компмляции то слегка
изменив текст можно добиться более высокой точности.
Применяется так DelayUs(50);
Рекомендуется заменить этим текстом задержку от ХайТека в примерах файл delay.h.
| Код: |
#ifndef XTAL_FREQ
#define XTAL_FREQ 4MHZ /* Crystal frequency in MHz */
#endif
#define MHZ *1000L /* number of kHz in a MHz */
#define KHZ *1 /* number of kHz in a kHz */
#define DelayUs(x) { unsigned char _dcnt; \
_dcnt = (((long)(x))*(long)(XTAL_FREQ))/(long)(12MHZ); \
while(--_dcnt != 0) \
continue; }
/*
#define DelayUs(x) \
{\
unsigned char _dcnt; \
_dcnt = (unsigned char)((x)*((XTAL_FREQ*1.0)/(12MHZ))); \
while(--_dcnt != 0) continue;\
}
*/
extern void DelayMs(unsigned char);
|
|
|
| Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете добавлять вложения в этом форуме Вы можете просматривать вложения в этом форуме
|
|