Форум myROBOT.ru » Лаборатория » Алгоритмы » Помощь новичку

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

1. dihlo - 31 Мая, 2012 - 15:29:56 - перейти к сообщению
Усовершенствовал прогу 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 секунды и это в бесконечном цикле.

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

За ранее спасибо.
2. cjA - 31 Мая, 2012 - 15:48:21 - перейти к сообщению
чтож громоздкого? 1.7% памяти для мега88 (136 байт)

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

будет 130 байт Голливудская улыбка
3. dihlo - 31 Мая, 2012 - 16:02:38 - перейти к сообщению
я мегу8 прошью.

Спасибо. Как я понял все будет работать и это главное. И спасибо этому сайту начал осуществлять мечты Улыбка
4. Роботов - 31 Мая, 2012 - 17:46:56 - перейти к сообщению
Ещё PORTD = 0x00; в бесконечном цикле можно убрать.
Ну и ещё не for (int i = 1; i <= 400; i++), а
for (int i = 0; i <400; i++) листинг на один символ короче будет Голливудская улыбка
5. Romaaan - 03 Июня, 2012 - 12:47:39 - перейти к сообщению
а что означает эта строчка? : for (int i = 1; i <= 400; i++)
6. mihail - 04 Июня, 2012 - 06:01:38 - перейти к сообщению
Это цикл. int i = 1; этой инструкцией устанавливается начальное значение счетчика цикла. i <= 400; этой инструкцией определяется когда цикл будет завершен. Пока это условие истинно цикл повторяется. Как только условие станет ложно, цикл завершится. i++ эта инструкция определяет действие совершаемое с счетчиком цикла при каждой итерации. В данном случае счетчик цикла увеличивается на единицу. Короче, все инструкции которые между { } будут выполнены 400 раз.
7. cjA - 13 Июня, 2012 - 01:51:16 - перейти к сообщению

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

(Добавление)
тогда уж вложеный цикл делать и int на char менять (не хорошо маленькую старушку мегу8 интами мучить, вы бы еще float написали)
8. JohnAA - 26 Июля, 2012 - 09:31:45 - перейти к сообщению
лучше так сделать
...
int i = 0;
while (1) { // Бесконечный цикл

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

память для i будет выделяться только один раз