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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Программирование МК на Си, Вопроосы по коду
Mackeda
сообщение Jan 18 2012, 13:20
Сообщение #16





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



Цитата
Если быть формалистом, то процедура (прерывания) будет выполнена, если установлен флаг IE0 в регистре TCON, при этом установлены EX0 и EA в регистре IE. Для "классики" этого достаточно (в других МК могут быть ещё условия). Неважно - каким образом оказался установленным бит IE0 (выполнилось условие, установленное битом IT0 регистра TCON, или, например, некоторой командой).


А можно программно установить на ноге INT 0 уровень логического нуля? Или эта нога только как вход работает.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 18 2012, 15:33
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Mackeda @ Jan 18 2012, 17:20) *
А можно программно установить на ноге INT 0 уровень логического нуля?

Можно
Go to the top of the page
 
+Quote Post
Vladimir_Sn
сообщение Jan 21 2012, 06:02
Сообщение #18





Группа: Новичок
Сообщений: 3
Регистрация: 17-01-12
Пользователь №: 69 612



Здравствуйте!
Сейчас пишу первый проект на микроСи, до этого работал только на асме для микрочипа. Не могу разобраться что происходит. Подскажите пожалуйста.
Код
  dif_res = (delta_1 - delta_0) * Kd;
// delta 0 = 760
// delta 1 = 0
// dif_res становится равным 65384, почему, и откуда берётся это число?
//  signed int delta_0, delta_1, dif_res;
//   const float Kd = 0.2;

Go to the top of the page
 
+Quote Post
Палыч
сообщение Jan 21 2012, 06:28
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(Vladimir_Sn @ Jan 21 2012, 10:02) *
Не могу разобраться что происходит.

Вспомните (узнайте, если не знали) про дополнительный код. Значение переменной dif_res равно минус 152. Число 65384 имеет такое же представление в памяти, что и минус 152,, но для беззнаковых целых (unsigned int).
Go to the top of the page
 
+Quote Post
Cosmojam
сообщение Jan 21 2012, 06:39
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 311
Регистрация: 12-01-11
Из: Калининград (Koenigsberg)
Пользователь №: 62 182



А ещё умножение float на int и присваивание результата в int. Вспомните 1/3 и 1.0/3/0
Но лучше дроби не использовать там где это возможно. Умножение на 0.2 заменяется цельночисленным делением на 5 если точность устраивает. Если нет, то см выше.


--------------------
typedef enum { no, yes, maybe } bool; | блог тут
Go to the top of the page
 
+Quote Post
Vladimir_Sn
сообщение Jan 21 2012, 07:18
Сообщение #21





Группа: Новичок
Сообщений: 3
Регистрация: 17-01-12
Пользователь №: 69 612



Теперь начинаю понимать..., спасибо большое!
Go to the top of the page
 
+Quote Post

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

 


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


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