Здравствуйте.
Возникло пару вопросов начального уровня по программированию МК на Си.
1) Подскажите как расчитать время задержки, если частота на микроконтроллере 9 МГц. Пример кода ниже.
Я считаю так: для первого Delay, каждые 111 нс (9МГц) от числа 82 (загруженного из Delay1) будет отниматься 1, когда дойдет до нуля цикл завершится. Получим задержку 111 нс * 82 = 9.102 мкс.
2) Почему переменная j инициализируется числом 1000.
Код
void Delay1(unsigned int j)
{
while(j--)
Delay(82);
}
void Delay(unsigned int i)
{
while(i--);
}
3) В uVision есть окно прерываний (рисунок).
EA - общий запрет/разрешение прерываний.
EX0 - разрешение внешнего прерывания INT0.
Не до конца понял назначение IT0 и не понял IE0.
4) Поясните код
Код
void INTRPT0(void) interrupt 0 using 1
, ето что специальная функция на СИ, которая срабатывает когда на ноге INT0 появляется "0".
5) Что возвратит строка
Код
return !INT0;
, если sbit INT0 = 0xB2 и на порту INT0 лог. "0". Будет возвращена "1".
6)
#define ADDR 0x02
#define ERROR PBYTE[ADDR]
Если я напишу ERROR (0xFF), во внешнюю память запишется данные 0xFF? Просто данные без адреса?
Заранее благодарю за ответы.
Эскизы прикрепленных изображений