串口,外部中断,定时器
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit led1=P2^0;
sbit key=P3^2;
u8 i,a,b,c;
u8 x;
void delay(u8 a)
{while(a--)
{u8 j=180;
while(j--);}
}
void yvchuli()
{
TMOD|=0x01;
TH0=0xfc;
TL0=0x18;
TR0=0;
ET0=1;
TMOD|=0x20;
SCON=0x50;
TL1=0xf3;
TH1=0xf3;
PCON=0x00;
ES=1;
TR1=1;
IT0=1;
EX0=1;
EA=1;
}
void main()
{
yvchuli();
while(1)
{
}
}
void chuankou()interrupt 4
{
i=SBUF;
RI=0;
}
void time0() interrupt 1
{
TH0=0xfc;
TL0=0x18;
b++;
if(b==100)
{
SBUF=i;
i++;
led1=~led1;
while(TI==0);
TI=0;
b=0;
}
}
void zhongduan0() interrupt 0
{
delay(10);
if(key==0)
{
c++;
if(c==1)
{
TR0=1;
}
if(c==2)
{
TR0=0;
c=0;
}
}
while(key==0);
}
串口通信
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
u8 receive;
void yvchuli()
{
TMOD=0x20;
TL1=0xf3;
TH1=0xf3;
PCON=0x80;
TR1=1;
SCON=0x50;
ES=1;
EA=1;
}
void main()
{
yvchuli();
while(1)
{if(receive==0x01)
{led=0x80;}
}
}
void chankou()interrupt 4
{
receive=SBUF;
RI=0;
SBUF=receive;
while(TI==0);
TI=0;
}
串口中断
#include<reg51.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
#define led P2
u8 receive;
u8 x;
void yvchuli()
{
TMOD=0x20;
TL1=0xf3;
TH1=0xf3;
TR1=1;
PCON=0x80;
SCON=0x50;
ES=1;
EA=1;
}
void delay(u8 i)
{while(i--)
{u8 j=180;
while(j--);}
}
void main()
{
yvchuli();
led=0xff;
while(1)
{
if(receive==0x01)
{
led=~led;
receive=0;
}
}
}
void chuankou()interrupt 4
{
receive=SBUF;
RI=0;
receive+=1;
SBUF=receive;
while(TI==0);
TI=0;
}