串行通信的波特率可从4个开关选择,波特率分别为1200,2400,4800,9600。
这有个仿真图可以参考,图太大我分2张了。
也可以自己做一个图写程序。答完后追加100赏金~
你好,这个就是我要的那个程序吗?
追答这只是可以串口9600收发数据的,你要的,可以改一下就可以了。
你好,能稍微解释下关键的语句吗?
追答void uart() interrupt 4
{
if(RI)
{
RI=0;
dat=SBUF;//串口接收数据
P2=dat; //新增,将接收数据送P2口
}
}
void delay(uchar a) //延时a毫秒
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
TMOD=0x20;
bord=0xfd; //缺省波特率为9600
TH1=TL1=bord;
TR1=1;
num=0;
dat=0;
while(1)
{
TH1=TL1=bord;
P1=0xff;
key=P1&0x0f;
switch(key)
{
case 0x0e:bord=0xe8;break; //1200波特率
case 0x0d:bord=0xf4;break; //2400
case 0x0b:bord=0xfa;break; //4800
case 0x07:bord=0xfd;break; //9600
default:SBUF=dat;while(TI==0);TI=0;delay(100);dat++;break;//100毫秒发送一个数据
}
}
}