|
6S用定時(shí)器中斷來(lái)定時(shí)。main函數(shù)內(nèi)先初始化變量 然后再用while函數(shù)進(jìn)行循環(huán)。
下面程序有個(gè)框架, 你再根據(jù)自己的需求改一改,調(diào)試調(diào)試。。
#include<reg52.h>
typedef unsigned char U8;
sbit led=P1^0;
sbit sun=P1^1;
sbit pir=P1^2;
U8 j;
void pwm(unsigned char a)
{
U8 i;
led=0X00;
{
for(i=0;i<255;i++)
{
if(i<a)
led=0xFF;
else
led=0x00;
}
}
}
void delay10ms(unsigned int c)
{
unsigned char a,b;
for(;c>0;c--)
for(a=38;a>0;a--)
for(b=130;b>0;b--);
}
void Timer1Init(void)
{
TMOD &= 0x0F;
TL1 = 0x00;
TH1 = 0xDC;
TF1 = 0;
TR1 = 1;
}
void main()
{
Timer1Init();
while(1)
{
if(j == 600)
{
led = 1;
TR1 = 0;
}
if(!pir)
{
delay10ms(5);
if(!pir)
{
pwm(25);
}
}
if(!sun)
{
delay10ms(5);
if(!sun)
{
led = 0;
TR1 = 1;
}
}
}
}
void Timer0() interrupt 1
{
if(!sun)
{
TL1 = 0x00;
TH1 = 0xDC;
j++;
}else
{
j = 0;
}
} |
|