Ребята! Помогите...
Значит так - создал в протеусе схему на 16F84A на порты RA0-RA3 посадил 4 светодиода через резисторы....
С чего начать писать программу, на С... чтоб они работали..??
Эксперементы Программирования На С
Сообщений 1 страница 20 из 37
Поделиться12006-06-04 14:23:22
Поделиться22006-06-04 16:38:51
В какой программе писать?
MicroC?
Project -> New Project
Выбираешь тип контроллера, устанавливаешь конфигурациооные биты, даешь имя проекту и указываешь где он должен быть сохранен.
Выбираешь частоту кварца и пишешь примерно следующее:
void main(){ char i; TRISA = 0; while(1){ for(i=0 ; i<=15 ; i++) { PORTA = i; Delay_ms(1000); //Задержка 1 секунда } } }
Жмешь Ctrl+F9(Build Project).
Если хочешь посмотреть что будет происходить по мере выполнения программы нужно запустить debager,
открыть View -> Debug Window -> View Watch
в выпадающем меню выбрать нужный регистр и нажать ADD.
Нажимая F7 теперь можно наблюдать за тем что происходит в данном регистре по ходу программы.
Поделиться32006-06-04 16:41:03
Ага... так - сразу попутно вопросы... (да я пробую в microC)
А если у меня не кварц, а цепочка из резистора и конденсатора какую частоту выбирать (4МГц вроде встроенный генератор)
Поделиться42006-06-04 16:45:12
debugger у меня не пашет.... не дает этим воспользоваться! Косячная наверное версия....
Поделиться52006-06-04 16:46:45
Невижу встроенного генератора у 84а.
Можно для RC цепочки частоту вычислить, но можно и без этого.
Просто компилятору нужна константа чтобы в программу задержки вставить.
Поделиться62006-06-04 16:47:50
Ураааа! Работает! По программе какой задуман результат? Случайное число?
Поделиться72006-06-04 16:49:06
Пробую варьировать задержкой в программе
Поделиться82006-06-04 16:52:43
По программе должно быть возрастание числа от 0 до 15. Как в бинарном коде будет выглядеть, только вместо разряда - светодиод.
Поделиться92006-06-04 16:55:19
debugger у меня не пашет.... не дает этим воспользоваться! Косячная наверное версия....
Его надо запустить F9.
Поделиться102006-06-04 16:55:31
Ага, ну вот так и происходит!!! Класс! Уменьшил время задержки и все стало нагляднее!!! Спасибо!
Поделиться112006-06-04 16:58:47
А как сделать чтоб они попарно мигали? (я просто сейчас на коротеньких примерах попробую быстрее допереть что к чему)
Поделиться132006-06-04 17:01:29
Надо поставить вместо (своими словами) 1 и 15 два числа соответствующие попарному миганию диодов.... Только в тексте изменить чтоб не диапазоном было, а только два числа...
Поделиться142006-06-04 17:02:48
А как сделать чтоб они попарно мигали? (я просто сейчас на коротеньких примерах попробую быстрее допереть что к чему)
Пиши в PORTA что хочешь, ставь задержку, потом снова пиши и снова ставь. Учти MicroC тупой, на много задержек памяти контроллера не хватит.(Тупо они его сделали)
Поделиться152006-06-04 17:04:26
Что в Си обозначает вот это?
i<=15 ; i++)
Ага, понял
ДЛИННАЯ ЗАПИСЬ СМЫСЛ СОКРАЩАЕТСЯ ДО
x = x + 1; добавить 1 x++; или ++x;
x = x - 1; вычесть 1 x--; или --x;
x = x + y; прибавить y x += y;
x = x - y; вычесть y x -= y;
x = x * y; умножить на y x *= y;
x = x / y; поделить на y x /= y;
x = x % y; остаток от деления x %= y;
x--; вычесть 1 x -= 1;
x++; добавить 1 x += 1;
Поделиться162006-06-04 17:06:09
Надо поставить вместо (своими словами) 1 и 15 два числа соответствующие попарному миганию диодов.... Только в тексте изменить чтоб не диапазоном было, а только два числа...
Да, но FOR тогда убери(Вместе с его {}).
Поделиться172006-06-04 17:14:08
Что в Си обозначает вот это?
i<=15 ; i++)
Это не столь важно. Важна вся строка
for( i=0 ; i<=15 ; i++ ){ тело программы; }
Эта строка говорит, пока i меньше или равна 15 делать то что в {}.
i = 0 // начальное значение(откуда считать).
i++ <-> i = i+1;
Т.е. программа доходит до этого места, приравнивает i к нулю, проверяет условие, и выполняет {}, затем прибавляет к i 1, снова проверяет: если условие(i<=15) соблюдается снова заходит в {}, если не соблюдается вываливается за } и идет дальше по программе.
while(1) замкнутый цикл(будет крутиться вечно).
Поделиться182006-06-04 17:18:08
т.е. я пишу так?
PORTA =9;
Delay_ms(50);
PORTA =6;
Delay_ms(50);
Поделиться192006-06-04 17:20:04
Alexder1 написал(а):Что в Си обозначает вот это?
i<=15 ; i++)
Это не столь важно. Важна вся строка
Код:for( i=0 ; i<=15 ; i++ ){ тело программы; }Эта строка говорит, пока i меньше или равна 15 делать то что в {}.
i = 0 // начальное значение(откуда считать).
i++ <-> i = i+1;Т.е. программа доходит до этого места, приравнивает i к нулю, проверяет условие, и выполняет {}, затем прибавляет к i 1, снова проверяет: если условие(i<=15) соблюдается снова заходит в {}, если не соблюдается вываливается за } и идет дальше по программе.
while(1) замкнутый цикл(будет крутиться вечно).
Ага..... это понял.... спасиб...
Поделиться202006-06-04 17:25:44
Как разбираться в этом меню в МикроСи? Чего-то я не пойму? А то он матерится а я не понимаю чего он хочет!!!