Свежие обсуждения
Микроконтроллеры

Помогите начинающему написать программу

1 2 3

BreAkeR: Помогите пожалуйсто написать программу
Если не секрет - то что это будет?

 

сча в универ собираюсь, не могу писать...долго.....а вот вчера за ночь меня осенило на пару идей......так что вечером и схема, и пояснения будут))))).....

 

Могу только на асме написать что-нибудь....
(Пиши на почту если что)

 

Писал тут для студента - не ответа, ни привета.
Ну коли для себя, то интересно для чего конретно.

 

Напруживайся сам.
Иначе толку 0.
Никто за тебя писать не будет...

 

BreAkeR: нет....я для себя))))сроки меня не интересуют)))

Ну если для себя, то поищите поиском соответствующие темы в этой конфе. Было и на Асме, было и на С. Именно под PIC16F628-й. На самом деле это не так уж и сложно, главное въехать в тему, а это достигается только индивидуальным опытом, тут никто не поможет, имхо. Копируйте и разбирайте "по косточкам" программы других авторов, а что не понятно будет, спрашивайте здесь, поясним. Писать же за вас готовую, даже простейшую, как эта, прогу никто не будет!

 

Да, и ещё. Принципиальная схема конечно важна, но более важен алгоритм ваших действий и таблица распределения ресурсов м/к: какой порт за что отвечает и почему, какой уровень является активным. По алгоритму будет понятна последовательность действий. К сожалению м/к - это автомат, который выполняет ваши действия и не может действовать ассоциативно или интерпретируя команды по своему усмотрению!

 

значит лёг я спать вчера и меня как осенило!!!

вот значит какая логикапроги будетрасспишу всё до шага)))
1) подаём напряжение на МК
2) порт А1, А2,А3 входы
3) порт В3, В4,В5,В6,В7 выходы
4) на всех этих портах создать низкий уровень
5) Т -переменная , в интервале от 0 до 35
6) присвоить переменной Т значение 15
7) W- переменная, которая равна W=50-T
7.1)Q -переменная ,которая равна Q=T-10
8) вычислить W,Q
8.1) если Q меньше 0, то Q=0
9) создать на порте В4 высокий уровень
9.1)создать на В3 высокий уровень

10)основная программа
11)проверить порт А1, если на нем низкий уровень, то перейти к метке knop1 иначе ничего
12)проверить порт А2, если на нем низкий уровень, то перейти к метке knop2 иначе ничего
13)проверить порт А3, если на нем низкий уровень, то перейти к метке knop3 иначе ничего

14)отсчитать время в милисекундах равное Т
15)создать на В3 низкий уровень
16)отсчитать время в милисекундах равное W
17)создать на В3 высокий уровень
18)вернуться с пункту №11

19)метка knop1
20)
21)проверить порт В1, если на нём высокий уровень, то создать на порте В1 низкий уровень, создать на порте В2 высокий уровень, иначе ничего
22)проверить порт В2, если на нём высокий уровень, то создать на порте В2 низкий уровень, создать на порте В3 высокий уровень, иначе ничего
23)проверить порт В3, если на нём высокий уровень, то создать на порте В3 низкий уровень, создать на порте В4 высокий уровень, иначе ничего
24)проверить порт В4, если на нём высокий уровень, то создать на порте В4 низкий уровень, создать на порте В1 высокий уровень, иначе ничего
25)проверить порт А1, если на нём высокий уровень, то вернуться в основную программу, иначе выполнить цикл:
-отсчитать время в милисекундах равное Q
-создать на В3 низкий уровень
-отсчитать время в милисекундах равное W
-создать на В3 высокий уровень
-перейти в начало цикла (25 пункт)

26)метка knop2
проверить Т=35, если нет, то Т =Т+1, иначе ничего
27)проверить порт А2, если на нём высокий уровень, то вернуться в основную программу, иначе выполнить цикл:
-отсчитать время в милисекундах равное Q
-создать на В3 низкий уровень
-отсчитать время в милисекундах равное W
-создать на В3 высокий уровень
-перейти в начало цикла (27 пункт)

28)метка knop3
проверить Т=35, если нет, то Т =Т+1, иначе ничего
29)проверить порт А3, если на нём высокий уровень, то вернуться в основную программу, иначе выполнить цикл:
-отсчитать время в милисекундах равное Q
-создать на В3 низкий уровень
-отсчитать время в милисекундах равное W
-создать на В3 высокий уровень
-перейти в начало цикла (29 пункт)

конец

ну надеюсь что я ничего не упустил......вот вроде он , алгоритм))))теперь как это написать то на Си, это ппц......практики нет, .....по ссылкам лазить задрало....куча книг.....бесполезных непонятных примеров........нужна человеческая помощь что бы разобраться......а если мне 1 раз обьяснят как пишится слово "корова", то второй раз я к вам за таким проектом точно не обращусь.......

что это будет????
это будет хрень короче.......4 цвета светодиодов меняется от нажатия на кнопку №1, последовательно 1 меняет другой за 1 нажатие......
а 5 выход нужен чтобы яркость регулировать......будет то открывать транзистор то закрывать.......тоесть среднедний ток за секунду уменьшим, а глаз этого не увидит.....
вот так.....ну что, есть "учителя" , которые готовы "овце" заблудшей обьяснить как это на Си написать??)))))

 

А кварц-то зачем?
Тут никакой точности не надо.

 

Кварц и его обвязку убрать, использовать встроенный RC-генератор. КРЕН-ку убрать, использовать обычный параметрический стабилизатор на стабилитроне 4V7. У кнопок убрать последовательные резисторы, стабилитроны и конденсаторы, оставить только подтягивающие резисторы. Если подключить кнопки к порту "В", то и подтягивающие резисторы можно также убрать, использовать встроенные в м/к.
Зачем такое странное включение ключей и зачем их так много? Это (схема) работать не будет. Порты рассчитаны на максимальный ток 25мА! Достаточно 4-х транзисторов, чтобы зажечь 4 линейки."Много светодиодов с резисторами", это, я так понимаю, светодиодные линейки, стандартные или самопальные. Как подключены светодиоды, триадами с гасящим резистором, или по другому? Линейки обычно подключают плюсом к источнику питания 12В, минусом к коллектору ключа (N-P-N), эмиттер ключа - на общий, базу, через токоограничительный резистор на порт м/к. Можно подтянуть базу к общему резистором ок. 1 кОм. Управление - высоким уровнем открываем ключ, линейка светится, низким уровнем - запираем, линейка гаснет. Или вдуваем ШИМ, тогда можно плавно зажигать-гасить, зажигать линейку не в полную мощность, а на определенный % яркости свечения и прочие извраты делать.