РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

Форум на ЭЛВО


РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ



  • Страница 2 из 2
  • «
  • 1
  • 2
Архив - только для чтения
Помогите с кодом на C
Сообщение # 11        
adamchuk2012
аватар
  Постов: 14   ОК 
ребят. я впервые сел за это дело. пожалуйста помогите разобраться. у меня нет возможности на пике делать. их после осваивать буду. я заплатить готов
Сообщение # 12        
msmmmm2
аватар
  Постов: 166   ОК 
if (PINC&(1<<PC1))
{
выполняется, если на PC1 - "1"
}

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

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

Если так поставишь задачу, то сам все и сделаешь, да и помогут быстрее, потому что будет понятно, чего хочешь. Это называется "составление математической модели" - 90% работы программиста. Закодить правильно поставленную задачу - легко решаемая задача даже для неопытных.
Сообщение # 13        
adamchuk2012
аватар
  Постов: 14   ОК 
ага. ну давайте попробуем. 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 на датчиках- вода есть.

Сообщение # 14        
msmmmm2
аватар
  Постов: 166   ОК 
Попробуй так, писал в текстовом редакторе, не тестил:

#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 стоим, тупим
};
}
}
}
Сообщение # 15        
djsanya123
аватар
  Постов: 1072   Друзья 
adamchuk2012, нарисуй схемку, напишу код
Сообщение # 16        
msmmmm2
аватар
  Постов: 166   ОК 
Все, код в сообщении #14 подправил, в протеусе работает.
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Внимание! Форум переехал на Tehnodium.ru



© 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA