Форум по разработке и ремонту электронной техники Киевский форум радиолюбителей и электронщиков. Форумы по разработке и ремонту электронной техники
    Схемы электрические принципиальныеГлавная    ФорумФорум    ПоискПоиск по форуму    Личные сообщенияФайлообменник    Личные сообщенияРадиотехнический каталог   

Фотогалерея   <b>Профиль</b>Ваш профиль    Личные сообщенияЛичные сообщения    ГруппыГруппы   

FAQFAQ    РегистрацияРегистрация    ВходВход

Уважаемые посетители! Это старая версия форума. Новая версия находится по адресу: http://www.remexpert.com
"Хитрости кода" ...
На страницу Пред.  1, 2
 
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС...
 

Благодарности и т.д.
Ветка полезна ... буду почитывать
100%
 100%  [ 9 ]
Уберите это безобразие!
0%
 0%  [ 0 ]
Всего проголосовало : 9

Автор Сообщение
DL36
Живет здесь... (>100)
Живет здесь... (>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);
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Форум по разработке и ремонту электронной техники -> Микроконтроллеры, процессоры, ПЛИС... Часовой пояс: GMT + 2
На страницу Пред.  1, 2
Страница 2 из 2

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете добавлять вложения в этом форуме
Вы можете просматривать вложения в этом форуме


Rambler's Top100 PageRank Яндекс цитирования
Сайты наших друзей: Гири, все о гирях, Автоматизация магазинов, супермаркетов, ресторанов, кинотеатров,
Весы электронные, Сканеры штрих-кода, Принтеры штрих-кода

Powered by phpBB © 2001, 2005 phpBB Group

Время генерации страницы: 0.4756s (PHP: 88% - SQL: 12%) - SQL запросов: 14 - GZIP enabled - Debug on