PNP-LinE

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PNP-LinE » Контроллеры и Компьютеры. » Эксперементы Программирования На С


Эксперементы Программирования На С

Сообщений 1 страница 20 из 37

1

Ребята! Помогите...
Значит так - создал в протеусе схему на 16F84A  на порты RA0-RA3 посадил 4 светодиода через резисторы....
С чего начать писать программу, на С... чтоб они работали..??

2

В какой программе писать?
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 теперь можно наблюдать за тем что происходит в данном регистре по ходу программы.

3

Ага... так - сразу попутно вопросы... (да я пробую в microC)
А если у меня не кварц, а цепочка из резистора и конденсатора какую частоту выбирать (4МГц вроде встроенный генератор)

4

debugger у меня не пашет.... не дает этим воспользоваться! Косячная наверное версия....

5

Невижу встроенного генератора у  84а.
Можно для RC цепочки частоту вычислить, но можно и без этого.
Просто компилятору нужна константа чтобы в программу задержки вставить.

6

Ураааа! Работает!  По программе какой задуман результат? Случайное число?

7

:)  Пробую варьировать задержкой в программе

увеличить

8

По программе должно быть возрастание числа от 0 до 15. Как в бинарном коде будет выглядеть, только вместо разряда - светодиод.

9

Alexder1 написал(а):

debugger у меня не пашет.... не дает этим воспользоваться! Косячная наверное версия....

Его надо запустить F9.

10

Ага, ну вот так и происходит!!! Класс! Уменьшил время задержки и все стало нагляднее!!! Спасибо! :)

11

А как сделать чтоб они попарно мигали?  (я просто сейчас на коротеньких примерах попробую быстрее допереть что к чему)

12

:D

13

Надо поставить вместо (своими словами) 1 и 15  два числа соответствующие попарному миганию диодов.... Только в тексте изменить чтоб не диапазоном было, а только два числа... :)

14

Alexder1 написал(а):

А как сделать чтоб они попарно мигали?  (я просто сейчас на коротеньких примерах попробую быстрее допереть что к чему)

Пиши в PORTA что хочешь, ставь задержку, потом снова пиши и снова ставь. Учти MicroC тупой, на много задержек памяти контроллера не хватит.(Тупо они его сделали)

15

Что в Си обозначает вот это?   

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;

16

Alexder1 написал(а):

Надо поставить вместо (своими словами) 1 и 15  два числа соответствующие попарному миганию диодов.... Только в тексте изменить чтоб не диапазоном было, а только два числа... :)

Да, но FOR тогда убери(Вместе с его {}).

17

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) замкнутый цикл(будет крутиться вечно).

18

т.е. я пишу так?

PORTA =9;
Delay_ms(50);             
   PORTA =6;
Delay_ms(50);

19

Deimos написал(а):
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) замкнутый цикл(будет крутиться вечно).

Ага..... это понял.... спасиб... :)

20

Как разбираться в этом меню в МикроСи?  Чего-то я не пойму? А то он матерится а я не понимаю чего он хочет!!! :D

увеличить


Вы здесь » PNP-LinE » Контроллеры и Компьютеры. » Эксперементы Программирования На С