вопрос по встроенному файлу delay.h в CVavr
-
shevelev_es
- Родился
- Сообщения: 11
- Зарегистрирован: Пт апр 01, 2016 11:31:24
вопрос по встроенному файлу delay.h в CVavr
Подскажите как работает функция задержки при подключении delay.h
файл выглядит
#ifndef _DELAY_INCLUDED_
#define _DELAY_INCLUDED_
#pragma used+
void delay_us(unsigned int n);
void delay_ms(unsigned int n);
#pragma used-
#endif
где void delay_us(unsigned int n); - как я, начинающий, понимаю это просто объявление функции
а где найти её описание??? как она реализована???
файл выглядит
#ifndef _DELAY_INCLUDED_
#define _DELAY_INCLUDED_
#pragma used+
void delay_us(unsigned int n);
void delay_ms(unsigned int n);
#pragma used-
#endif
где void delay_us(unsigned int n); - как я, начинающий, понимаю это просто объявление функции
а где найти её описание??? как она реализована???
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: вопрос по встроенному файлу delay.h в CVavr
это и есть описание. а реализацию вы не увидите скорее всего - это где-то в системных библиотеках, исходники вряд ли предоставлены
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: вопрос по встроенному файлу delay.h в CVavr
Зависит от версии. Например, бывает так:shevelev_es писал(а):а где найти её описание??? как она реализована???
Код: Выделить всё
#define delay_us( us ) ( __delay_cycles( ( F_CPU / 1000000UL ) * ( us ) ) )-
shevelev_es
- Родился
- Сообщения: 11
- Зарегистрирован: Пт апр 01, 2016 11:31:24
Re: вопрос по встроенному файлу delay.h в CVavr
Спасибо. Думал, что исходники укажите. Учусь дальше!
Re: вопрос по встроенному файлу delay.h в CVavr
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Re: вопрос по встроенному файлу delay.h в CVavr
ARV писал(а):это и есть описание. а реализацию вы не увидите скорее всего - это где-то в системных библиотеках, исходники вряд ли предоставлены
думаю, реализацию такой несложной функции можно восстановить по HEX файлу в симуляторе. Написать простейшую прогу, состоящую из одного только вызова delay, компильнуь - и препарируй загружаемый файл.
-
uk8amk
- Поставщик валерьянки для Кота
- Сообщения: 2222
- Зарегистрирован: Вт ноя 27, 2007 11:32:06
- Откуда: Tashkent
Re: вопрос по встроенному файлу delay.h в CVavr
Реализацию можно посмотреть в листинге ассемблера:
На Си сложно сгенерировать точные задержки.
Код: Выделить всё
_delay_ms:
ld r30,y+
ld r31,y+
adiw r30,0
breq __delay_ms1
__delay_ms0:
__DELAY_USW 0x7D0
wdr
sbiw r30,1
brne __delay_ms0
__delay_ms1:
retНа Си сложно сгенерировать точные задержки.
Re: вопрос по встроенному файлу delay.h в CVavr
Точно. Зависит. Еще бывает в таком виде:LookaP писал(а):Зависит от версии. Например, бывает так: ...
Код: Выделить всё
_delay_ms:
ld r30,y+
ld r31,y+
adiw r30,0
breq __delay_ms1
__delay_ms0:
wdr
sbiw r30,1
brne __delay_ms0
__delay_ms1:
ret
.MACRO __DELAY_USB
LDI R24,LOW(@0)
__DELAY_USB_LOOP:
DEC R24
BRNE __DELAY_USB_LOOP
.ENDM
.MACRO __DELAY_USW
LDI R24,LOW(@0)
LDI R25,HIGH(@0)
__DELAY_USW_LOOP:
SBIW R24,1
BRNE __DELAY_USW_LOOP
.ENDM
Все это не относится к CVavr. Вот, например, содержание "spi.lib" в одной из версий:YS писал(а):Почитайте, что такое объектный файл, библиотека, и чем все это отличается от модуля.
Код: Выделить всё
...
#include <io.h>
#ifndef SPIF
#define SPIF 7
#endif
unsigned char spi(unsigned char data)
{
SPDR=data;
while ((SPSR & (1<<SPIF))==0);
return SPDR;
}
- Из овощей я больше всего люблю пельмени... © Соседский Мальчик
Re: вопрос по встроенному файлу delay.h в CVavr
Дык, и я про то же - полный пипец, этот срумент. И еще - см. личку.L.O.D писал(а):Еще бывает в таком виде: ...
