Форум myROBOT.ru » Шаг за шагом » Программирование микроконтроллеров » Проблема с программированием МК

Страниц (17): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
 

91. VCOM - 12 Октября, 2009 - 21:47:44 - перейти к сообщению
смотри выше мой пост Ж)))
92. 1_ulyanovsk - 12 Октября, 2009 - 22:05:01 - перейти к сообщению
Я ошибся маленько лишь в том что порты D входы а С выходы но вот снимок и все равно не работает на КАК БЫ незатронутые порты выводятся 1111 (Это в самом начале когда на D я ничего не подаю) Да ! Там не PINC а PIND ))) опечатка ))) Но не работает . Точнее как.. То что на С0-С3 выводит правильно но как погасить С4-С7 ??
(Добавление)
А вот такое еще ?
#include <avr/io.h>
#include <avr/signal.h>
#define F_CPU 8000000UL

int ii,A,N, out,temport;

int main(void)
{
DDRC=0xff;
DDRD=0x0;
DDRB=0x0;
while(1)
{
PORTC=(PIND & 0b1111);
PORTC=(PINB & 0b11110000);
}
}
Регистры которые мне нужно обойти, оставить не тронотымы - принимают значения 0 ! ! А нужно что бы вообще ни чего не выводилось на них. Такое возможно ? Или только пслетовательно можно выставлять ? Каждый бит
93. VCOM - 12 Октября, 2009 - 22:45:17 - перейти к сообщению
Так давай с самого начала Ж))) Откуда что надо взять и куда засунуть. А то я уж чегото запуталсо Ж))))
(Добавление)
И вообще какаято ерунда написана. У тебя DDRC настраивает все пины на выход. А ты потом PINC читаешь... Зачем?
94. 1_ulyanovsk - 13 Октября, 2009 - 06:28:30 - перейти к сообщению
Правильно вот это:

int main(void)
{
DDRC=0xff;
DDRD=0x0;

while(1)
{
out=PIND;
temport=(0xF0 | out);
PORTC=(POTRC | temport);
}
}
я извиняюсь, сам уже запутался. Читаю со входа - его же и вывожу на вывод но только первые бита.
95. VCOM - 13 Октября, 2009 - 07:48:02 - перейти к сообщению
Ну дак работает? Ж)))
96. Alex_cnc - 13 Октября, 2009 - 19:58:44 - перейти к сообщению
Kakie eshe soveti po povody BM9010?
97. nest - 13 Октября, 2009 - 20:12:15 - перейти к сообщению
а каковы конкретные вопросы по BM9010?
98. Белый Волк - 13 Октября, 2009 - 20:27:25 - перейти к сообщению
99. 1_ulyanovsk - 13 Октября, 2009 - 21:38:43 - перейти к сообщению
VCOM пишет:
Ну дак работает? Ж)))

Уважаемый, ну не работает ((((( Этот скрипт выводит лишние 0и11110000 в порт вывода. А остальные 0b00001111 как нужно выводит. От лишних разрядов нв порту вывода 0b11110000 как избавиться ? ума не приложу
100. nest - 13 Октября, 2009 - 21:42:31 - перейти к сообщению
может, надо расставить знаки препинания ?
а то непонятно, 1_ulyanovsk, что вы пишите...
101. 1_ulyanovsk - 13 Октября, 2009 - 22:01:33 - перейти к сообщению
nest пишет:
может, надо расставить знаки препинания ?
а то непонятно, 1_ulyanovsk, что вы пишите...

Если смотреть на картинку - то порт С- вывод. Я хотел что бы на С0-С3 выводился нужный код, а С4-С7 оставались без изменения какие бы они ни были. То есть оперировать первыми 4-мя разрядами порта С (параллельно). Вот. У меня сейчас они выставляются последовательно поэтому приходится вводить задержку пока не выстроится нужная комбинация (скрипт не приводится). нельзя ли что бы С0-С3 выводились в один заход и без влияния на С4-С7. А Ваш скрипт сразуже выводит на С4-С7 единицы с использованием лог. НЕ. Как это разрешить (С0-С3 код ) без влияния на С4-С7.
102. nest - 13 Октября, 2009 - 22:27:52 - перейти к сообщению
-взять PORTD и свести его по AND с числом 0xF0.
-взять байт с нужным кодом в первой тетраде и свести его по AND с числом 0x0F.
-полученные оба байта свести между собой через OR
-вывести полученный байт в PORTD

если и дальше будет хотеться оперировать с битами - то лучше подучить ассемблер.
103. 1_ulyanovsk - 13 Октября, 2009 - 22:34:12 - перейти к сообщению
nest пишет:
-взять PORTD и свести его по AND с числом 0xF0.
-взять байт с нужным кодом в первой тетраде и свести его по AND с числом 0x0F.
-полученные оба байта свести между собой через OR
-вывести полученный байт в PORTD

если и дальше будет хотеться оперировать с битами - то лучше подучить ассемблер.

БОЛЬШОЕ СПАСИБО ! Поэкспериментирую. Тоже слышал что асемблер для операций с портами бодрее но пока не доходят руки его начать изучать. еще раз спасибо - вторй день порт мучаем )
104. nest - 13 Октября, 2009 - 22:35:01 - перейти к сообщению
на СИ, наверное, будет выглядеть примерно так:
CODE:

out=0x01; <- исходный байт с нужным кодом в первых четырёх битах. will be brocken
temportd=(PORTD & 0xF0);
out=(0x0F & out);
PORTD=(out | temportd);
105. А.Е.ГОЛОВАНОВ - 27 Октября, 2009 - 18:07:46 - перейти к сообщению
ПРИВЕТСТВУЮ
не подскажите как atmega8-16ai подключить к LPT порту делаю как на сайте сказано не получается пишет ошибку lpt порта монтаж проверял 5 раз все нормально