定时器
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P2^4;
sbit led2=P2^5;
sbit led3=P2^6;
sbit led4=P2^7;
sbit key3=P3^2;
sbit key4=P3^3;
#define led P2
void delay(u16 i)
{
while(i--)
{
u16 j=120;
while(j--);
}
}
void yvchuli()
{
IT0=1;
EX0=1;
IT1=1;
EX1=1;
TMOD|=0x01;
TH0=0xFC;
TL0=0X18;
ET0=1;
TR0=1;
TMOD|=0x10;
TH1=0xFC;
TL1=0x18;
ET1=1;
TR1=1;
EA=1;
}
void main()
{
yvchuli();
led=0xfe;
while(1);
}
void waiduan0()interrupt 0
{
delay(10);
if(key3==0)
{
led2=~led2;
while(key3==0);
}
}
void waiduan1()interrupt 2
{
delay(10);
if(key4==0)
{
led1=~led1;
while(key4==0);
}
}
void time0()interrupt 1
{
static u16 i,m;
TH0=0xFC;
TL0=0X18;
i++;
if(i==500)
{
for(m=0;m<8;m++)
{
led=_crol_(led,1);
delay(100);
i=0;
}
}
}
void time1()interrupt 3
{ static u16 m;
TH1=0xFC;
TL1=0X18;
m++;
if(m==1000)
{
m=0;
led4=~led4;
}
}
定时器2
#include<reg51.h>
#define u8 unsigned char
#define u16 unsigned int
#define led P2
void delay(u8 i)
{u8 j=124;
while(i--)
{while(j--);}
}
void yvchili()
{
EA=1;
TR0=1;
ET0=1;
TMOD=0x06;
TL0=0xfe;
TH0=0xfe;
}
void main()
{
led=0x00;
yvchili();
while(1);
}
void time0() interrupt 1
{
led=~led;
}
定时器和串口
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
int receive;
int x=0,a=0;
void yvchuli()
{
TMOD|=0x20;
TL1=0x30;
TH1=0x30;
TR1=1;
ET1=1;
PCON=0x80;
SCON=0x50;
ES=1;
EA=1;
TMOD|=0x02;
TH0=0x100;
TL0=0x100;
TR0=1;
ET0=1;
}
void main()
{
yvchuli();
P2=0x00;
while(1)
{
}
}
void t0() interrupt 1
{
a++;
if(a==1000)
{
P2=0xff;
a=0;
}
}
void t1() interrupt 3
{
x++;
if(x==1000)
{
P2=0x0f;
x=0;
}
}
void chuankou()interrupt 4
{
P2=0x00;
receive=SBUF;
RI=0;
SBUF=receive;
while(TI==0);
TI=0;
}