Страница 1 из 1

Хелп с кодом

Добавлено: Сб ноя 03, 2007 00:33:46
_LeO_
Вот внедряюсь в микро контролеры ))
и написал такой код для диодной матрицы

Код: Выделить всё

#include <avr>
#include <avr>

	int main (void)
	{
		PORTD |= 0x01;

		while(1)
		{
			if (bit_is_clear(PIND,PD0))
			{

				DDRA |= 0x01;
				PORTA |= 0x01;
				DDRB |= 0x01;
				
			}

			else

			{

				DDRA |= 0x00;
				PORTA |= 0x00;
				DDRB |= 0x00;	

			}
		
		}

		return 0;

	}

Но странный глюк - диод на матрице загорается и не потухает ((

Добавлено: Сб ноя 03, 2007 00:48:43
_LeO_
Ой сори )) такой глупый вопрос задал )
убираем опирацию ИЛИ
И все стает на свои места

Код: Выделить всё

if (bit_is_clear(PIND,PD0))
			{

				DDRA |= 0x01;
				PORTA |= 0x01;
				DDRB |= 0x01;
				
			}

			else

			{

				DDRA = 0x00;
				PORTA = 0x00;
				DDRB = 0x00;	

			} 
:idea:

Добавлено: Сб ноя 03, 2007 10:20:10
Krik99
Схему выложи и напиши поподробней про то что тебя интересует! :idea:

Добавлено: Сб ноя 03, 2007 10:41:31
tych
DDRA наверно не нужно постоянно переключать.

Добавлено: Сб ноя 03, 2007 14:32:53
Krik99
Попробуй вот так (конешно если я правельно понял что тебе надо) :)) :

Код: Выделить всё

DDRA = 0xff;                     // Делаем порт А как выход
DDRB = 0xff;                     // Порт В как выходы
DDRD = 0x00;                   // Делаем порт D как вход 
if (bit_is_clear(PIND,PD0)) 
         { 

            PORTA = 0x01; 
             
         } 

         else 

         { 

            PORTA = 0x00; 

         }

Добавлено: Сб ноя 03, 2007 14:49:39
_LeO_
Ды я уже сделал все работает чего надо было добился- просто экспериментирую, теперь переходим на следующий шаг седня буду
с таймером гребанымм разбираться а то у меня позавчера не заладилось я за даташиты и в перед. Ну буим надеятсо седня все получится

Добавлено: Сб ноя 03, 2007 16:03:29
Aheir
Предлагаю переименовать тему. А если Вы намерены задавать здесь все вопросы, которые у Вас возникают при обучении - лучше сразу поиском пользоваться или в "Мелкие вопросы" стучаться.