#include /* перед компиляцией препроцессор
компилятора вставит вместо этой строчки содержимое
(текст) заголовочного файла mega16.h, этот файл содержит
перечень регистров, имеющихся в МК ATmega16, и соответ-
ствие их названий их физическим адресам в МК. Посмотрите
его содержание, вызвав CVAVR\inc\mega16.h */
//delay functions
#include
/* перед компиляцией препроцессор компилятора вставит
вместо этой строчки текст «хидера» delay.h, этот файл со-
держит функции для создания пауз в программе.
Теперь, чтобы сделать паузу, вам нужно лишь написать:
delay_us(N); // сделать паузу N (число) мкс
delay_ms(x); // сделать паузу x мс
x – может быть переменная или число от 0 до 65535
(тип unsigned int), например delay_ms(peremennaya) */
// MY_CONSTANT_0x15_define_ADC_BUSY_PINB.0'>Определения пользователя
// AD7896 control signals PORTB bit allocation
#define MY_CONSTANT 0x15
#define ADC_BUSY PINB.0
/* после этих двух строк, перед компиляцией, препро-
цессор компилятора заменит в тексте программы MY_CONSTANT
на 0x15 и ADC_BUSY на PINB.0. Таким образом, вместо того
чтобы помнить, что вывод какой-то микросхемы подключен к
ножке PB0, вы можете проверять значение осмысленного по-
нятия ADC_BUSY – «АЦП занят»
#define – это удобно, но вовсе не обязательно. */
6.5 Объявление переменных
Перед использованием переменной в программе на Си её необходимо
объявить, т. е. указать компилятору, какой тип данных она может хранить и как
она называется.
78
Формат объявления переменной таков:
[] ;
[] – необязательный элемент, он нужен только в
некоторых случаях и может быть:
extern, если переменная объявляется во внешнем файле, например в
хидере delay.h, приведенном выше;
volatile ставьте, если нужно предотвратить возможность повре-
ждения содержимого переменной в прерывании и не позволить ком-
пилятору попытаться выкинуть её при оптимизации кода.
· · · · · · · · · · · · · · · · · · · · · · · · ·
Пример
· · · · · · · · · · · · · · · · · · · · · · · · ·
volatile unsigned char x;
static, если переменная локальная, т. е. объявлена в какой-либо функ-
ции и должна сохранять свое значение до следующего вызова этой функции.
Eeprom, разместить переменную в EEPROM. Значение таких перемен-
ных сохраняется при выключении питания и при перезагрузке МК.
eeprom unsigned int x;
Если это первая переменная в EEPROM, то её младший байт будет поме-
щен в ячейку 1 EEPROM, а старший – в ячейку 2. Необходимо помнить, что за-
пись в EEPROM длительный процесс – 8 500 тактов процессора.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Глобальные переменные объявляются до появления в тексте программы
какой-либо функции. Глобальные переменные доступны в любой функции про-
граммы.
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
Локальные переменные объявляются в самом начале функ-
ций, т. е. сразу после фигурной скобки {. Локальные переменные
доступны только в той функции, где они объявлены!
· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·
– тип данных, которые может хранить перемен-
ная.
Наиболее часто используемые типы данных:
79
unsigned char – хранит числа от 0 до 255 (байт);
unsigned int – хранит числа от 0 до 65 535 (слово == 2 байта);
unsigned long int – хранит от 0 до 4 294 967 295 (двойное сло-
во == 4 байта).
Вместо unsigned char можно писать просто char, так как компиля-
тор по умолчанию считает char беззнаковым байтом. А если вам нужен знако-
вый байт, то объявляйте его так:
Do'stlaringiz bilan baham: |