
我的代码:
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table[]="_$ I get ";//定义了一个字符类型的编码数组
sbit led=P1^0;
void init()//初始化函数
{
TMOD=0X20;//设定T1定时器的工作方式2
TH1=0Xfd;//T1定时器初装值
TL1=0xfd;//T1定时器初装值
TR1=1;//启动T1定时器
//////////////////////////////
SM0=0;//设定串口工作方式1
SM1=1;//设定串口工作方式1
REN=1;//允许串口接收
//////////////////////////////
EA=1;//开总中断
ES=1;//开串口中断
}
void main()
{
init();//初始化
while(1)
{
if(flag==1)//首先检测标志位flag是否为1,flag为1时,说明程序执行过串口中断程序,收到了数据。
{
flag=0;//flag置为0,表示还没收到数据
}
}
}
void ser() interrupt 4 //串口中断服务程序
{
RI=0;//收到数据后RI为1,由中断服务程序清0后才能进入下一次的中断
a=SBUF;//把SBUF(串口接收寄存器)的数据读给a
ES=0;//为了发送数据,关串口中断,防止出错
TI=1;
printf("sb233\n",a);
while(!T1);//等待数据发送完毕,发送完毕后TI为1,while(!TI)才结束循环
TI=0;
ES=1;//开串口中断
flag=1;//flag置为1,表示已经收到数据
}
#include<reg52.h>
#include<stdio.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char flag,a,i;
uchar code table[]="_$ I get ";//定义了一个字符类型的编码数组
sbit led=P1^0;
void init()//初始化函数
{
TMOD=0X20;//设定T1定时器的工作方式2
TH1=0Xfd;//T1定时器初装值
TL1=0xfd;//T1定时器初装值
TR1=1;//启动T1定时器
//////////////////////////////
SM0=0;//设定串口工作方式1
SM1=1;//设定串口工作方式1
REN=1;//允许串口接收
//////////////////////////////
EA=1;//开总中断
ES=1;//开串口中断
}
void main()
{
init();//初始化
while(1)
{
if(flag==1)//首先检测标志位flag是否为1,flag为1时,说明程序执行过串口中断程序,收到了数据。
{
flag=0;//flag置为0,表示还没收到数据
}
}
}
void ser() interrupt 4 //串口中断服务程序
{
RI=0;//收到数据后RI为1,由中断服务程序清0后才能进入下一次的中断
a=SBUF;//把SBUF(串口接收寄存器)的数据读给a
ES=0;//为了发送数据,关串口中断,防止出错
TI=1;
printf("sb233\n",a);
while(!T1);//等待数据发送完毕,发送完毕后TI为1,while(!TI)才结束循环
TI=0;
ES=1;//开串口中断
flag=1;//flag置为1,表示已经收到数据
}
