реклама на сайте
подробности

 
 
> Программирование МК на Си, Вопроосы по коду
Mackeda
сообщение Dec 27 2011, 13:53
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 26-12-11
Пользователь №: 69 092



Здравствуйте.

Возникло пару вопросов начального уровня по программированию МК на Си.

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? Просто данные без адреса?

Заранее благодарю за ответы.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Mackeda
сообщение Jan 3 2012, 12:32
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 26-12-11
Пользователь №: 69 092



Цитата
нет, после декремента


Сори за опечатку, да после дикремента, том почему так?

Цитата
далее if проверяет результат - если он будет НЕ НОЛЬ, то выполнится тело if


Если результат постоянно будет "1", программа не выйдет из цикла while(1)?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jan 3 2012, 12:44
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(Mackeda @ Jan 3 2012, 16:32) *
Сори за опечатку, да после дикремента, том почему так?

смотрите
допустим, имеем беззнаковую переменную размером 8 бит
инициализируем нулем (00000000b)
теперь пробуем вычесть из нее 1
получаем 11111111b или 0xFF
почему у Вас получается другое значение? возможно, в теле цикла переменная еще как-то модифицируется

Цитата(Mackeda @ Jan 3 2012, 16:32) *
Если результат постоянно будет "1", программа не выйдет из цикла while(1)?

да
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Mackeda   Программирование МК на Си   Dec 27 2011, 13:53
- - Палыч   Хорошо бы задавая вопрос указывать конкретный тип ...   Dec 27 2011, 14:45
- - Mackeda   Цитата2. Не понятно: о чём идёт речь? Изначально ...   Jan 3 2012, 11:32
|- - toweroff   Цитата(Mackeda @ Jan 3 2012, 15:32) но по...   Jan 3 2012, 12:00
|- - Палыч   Цитата(Mackeda @ Jan 3 2012, 15:32) Изнач...   Jan 3 2012, 18:34
- - Mackeda   Подскажите еще момент. Кодwhile(1) {...   Jan 10 2012, 10:04
- - MALLOY2   А как надо ? какая-то ахинея. Пишите что бы было в...   Jan 10 2012, 10:32
- - Mackeda   Уточняю. КодВыполнение программы: Шаг 1 ......   Jan 10 2012, 11:18
|- - Палыч   Цитата(Mackeda @ Jan 10 2012, 15:18) Прав...   Jan 10 2012, 12:04
|- - XVR   Цитата(Mackeda @ Jan 10 2012, 15:18) Прав...   Jan 11 2012, 09:12
|- - _Pasha   Цитата(Mackeda @ Jan 10 2012, 15:18) Уточ...   Jan 13 2012, 11:05
- - редактор   Проверять значение вызываемой функции надо так Код...   Jan 13 2012, 08:32
|- - Палыч   Цитата(редактор @ Jan 13 2012, 12:32) Про...   Jan 13 2012, 11:04
- - Mackeda   ЦитатаЕсли быть формалистом, то процедура (прерыва...   Jan 18 2012, 13:20
|- - Палыч   Цитата(Mackeda @ Jan 18 2012, 17:20) А мо...   Jan 18 2012, 15:33
- - Vladimir_Sn   Здравствуйте! Сейчас пишу первый проект на мик...   Jan 21 2012, 06:02
|- - Палыч   Цитата(Vladimir_Sn @ Jan 21 2012, 10:02) ...   Jan 21 2012, 06:28
- - Cosmojam   А ещё умножение float на int и присваивание резуль...   Jan 21 2012, 06:39
- - Vladimir_Sn   Теперь начинаю понимать..., спасибо большое!   Jan 21 2012, 07:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:39
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016