我本想发一个字节.doc我本想发一个字节.doc
我本想发一个字节..接一个字节.. #include uchar a;
uint flag;
void main(void) {
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{ EA=0;
SBUF=a;
while(!TI)
TI=0;
flag=0;
EA=1;
}
}
}
////////////////////////////...
我本想发一个字节.doc
我本想发一个字节..接一个字节.. #include
uchar a;
uint flag;
void main(void) {
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
SCON=0x50;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{ EA=0;
SBUF=a;
while(!TI)
TI=0;
flag=0;
EA=1;
}
}
}
////////////////////////////
void serialint() interrupt 4
{
a=SBUF;
P1=a;
RI=0;
flag=1;
}
问补充:
#define uint unsigned int
#define uchar unsigned char
这两条语句漏了..补上..嘿嘿.. 两个错误。while(!TI)
TI=0;
这是一个。while(!TI) 后面少一个分号~~变成了,原本正确的程序是想让TI==1的时候,把TI清零,但是你现在变成了 当TI为0的时候执行TI=0,而当TI变成1的时候却反而不执行TI=0了,因此每次发送完成一个字符以后,TI的值没有清零,这样TI始终为1。
第二个错误是您的串口中断里面没有判断是接收中断还是发送中断,单片机的串口中断是TI,或者RI中任何一个为1,都会进入中断的,因此你这个错误恰好跟前面的错误首位呼应,造成了flag不断为1,也就造成了 不断发送数据,不断进入中断这个死循环。。哈哈,错得这么巧妙我也觉得很不可思议。。
本文档为【我本想发一个字节.doc】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。