AVR123:Глава 5 — различия между версиями
Setar (обсуждение | вклад) (добавил категорию) |
Nekolex (обсуждение | вклад) (дополнение) |
||
Строка 1: | Строка 1: | ||
[[Категория:Avr123]] | [[Категория:Avr123]] | ||
[[AVR123 | Вернуться на главную]] | [[AVR123 | Вернуться на главную]] | ||
− | + | ||
+ | Язык Си для AVR. | ||
+ | |||
+ | Как раз то, что необходимо и достаточно | ||
+ | для микроконтроллеров. | ||
+ | |||
+ | По умолчанию компилятор CVAVR | ||
В других компиляторах могут быть незначительные отклонения, нюансы не связанные с языком Си, а обусловленные стараниями и предпочтениями разработчиков этих компиляторов. | В других компиляторах могут быть незначительные отклонения, нюансы не связанные с языком Си, а обусловленные стараниями и предпочтениями разработчиков этих компиляторов. | ||
Строка 7: | Строка 13: | ||
'''Минимальная программа на Си''' может быть такой: | '''Минимальная программа на Си''' может быть такой: | ||
<source lang="c">main(){}</source> | <source lang="c">main(){}</source> | ||
− | Эта программа не делает ни чего | + | Эта программа не делает ни чего полезного — но это уже программа и она показывает что в программе на языке Си — должна быть главная функция main — обязательно ! |
+ | |||
+ | Скачайте и Распечатайте.[http://avr123.nm.ru/csyntax.pdf Памятка Си для МК на ОДНОЙ странице.] | ||
+ | |||
+ | Рассказывая про МК я говорил вам, что: | ||
+ | |||
+ | |||
+ | Задача программы МК: | ||
+ | * читать числа из регистров и памяти МК, | ||
+ | * делать что-то с числами, данными и | ||
+ | * записывать числа в регистры и память. | ||
+ | |||
+ | Только так программа может общаться с МК. | ||
+ | |||
+ | |||
+ | == Как это делать на языке Си == | ||
+ | |||
+ | '''Регистры МК''' ( ''регистры'' - это ячейки-байты в памяти МК AVR ) в программе на Си имеют названия как и в ДШ и так как числа в большинстве из них можно менять - для программы регистры являются по сути переменными. | ||
+ | |||
+ | '''Переменная''' - это набор ячеек в памяти в которых можно хранить число или числа и менять их. Переменная имеет адрес и имя. | ||
+ | |||
+ | '''Константа''' - это как переменная но менять содержимое нельзя. | ||
+ | |||
+ | Подробней о переменных и константах написано ниже. | ||
+ | |||
+ | * Чтобы поместить число в переменную (в регистр) в языке Си есть оператор присваивания | ||
+ | это знак "=" ( называемый в математике "равно" ) | ||
+ | |||
+ | {{InfoBlock|В Си знак равно НЕ означает равенство!|Запомните!}} | ||
+ | |||
+ | "=" в Си означает вычислить результат того что справа от оператора присваивания и поместить этот результат в переменную находящуюся левее оператора присваивания. | ||
+ | <source lang="c"> | ||
+ | PORTB = PINB + 34;/* Эта строчка на Си означает взять (прочитать, считать) | ||
+ | значение переменной (регистра) PINB, затем прибавить | ||
+ | к нему число 34 и поместить результат в переменную PORTB */ | ||
+ | |||
+ | ПЕРЕМЕННАЯ = PINC; /* Эта строчка на Си означает взять (прочитать, считать) | ||
+ | значение переменной (регистра) PINC и поместить результат | ||
+ | в переменную с именем ПЕРЕМЕННАЯ */ | ||
+ | </source> | ||
+ | Чтобы в Си взять (прочитать) число из регистра или значение переменной нужно написать его название НЕ непосредственно с лева от оператора присваивания ! |
Версия 15:56, 26 сентября 2009
Язык Си для AVR.
Как раз то, что необходимо и достаточно для микроконтроллеров.
По умолчанию компилятор CVAVR
В других компиляторах могут быть незначительные отклонения, нюансы не связанные с языком Си, а обусловленные стараниями и предпочтениями разработчиков этих компиляторов.
Минимальная программа на Си может быть такой: <source lang="c">main(){}</source> Эта программа не делает ни чего полезного — но это уже программа и она показывает что в программе на языке Си — должна быть главная функция main — обязательно !
Скачайте и Распечатайте.Памятка Си для МК на ОДНОЙ странице.
Рассказывая про МК я говорил вам, что:
Задача программы МК:
- читать числа из регистров и памяти МК,
- делать что-то с числами, данными и
- записывать числа в регистры и память.
Только так программа может общаться с МК.
Как это делать на языке Си
Регистры МК ( регистры - это ячейки-байты в памяти МК AVR ) в программе на Си имеют названия как и в ДШ и так как числа в большинстве из них можно менять - для программы регистры являются по сути переменными.
Переменная - это набор ячеек в памяти в которых можно хранить число или числа и менять их. Переменная имеет адрес и имя.
Константа - это как переменная но менять содержимое нельзя.
Подробней о переменных и константах написано ниже.
- Чтобы поместить число в переменную (в регистр) в языке Си есть оператор присваивания
это знак "=" ( называемый в математике "равно" )
"=" в Си означает вычислить результат того что справа от оператора присваивания и поместить этот результат в переменную находящуюся левее оператора присваивания. <source lang="c"> PORTB = PINB + 34;/* Эта строчка на Си означает взять (прочитать, считать)
значение переменной (регистра) PINB, затем прибавить к нему число 34 и поместить результат в переменную PORTB */
ПЕРЕМЕННАЯ = PINC; /* Эта строчка на Си означает взять (прочитать, считать)
значение переменной (регистра) PINC и поместить результат в переменную с именем ПЕРЕМЕННАЯ */
</source> Чтобы в Си взять (прочитать) число из регистра или значение переменной нужно написать его название НЕ непосредственно с лева от оператора присваивания !