发 帖  
原厂入驻New

m1发送给上位机来控制数码管亮用串口,不会判断多个字符怎么办

111 程序 串口
分享
我想给 m  换成m1怎么改程序呢?  哪位大神指点一下,关于串口的


void serial_port_init()
{
TMOD=0x20;
TH1=0xfd; //9600
TH2=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}






void duan() interrupt 4
{
   
RI=0;
s_flag=SBUF;


switch(s_flag)
{
case 'm' : wela=1;P0=0xfe;wela=0;dula=1;P0=0xff;dula=0;break; //怎样设置成m1
case 'l' : P1=0xfe;break;
case 'b' : beer=~beer;delay_1ms(500);beer=1;break;
}
}
0
2020-7-17 08:10:31   评论 分享淘帖 邀请回答

相关问题

7个回答
云汉达人

由于内容比较多,所以只好单独发帖给你做解答了,详细实现方法请看这里(有验证):


单片机与PC通信之单片机接收字符串详解!
http://www.icxbk.com/community/forum.php?mod=viewthread&tid=72601
(出处: ICKEY BBS)
2020-7-17 11:15:52 评论

举报

云汉达人
case 'm'时保存一个全局变量,当s_flag下一次是'1'的时候,再做case 'm'里的那些操作。如果s_flag下一个字符不是‘1’则清空全局变量。
2020-7-17 11:26:03 评论

举报

设置,同时接收到M和1的时候才触发事件就好
2020-7-17 11:43:16 评论

举报

以下是參考設計


char flag_m = 0; void duan() interrupt 4 { RI=0; s_flag=SBUF; switch(s_flag) { case '1' : if(flag_m==1) { wela=1; P0=0xfe; wela=0; dula=1; P0=0xff; dula=0; } flag_m=0; break; // 怎样设置成m1 case 'm' : flag_m=1; break; case 'l' : flag_m=0; P1=0xfe; break; case 'b' : flag_m=0; beer=~beer; delay_1ms(500); beer=1; break; } }


供參考
2020-7-17 11:55:03 评论

举报

云汉达人

你的问题在于SBUF是char,但是“m1”是string,所以,你的代码不能简单改动实现,如果要改动,呵呵,很大
2020-7-17 12:01:14 评论

举报

云汉达人

要知道m 是字符,m1就是字符串了。
如果要是m1,你就不能收到一个数据就去判断,要判断两个字符(收到的数据)啊。
2020-7-17 12:15:25 评论

举报

m1是字符窜了,要改的话很麻烦啊
2020-7-17 12:34:13 评论

举报

只有小组成员才能发言,加入小组>>

311个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表