Страница 2 из 2

Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 07:23:17
mnbv
У поворотника другой алгоритм и его функционал на PIC'е можно весомо дополнить. Но если задача формулируется только после многочисленных расспросов...

Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 18:25:32
Аlex
vovik15 писал(а):да,я делаю поворотник
Значит мне пора на битву экстрасенсов :)))

http://forum.amadeus-project.com/index. ... topic=1239

Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 19:03:49
vovik15
спасибо за помощь
сам все написал

Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 19:05:10
mnbv
Это о ком? "На повороте не включают поворотник моргают 4 раза. Так и узнают друг друга."

Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 19:10:50
Аlex
vovik15 писал(а):сам все написал
Ну поделитесь тогда кодом, нельзя так вот ниочём тему заканчивать. :)

Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 20:32:47
vovik15
вот, выкладываю код и проект в протеусе
помогите его доработать
нужно:
1 добавить режим движения задним ходом,чтобы мигали оба поворотника сразу
2 если поворотник долго включен ,при его выключении они не мигали еще 5 раз

Код: Выделить всё

#include <pic.h>
// pic12f629

__CONFIG (INTIO & UNPROTECT & BOREN & MCLRDIS & PWRTEN & WDTDIS);
//конфигурация сигнальных линий
#define R GPIO2 //правый поворотник
#define L GPIO1 //левый поворотник

#define SR GPIO0 //сигнал от правого
#define SL GPIO3 //сигнал от левого

void delay_R (void);//функция задержки для правого поворотника
void delay_L (void);//функция задержки для левого  поворотника

void POV_R (void); //функция обработки правого поворотника
void POV_L (void); //функция обработки левого  поворотника

unsigned char flag_stop; //флаг для остановки мигания
unsigned int time; //время для задержки опроса клавиш


void main (void){ 
//конфигурируем контроллер
INTCON = 0; // запрет прерываний
CMCON  = 7; // отключаем аналоговый компаратор
TRISIO = 0b001001;//настройка направленя работы линий
GPIO = 0; // обнуляем линии
GPPU = 0; // выключаем подтягивающие резисторы

while(1){ // начало бесконечного цикла 

/*здесь проверяем включен ли поворот*/
if(SR==0) {time++;if(time>7000){time=0;POV_R();}}//и не реагируем на всякую Х....
if(SL==0) {time++;if(time>7000){time=0;POV_L();}}//и не реагируем на всякую Х....

} //конец бесконечного цикла
} //конец программы


/*функция обработки правого поворотника*/
void POV_R (void)
{
unsigned char x;//переменная для цикла
for (x=5;x>0;x--)
{ //цикл на 5 витков
R=1;//включаем правый
delay_R(); //пауза
if(flag_stop==1) {R=0; flag_stop=0; break;} //выключаем и завершаем цикл
R=0;//выключаем правый
delay_R();//пауза
if(flag_stop==1) {flag_stop=0; break;}//завершаем цикл
}//конец цикла
}//конец функции

/*функция обработки левого поворотника*/
void POV_L (void)
{
unsigned char x;
for (x=5;x>0;x--)
{
L=1;
delay_L();
if(flag_stop==1) {L=0;flag_stop=0; break;}
L=0;
delay_L();
if(flag_stop==1) {flag_stop=0; break;}
}//конец цикла
}//конец функции


//функция задержки для правого поворотника*/
void delay_R (void)
{
unsigned int tmp;//временная переменная
tmp=15000;//устанавливаем значение
do{tmp--;
if(SL==0) {flag_stop=1;break;} //завершаем цикл если нажата ПРОТИВОПОЛОЖНАЯ КЛАВИША

} while(tmp>0);
}

//функция задержки для левого поворотника*/
void delay_L (void)
{
unsigned int tmp;
tmp=15000;
do{tmp--;
if(SR==0) {flag_stop=1;break;}//завершаем цикл если нажата ПРОТИВОПОЛОЖНАЯ КЛАВИША
} while(tmp>0);
}


Re: мигалка на Pic12f629

Добавлено: Ср сен 25, 2013 20:42:01
Аlex
добавить режим движения задним ходом,чтобы мигали оба поворотника сразу
На сколько мне известно, для сигнализации заднего хода существуют спец. огни, а для мигания обоими поворотниками существует спец. кнопочка :)

Re: мигалка на Pic12f629

Добавлено: Сб сен 28, 2013 19:13:12
vovik15
ну что? этот код можно оптимизировать?

Re: мигалка на Pic12f629

Добавлено: Сб сен 28, 2013 19:22:55
dosikus
vovik15 писал(а):ну что? этот код можно оптимизировать?
Конечно можно, переписав заново ...

2.7 Запрещается полное цитирование предыдущего сообщения. Допускается цитирование только части сообщения, необходимой для смысловой связи с предыдущим сообщением.

Предусматриваются следующие виды наказаний за нарушение пунктов данных Правил: за нарушение: п 2.7 - Предупреждение. При повторном нарушении - бан на усмотрение модератора.