роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Без описания
dihlo Post Id


Рядовой


Сообщений всего: 2
Дата рег-ции: Май 2012  



Усовершенствовал прогу http://myrobot.ru/stepbystep/r_firstbot1.php.


#define F_CPU 1000000UL // 1 MHz
#include <avr/io.h>
#include <avr/delay.h>

int main(void) // начало основой программы
{

DDRD = 0xff; // все выводы порта D сконфигурировать как выходы

while (1) { // Бесконечный цикл

for (int i = 1; i <= 400; i++)
{
PORTD = 0xff; // установить "1" на всех линиях порта D

_delay_us(825); // делаем меандр +.

PORTD = 0x00; // установить "0" на всех линиях порта D

_delay_us(825); // делаем меандр 0.
}закрывающая скобка малого цикла оборота
PORTD = 0x00;
_delay_ms(100);
} // закрывающая скобка бесконечного цикла

} //конец программы

Она должна работать так 400 импульсов длинной 825 мкс потом остановка на 0,1 секунды и это в бесконечном цикле.

Хотел узнать будет ли работать такая прога и второе можно какнить ёё усовершенствовать а то как-то громоздко выглядит?

За ранее спасибо.

(Отредактировано автором: 31 Мая, 2012 - 15:30:49)

 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



чтож громоздкого? 1.7% памяти для мега88 (136 байт)

можно конечно
.
PORTD = ~PORTD;
.

будет 130 байт Голливудская улыбка
 
 Top
dihlo Post Id


Рядовой


Сообщений всего: 2
Дата рег-ции: Май 2012  



я мегу8 прошью.

Спасибо. Как я понял все будет работать и это главное. И спасибо этому сайту начал осуществлять мечты Улыбка
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



Ещё PORTD = 0x00; в бесконечном цикле можно убрать.
Ну и ещё не for (int i = 1; i <= 400; i++), а
for (int i = 0; i <400; i++) листинг на один символ короче будет Голливудская улыбка
 
 Top
Romaaan Post Id


Генерал


Сообщений всего: 95
Дата рег-ции: Дек. 2011  



а что означает эта строчка? : for (int i = 1; i <= 400; i++)
 
 Top
mihail Post Id



Гуру


Сообщений всего: 1065
Дата рег-ции: Март 2010  



Это цикл. int i = 1; этой инструкцией устанавливается начальное значение счетчика цикла. i <= 400; этой инструкцией определяется когда цикл будет завершен. Пока это условие истинно цикл повторяется. Как только условие станет ложно, цикл завершится. i++ эта инструкция определяет действие совершаемое с счетчиком цикла при каждой итерации. В данном случае счетчик цикла увеличивается на единицу. Короче, все инструкции которые между { } будут выполнены 400 раз.
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  




dihlo пишет:
И спасибо этому сайту начал осуществлять мечты Улыбка
ну не то чтоб мечты , но хоть умных людей, с которыми не скучно. Голливудская улыбка

(Добавление)
тогда уж вложеный цикл делать и int на char менять (не хорошо маленькую старушку мегу8 интами мучить, вы бы еще float написали)
 
 Top
JohnAA Post Id


Рядовой


Сообщений всего: 9
Дата рег-ции: Июль 2012  



лучше так сделать
...
int i = 0;
while (1) { // Бесконечный цикл

for (i = 0; i < 400; i++)
{
.......

память для i будет выделяться только один раз
 
 Top
Страниц (1): [1]
« Алгоритмы »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru