Witam.
Mam napisany w C++ działający progam, który realizuje:
wciskam przycisk 1 dioda świeci
wciskam przycisk 2 dioda nie świeci
wciskam przycisk 3 didoa mruga sobie
wciskam przycisk 4 dioda przestaje mrugać(nie świeci)
Program działa, jednkaże chciałem go zrealizować w inny sposób, przerobić (ale ma robić dokładnie to samo) tylko, ze kod ma być inny i nie chce działać mruganie (reakcja na przycisk 1 i 2 działa, na 3 i 4 czyli mruganie, nie działa).
na pierwszym listingu jest program działający, na drugim program, który nie działa.
Może wiecie w czym tkwi problem?
Pozrdawiam.
Mam napisany w C++ działający progam, który realizuje:
wciskam przycisk 1 dioda świeci
wciskam przycisk 2 dioda nie świeci
wciskam przycisk 3 didoa mruga sobie
wciskam przycisk 4 dioda przestaje mrugać(nie świeci)
Program działa, jednkaże chciałem go zrealizować w inny sposób, przerobić (ale ma robić dokładnie to samo) tylko, ze kod ma być inny i nie chce działać mruganie (reakcja na przycisk 1 i 2 działa, na 3 i 4 czyli mruganie, nie działa).
na pierwszym listingu jest program działający, na drugim program, który nie działa.
#include <8051.h> // kwarc 6 MHz srodowisko M-IDE programator ISPPROG
#include <stdio.h>
#define PrzyciskON1 P2_0 //przycisk 1
#define PrzyciskOFF1 P2_1 //przycisk 2
#define PrzyciskON2 P2_2 //przycisk 3
#define PrzyciskOFF2 P2_3 //przycisk 4
#define PortLED P2_5 //wyjscie diody
bit MIGANIE;
bit ZAPALENIE;
//Dwa przyciski, dioda mruga
//dioda świeci ciągle
//Funkcja Delay prawidłowa
//pętla wykonywana jest time razy
void Delay (unsigned int time)//funkcja delay(opoznienie)
{
unsigned int j;
{
while (time >=1)
{
for (j=0; j<5; j++) //50 oznacza 5 sekund, 50*0.01
{
TH1 = 0xC350;
TL1 = 0;
TR1 = 1;
while (!TF1);
TF1 = 0;
}
TR1 = 0;
time--;
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void main(void) //program glowny
{
TMOD = 0x10;
while(1)
{
if(!PrzyciskON1){MIGANIE=1;} //włączenie migania
if(!PrzyciskOFF1){MIGANIE=0;}//wyłączenie migania
if(!PrzyciskON2){ZAPALENIE=1;}//zapelenie ciągłe diody
if(!PrzyciskOFF2){ZAPALENIE=0;}//gaszenie zapalonej ciągle diody
if(MIGANIE&&!ZAPALENIE){PortLED=0;Delay(1);PortLED=1;Delay(1);} //jesli jest miganie i nie ma zapalenia to migaj
else {Delay(0.4);}//opóźnienie dla klawiszy jak dioda nie miga
if(ZAPALENIE){PortLED=0;}
else {PortLED=1;}
#include <8051.h>
#include <stdio.h>
#define PrzyciskON1 P2_0 //przycisk 1
#define PrzyciskOFF1 P2_1 //przycisk 2
#define PrzyciskON2 P2_2 //przycisk 3
#define PrzyciskOFF2 P2_3 //przycisk 4
#define PortLED P2_5 //wyjscie diody
//Program dwa przyciski
//Zapalenie/gaszenie diody jedna para przyciskow
//Zapalenie/gaszenie diody druga para przyciskow
bit ZAPALENIE;
bit MIGANIE;
void Delay(unsigned int time)
{
unsigned int j;
while (time >=1)
{
for (j=0;j<20;j++);
time--;
}
}
void KeyPressed (void)
{
{ZAPALENIE=1;}
if(ZAPALENIE){PortLED=0;}
}
void KeyNotPressed(void)
{
{ZAPALENIE=0;}
if(!ZAPALENIE){PortLED=1;}
}
void KeyPressed2(void)
{
{MIGANIE=1;}
if(MIGANIE){PortLED=0;Delay(1);PortLED=1;Delay(1);}
}
void KeyNotPressed2(void)
{
{MIGANIE=0;}
if(MIGANIE){PortLED=1;}
}
void main(void)
{
while(1)
{
if (!PrzyciskON1)
{
Delay(20);
if (!PrzyciskON1)
{
KeyPressed();
}
}
if (!PrzyciskOFF1)
{
Delay(20);
if (!PrzyciskOFF1)
{
KeyNotPressed();
}
}
if (!PrzyciskON2)
{
Delay(20);
if (!PrzyciskON2)
{
KeyPressed2();
}
}
if (!PrzyciskOFF2)
{
Delay(20);
if (!PrzyciskOFF2)
{
KeyNotPressed2();
}
}
}
}
Może wiecie w czym tkwi problem?
Pozrdawiam.