Разбираю код для микроконтроллера на Си. Возникло пару вопросов.
1) Зачем нужны header файлы? На чем они написаны, если имеют расширение .h?
#include <reg8252.h> #include "External.h" #include "Interrupt.h" #include "Timer.h" #include "Memory.h"
2) #include <reg8252.h> подключается что? Как это правильно обозвать? Заголовочный файл с обозначение регистров специальных функций?
3) Это глобальная переменная?
extern bit IsWasInt;
Правильно ли описание.
4) Функция Delay объявлена на строке 12, она принимает без знаковый целочисленный аргумент типа int и ничего не возвращает. На четырнадцатой строке объявлен цикл while, которому в качестве условия выхода указан декремент локальной переменной i.
17) void Delay1ms(unsigned int i) 18) { 19) while(i--) 20) Delay(82); 21) } 12)void Delay(unsigned int i) 13) { 14) while(i--); 15) } 16) while(i--)
C:0x0344 EF MOV A,R7 ------ 1 цикл C:0x0345 1F DEC R7 ------ 1 цикл C:0x0346 AC06 MOV R4,0x06 ------ 1 цикл C:0x0348 7001 JNZ C:034B ------ 2 цикла C:0x034A 1E DEC R6 ------ 0 цикл C:0x034B 4C ORL A,R4 ------ 1 цикл C:0x034C 70F6 JNZ Delay(C:0344) ------ 2 цикла
8 циклов *12* 90 нс (11 МГц частота МК) * 82 = 0.708408 мс
Посмотрел на время выполнения в KeiluVision 4, результат не совпал 0,834550 мс
6) Что такое Build Target в KeiluVision 4? Создание сборки?
7) Следующая конструкция прописана в заголовочном файле c расширением .h. Не совсем понятно зачем используют в этом случае макрос b, почему когда переменной а присвоили значение P2^6, ее нельзя использовать в основной программе
sbit a = P2^6; #define b a
|