定时器流水灯
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
void delay(u16 i)
{
while(i--)
{
u16 j=120;
while(j--);
}
}
void yvchuli()
{
TMOD=0x01;
TH0=0xFC;
TL0=0X18;
ET0=1;
TR0=1;
EA=1;
}
void main()
{
yvchuli();
led=0xfe;
while(1);
}
void time0()interrupt 1
{
static u16 i,m;
TH0=0xFC;
TL0=0X18;
i++;
if(i==1000)
{
for(m=0;m<8;m++)
{
led=_crol_(led,1);
delay(100);
i=0;
}
}
}
外部中断
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit key=P3^2;
void delay(u8 i)
{
while(i--);
}
void yvchuli()
{
IT0=1;
EX0=1;
EA=1;
key=1;
}
void main ()
{
yvchuli();
P2=0x00;
while(1)
{
}
}
void waiduan1()interrupt 0
{
if(key==0)
{
delay(50);
if(key==0)
{
P2=~P2;
}
}
}
中断
#include<reg51.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^6;
sbit led2=P2^7;
sbit key3=P3^2;
sbit key4=P3^3;
void delay(u16 i)
{
while(i--)
{
u16 j=120;
while(j--);
}
}
void zhongduan0()
{
IT0=1;
EX0=1;
IT1=1;
EX1=1;
EA=1;
}
void main()
{
zhongduan0();
while(1);
}
void waiduan1()interrupt 0
{
delay(10);
if(key3==0)
{
led=~led;
while(key3==0);
}
}
void waiduan2()interrupt 2
{
delay(10);
if(key4==0)
{
led2=~led2;
while(key4==0);
}
}