要求:串口调试助手向单片机发送2A 30 30 30 39 30 31 30 30 30 30 30 30 4A 0D 时,单片机P1.0口外接指示灯做约1秒的闪烁。当接收到2A 30 30 30 39 30 32 30 30 30 30 30 30 4B 0D 时,单片机P1.1口外接指示灯做约1秒的闪烁,P1.0口关闭。延时不需要很准确。谢谢了!
请帮忙在每句语言后面加上注释,因为我是初学者,谢谢!
求一个51C语言串口通讯源程序
答案:2 悬赏:10 手机版
解决时间 2021-12-26 01:34
- 提问者网友:风月客
- 2021-12-25 03:46
最佳答案
- 五星知识达人网友:梦中风几里
- 2021-12-25 05:22
中断方式接收,如果你发送的15个字符全部收到,则标志位flg_RXD=1;认为已经收完
com_interrupt(void) interrupt 4 using 3
{
if(RI)
{ //处理接收中断
RI=0; //清除中断标志位
dat_buf[n++]=SBUF; //接收串口数据
}
if(n==15)flg_RXD=1;
}
主函数处理
....
if(flg_RXD)//认为已经成功接收到你发送的15个字符
{
flg_RXD=0;//复位等待下次数据接收
for(i=0;i<15;i++)
if(dat_buf[i]==dat1[i])//如果接收到的数据和你dat1数据完全相同,则执行你的单片机P1.0口外接指示灯做约1秒的闪烁
{
//执行单片机P1.0口外接指示灯做约1秒的闪烁
}
if(dat_buf[i]==dat2[i])
{
//执行你的单片机P1.1口外接指示灯做约1秒的闪烁,P1.0口关闭
}
}
ok希望对你能有帮助
com_interrupt(void) interrupt 4 using 3
{
if(RI)
{ //处理接收中断
RI=0; //清除中断标志位
dat_buf[n++]=SBUF; //接收串口数据
}
if(n==15)flg_RXD=1;
}
主函数处理
....
if(flg_RXD)//认为已经成功接收到你发送的15个字符
{
flg_RXD=0;//复位等待下次数据接收
for(i=0;i<15;i++)
if(dat_buf[i]==dat1[i])//如果接收到的数据和你dat1数据完全相同,则执行你的单片机P1.0口外接指示灯做约1秒的闪烁
{
//执行单片机P1.0口外接指示灯做约1秒的闪烁
}
if(dat_buf[i]==dat2[i])
{
//执行你的单片机P1.1口外接指示灯做约1秒的闪烁,P1.0口关闭
}
}
ok希望对你能有帮助
全部回答
- 1楼网友:蓝房子
- 2021-12-25 05:41
我不会~~~但还是要微笑~~~:)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯