#include<reg52.h>
#include"intrins.h"
unsigned char tem[8]; //缓存初始化
unsigned int k;
unsigned int i=0,j=0;
void disp(void);
void delay(int);
void du(void) //初始化程序
{
TMOD=0x20; //T1工作在方式2 /*设计产生波特率1.2kb/s*/
PCON=0x00; //SMOD=0
TL1=0xe6; //T1置初值
TH1=0xe6;
TR1=1; //开启定时器T1
SCON=0x50; //串口工作方式为1 /*设计串行口*
EA=1;
ES=1;
ET1=0;
TR1=1; //开启定时器T1
RI=0;
}
void receive(void) interrupt 4 using 2 //串口中断程序
{
if(RI&(SBUF!=0xbb)) //数据接收完让cpu取走数据
{ ES=0; //关闭cpu中断
tem[j++] = SBUF; //数据写入缓存
if(j>7)j=0;
else ;
ES=1; //开中断
RI=0; //软件清零
}
else RI=0;
}
void disp(void) //显示已传送数据
{
P0=tem[i++];
if(i>7)i=0;
else ;
delay(1);
P2=_crol_(P2,1); //左移一位
RI=0;
}
void delay(int time) //延时子程序
{
for(;time>0;time--)
for(k=0;k<100;k++);
}
void main(void)
{ P2=0xfe;
du();
while(1)
{
disp();
}
}
zhongduan.rar_c串口中断
版权申诉
129 浏览量
2022-09-19
18:24:32
上传
评论
收藏 755B RAR 举报
周楷雯
- 粉丝: 80
- 资源: 1万+