Усовершенствовал прогу 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 секунды и это в бесконечном цикле.
Хотел узнать будет ли работать такая прога и второе можно какнить ёё усовершенствовать а то как-то громоздко выглядит?
За ранее спасибо.
1. dihlo - 31 Мая, 2012 - 15:29:56 - перейти к сообщению
2. cjA - 31 Мая, 2012 - 15:48:21 - перейти к сообщению
чтож громоздкого? 1.7% памяти для мега88 (136 байт)
можно конечно
.
PORTD = ~PORTD;
.
будет 130 байт
можно конечно
.
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++) листинг на один символ короче будет
Ну и ещё не 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 будет выделяться только один раз
...
int i = 0;
while (1) { // Бесконечный цикл
for (i = 0; i < 400; i++)
{
.......
память для i будет выделяться только один раз