простые и интересные  РАДИОСХЕМЫ сделанные своими руками

» Гость

Мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!



» ДАТАШИТЫ
Например: TDA1562

» СХЕМЫ


Отметить прочитанными   -   Поиск   -   Правила   -   Новые сообщения

Страница 2 из 2«12
Модератор форума: Электродыч, Витинари, Sam 
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » Помогите с кодом на C
Помогите с кодом на C
Вс, 05.07.2015, 23:55 | Сообщение # 11        
adamchuk2012
аватар
  Постов: 14  Offline
ребят. я впервые сел за это дело. пожалуйста помогите разобраться. у меня нет возможности на пике делать. их после осваивать буду. я заплатить готов
Пн, 06.07.2015, 12:04 | Сообщение # 12        
msmmmm2
аватар
  Постов: 282  Offline
if (PINC&(1<<PC1))
{
выполняется, если на PC1 - "1"
}

Да и зачем так сложно, если пины не перебираются - задай условие железно
if (PC1==0){} или if (PC1!=0){} смотри, что у тебя по логике.

Помнишь анекдот про еврея, который просил у бога выигрыша в лотерею, а билетик не покупал? Ты выложи задачу так: входы - нога такая-то это датчик ВУ, наличие воды - "1"; выходы - нога такая-то, уровень "1" - вкл. Условие (пример): пока воды нет, нагрев не включать; если НУ = 1, вкл нагрев и контролировать НУ (для аварийного отключения) и ВУ. Если ВУ = 1, откл нагрев, вкл пищалку на 10с, ....

Если так поставишь задачу, то сам все и сделаешь, да и помогут быстрее, потому что будет понятно, чего хочешь. Это называется "составление математической модели" - 90% работы программиста. Закодить правильно поставленную задачу - легко решаемая задача даже для неопытных.


Отредактировал msmmmm - Пн, 06.07.2015, 12:07
Пн, 06.07.2015, 18:30 | Сообщение # 13        
adamchuk2012
аватар
  Постов: 14  Offline
ага. ну давайте попробуем. PC0- датчик верхнего уровня, PC1- датчик нижнего уровня, PB1- НАГРЕВ, PB2- ЗВУК, PB3- СБРОС ПАРА, PB4- ДОЛИВ ВОДЫ.
Логика. если PC0=0 и PC1=0 то- нагрев воды( PB1=1, PB2=0, PB3=0, PB4=0)
PC0=1 и PC1=0 то- нагрев воды( PB1=1, PB2=0, PB3=0, PB4=0)
PC0=1 и PC1=1 то- отключить нагрев воды -(PB1=0), пописчать- PB2=1 10 сек, сбросить пар PB3=1 минуту, сбрасывать пар и доливать воду PB3=1 PB4=1 пока оба датчика вода заполнит оба датчика PC0=0 и PC1=0, и после опять включить нагрев PB1=1. Вот собственно и всё. и как раз проблема с последним.
мои циклы глючат когда я задаю им к проверке оба датчика. то есть прекратить лить воду тогда когда и первый второй в воде.

Добавлено (06.07.2015, 18:30)
---------------------------------------------
забыл добавить. 1 на датчиках- воды нет. 0 на датчиках- вода есть.

Пн, 06.07.2015, 21:51 | Сообщение # 14        
msmmmm2
аватар
  Постов: 282  Offline
Попробуй так, писал в текстовом редакторе, не тестил:

#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB = 0xFF;
PORTB = 0x00;
DDRC = 0x00;
PORTC = 0xFF;
while(1)
{
switch (PINC & 3)
{
case 0: PORTB = 0b00000010;break; //PB1=1
case 1: PORTB = 0b00000010;break; //PB1=1
case 2: PORTB = 0b00000000;break; // неисправность: НУ нет, ВУ - есть, все откл
case 3:
{PORTB = 0b00000100 ; // выключаю нагрев, пищу 10 сек PB2=1
_delay_ms(10000) ; // 10c
PORTB = 0b00001000; // прекратил пищать включил сброс пара PB3=1
_delay_ms(60000); // 60c
PORTB = 0b00011000; // PB3=1 PB4=1
while ((PINC & 3) != 0){}; // пока оба входа не =0 стоим, тупим
};
}
}
}


Отредактировал msmmmm - Вт, 07.07.2015, 19:26
Вт, 07.07.2015, 00:37 | Сообщение # 15        
djsanya123
аватар
  Постов: 1824  Offline Друзья 
adamchuk2012, нарисуй схемку, напишу код
Вт, 07.07.2015, 19:29 | Сообщение # 16        
msmmmm2
аватар
  Постов: 282  Offline
Все, код в сообщении #14 подправил, в протеусе работает.
Форум радиолюбителей » СХЕМЫ » МИКРОСХЕМЫ » Помогите с кодом на C
Страница 2 из 2«12
Поиск:
Кто есть кто на форуме радиолюбителей: Администратор Модераторы Друзья Пользователи
Группа вконтакте Канал ютуб Группа в фэйсбук Мобильная версия © 2010-2016, "Радиосхемы". Все права защищены. Почта