nm5 (10.03.2005 12:58, просмотров: 1970)
Кто хорошо знает СИ подскажите начинающему Кто хорошо знает СИ подскажите начинающему
Что я делаю не правильно нужно делать задержку 1-2 сек через таймер
/* AT89C2051
Proview32 C51 Compiler.
****************** AT89C2051 *****************
Р1,7 ГАЗ
Р1,6 УПРАВЛЕНИЕ
Р1,5 МОТОР
Р1,4 РЕЛЕ РЕЗЕРВ
Р1,3 СВЕТОДИОД
**************
Р3,1 СТАРТ
*****************************************************
*/
#include <2051.h> /* special function register declarations */
#include
unsigned char sec100,sec,sec5,min,hour,flag1,command,temp,opto,temp1,metka1;
/* above must be defined as register for tiny model */
unsigned char i,digit, k,m;
char cputick,key,delay,count1;
/*my*/
void pause(int);
void keypress();
void scanpole(); /* наборное поле*/
void varim();
void stopsvarka();
void prixvatki();
void delay2();
/*end my*/
void timer0int (void) interrupt 1 using 1 {
TH0 |= 0xfe; // reload timer 0 with 0DC00H
cputick++;
metka1++;
}
void int0er (void) interrupt 2 {
int m;
for (m = 0; m < k*10000; m++);{
}
P16 = 0;
pause(20);
P16 = 1;
Здесь будет управление тиристором не доделано
}
/* ############################################################################*/
void main()
{
EX1 = 1;
EA = 1;
ET0 = 1; // or IE |= 0x82; /* set bit EA and Timer0 enable */
TMOD |= 0x01; /* timer 0 run 16 bit counter */
TR0 = 1; //or TCON |= 0x10; /* run timer 0 */
cputick = 0;
TH0 |= 0xfe;
sec = 0;
key = 0;
flag1 = 0;
k = 0;
temp1 = 0;
while(1)
{
{ keypress();
if (key == 1)
varim();
else
stopsvarka();
if (metka1==3)
metka1=0;
if (cputick == 500)
{cputick = 0;}
}
}
}
/* ############################################################################*/
void varim()
{
if (temp1 == 0)
{
P17 = 0;
if ( metka1 > 2) (что тут не правильно нужно сделать задержку)
{
P15 = 0;
P14 = 0;
P13 = 0;
k = 10;
temp1 = 1;
metka1 =0;
} }
}
void stopsvarka()
{
if (temp1 == 1)
{
P16 = 1;
P15 = 1;
P14 = 1;
P13 = 1;
if ( metka1 > 2) ) (что тут не правильно нужно сделать задержку)
{
P17 = 1;
temp1 = 0;
metka1 =0;
}
}
}
void keypress() /* if key pressed key */
{
if (P31 == 0) /* if key pressed P3.4 became low */
{ pause(5);
if (P31 == 0)/* */
key = 1; /* */
else
key = 0;
}
else
key = 0;
}
void delay2()
{
int i;
for (i = 0; i < 150; i++)
;
}
/*
*/
void pause(j)
int j;
{
int i;
for (i = 0; i < j; i++)
;
}