单片机学习小组
直播中

张蕾

7年用户 176经验值
私信 关注

请问51的串口是如何发送中断中读取数据的?

#include#define uchar unsigned char#define uint unsigned intUchar code table[]=“I get ”//空格也算是一个字符Void init(){TMOD=0x20; //设定T1定时器工作方式2TH1=0xfd;  //T1定时器装初值TL1=0xfd;TR1=1;//启动T1REN=1;  //允许串口接收SM0=0;SM1=1;EA=1;//开总中断ES=1;//允许串口中断}Void main(){Init();While(1);//等待中断的发生{If(flag==1) //检测标志位是否为1,检测到为1时说明已经执行过串      口中断服务程序,即收到了数据{ES=0;//关闭串口中断,若不关闭,仍会进入串口中断,此时检测到的仍为1,则又开始发送For{i=0;i<6;i++}{SBUF=table;//将数组中的字符发送出去While(!T1); //等待是否发送完毕,发送完成后T1硬件置1T1=0;  //退出等待}SBUF=a;  //发送从中断中读来的数据while(!ti);TI=0;ES=1;Flag=0;}}}Void ser() interrupt 4{R1=0;   //RI清0,进入串口中断后必须软件清0a=SBUF;  //将SBUF中的数据读给a(最重要)Flag=1;  //将标志位置1}疑问如下:进入whlie(1)这句程序时,已经执行过串口这段程序a=SBUF,而后关闭串口中断ES=0。那么当执行SBUF=a这句程序时,发送的是串口中a的数据。串口中a的数据为什么也是“i get”?

回帖(2)

徐晨曦

2019-7-2 11:10:11
帮顶。。。。
举报

阿信509

2019-7-2 12:58:48
a是什么类型的数据呀没看出来,怎么看出来a的数据就是i get
举报

更多回帖

发帖
×
20
完善资料,
赚取积分