Структура программы на языке Си. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Структура программы на языке Си.

Поиск

Программа на языке Си это текстовый файл, обычно с расширением. c;

Текст программы называют исходным. Весь исполняемый код программы на Си находится в функциях - т.е. в фигурных скобках { исполняемый код программы }

Программа на Си имеет определенную структуру:

1) заголовок;

2) включение необходимых внешних файлов - #include

3) ваши определения для удобства работы - #define

4) объявление глобальных переменных и констант

5) описание функций - обработчиков прерываний

6) описание других функций используемых в программе

7) функция main <- это единственный обязательный пункт!

Это не жесткий порядок а ориентировочный!

Иногда п.6 это прототипы функций, а сами функции описываются полностью после п.7

Прототип функции - показывает образец того как применять функцию в программе, какие значения в нее передаются и если она возвращает какое-то значение то прототип указывает тип возвращаемых данных. Прототип не имеет скобок { } а после скобок () ставится;

Функция - имеет { "тело" } в фигурных скобках. Тело это код на Си определяющий то что делает функция.

; после вызова функции не ставится!

Программа на Си начинает работу с функции main(). По необходимости из main() вызываются другие функции программы, из которых может быть вызов следующих функций, по завершении работы функции программа возвращается по той же цепочке как вызывались функции.

main(){
... какой то код программы...

вызов функции_1; //программа перейдет в функцию_1

строка программы; // будет выполнятся после
// возврата из функции_1

... какой то код программы...

Пример программы на Си

/* пункт 1 заголовок программы

Он оформляется как комментарий, и обычно содержит информацию

- о названии, назначении, версии и авторе программы
- краткое описание алгоритма программы
- пояснения о назначении выводов МК и режиме его работы, фьюзы
- компилятор, инструменты и их версии
- другие сведения которые вы считает полезным указать

*/

// пункт 2 включение внешних файлов

#include <mega16.h>

/* перед компиляцией, препроцессор компилятора вставит вместо этой строчки содержимое (текст) заголовочного файла "хидера" mega16.h - этот файл содержит перечень регистров имеющихся в МК ATmega16 и соответствие их названий их физическим адресам в МК. Следует указать какой МК вы используете в свойствах проекта в компиляторе */

#include <delay.h>
/* перед компиляцией, препроцессор компилятора вставит вместо этой строчки текст "хидера" delay.h - этот файл содержит функции для создания пауз в программе. Теперь чтобы сделать паузу вам нужно лишь написать: */

delay_us(N);

/* сделать паузу N (число) микросек. Это должна быть константа - НЕ переменная!!!
например:

delay_us(12 + 7*3);
delay_us(117);

delay_ms(x); /* сделать паузу x милиСек
x - может быть переменная, выражение или число
от 0 до 65535 (тип unsigned int)
например:

delay_ms(3280);
delay_ms(переменная);
delay_ms(переменная*4 + 760); */

// пункт 3 определения пользователя

#define ADC_BUSY PINB.0
#define NCONVST PORTB.1
/* после этих двух строк, перед компиляцией, препроцессор компилятора заменит в тексте программы ADC_BUSY на PINB.0 и NCONVST на PORTB.1
Таким образом вместо того что бы помнить что вывод занятости AD7896 подключен у вас к ножке PB0 вы можете проверять значение осмысленного понятия ADC_BUSY - "АЦП занят". А вместо управления абстрактной ножкой PB1 (через PORTB.1) вы можете управлять - NCONVST - "стартовать новое АЦ преобразование".

#define - Это удобно! Но ВОВСЕ не обязательно.
*/

#define INIT_TIMER0 TCNT0=0x100L-F_XTAL/64L/500L /* этот пример показывает что определения могут быть и сложней! */  
#define - может содержать и некоторые переменные, вместо которых в тексте программы могут быть подставлены и числа и слова. Может определять даже сложные, полноценные функции  

Например:

#define invbit(p,n) (p=p^bit(n))

Здесь переменные величины это 'p' и 'n'. Теперь для инвертирования бита 5 в регистре PORTB вам достаточно написать в программе:

invbit(PORTB,5);

Кроме того в самой правой части эти переменные величины могут быть связаны и арифметическими операциями и таких переменных может быть много.



Поделиться:


Последнее изменение этой страницы: 2016-12-14; просмотров: 375; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.118.151 (0.008 с.)