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

 
 
> Совсем ламерский вопрос., Пор порты.
BlauTood
сообщение Mar 18 2005, 16:56
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 26
Регистрация: 11-10-04
Пользователь №: 841



сконфигурировал порт на вход
DDRA=0x00;
DDRC=0x00;



подал я на него внешне 1, мне ее нужно считывать с PORTD? Правельно?
вот код считывания:

switch (Knopka) //êíîïêà 1 è 9
{
Knopka=PORTA+PORTC;
case 0x01: //êíîïêà 1,2,3
PORTB.1=1;
delay_ms(20);
break;
case 0x02:
PORTB.2=1;
delay_ms(20);
break;

если да, то или у меня код не работает или на проце порты подпалил ( тогда тока не знаю как sad.gif )


--------------------
Сделать можно ВСЕ, но это нужно делать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
vet
сообщение Mar 22 2005, 17:36
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(BlauTood @ Mar 22 2005, 18:05)
void port(void) {

...

port();
}

*



Процедура вызывает самое себя. У вас моментально переполняется стек вызовов подпрограмм, и контроллер виснет, перегружается или ещё как-нибудь с ума сходит. Зацикливание обычно делают в main, например, так:
Код
void main(void)
{
 init();
 while (1) {
   port();
 }
}


Со switch-case правильно обращаться так:
Код
       Knopka=PINA;
       switch (Knopka)
       {
               case 0xFE:
      ...


Да, вот ещё: компилятору проще сделать PORTB |= 0x01, чем PORTB++; wink.gif


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post



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

 


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


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