首先你要用软件允许中断,即
当单片机接收到一帧数据后RI会置1,向CPU申请中断若之前有中断允许,则产生了中断进入中断服务程序。当然单片机发送完一帧数据,TI也会置1同样会产生中断!
一般我们在发送数据时要关中断,因为一般你不用在发送时不用处理数據;接收数据时要开中断以便你在中断服务程序中将接收到的数据进行存储并处理。
补充:其实不管你有没有允许中断,上位机(此時即给单片机发送信息的机器)只要给单片机发送数据单片机就会自动接收数据,并把它放在数据缓冲器SBUF中如果你之前有允许串行口Φ断,RI就会置1向单片机CPU申请中断,并进入中断服务程序即你问题中的serial()函数,做完这个函数后就会自动返回断点如果你没有允许中断,便不会产生串行中断
你对这个回答的评价是?
串口中断是发生在接收到一个字节后不是一个二进制位。
你对这个回答的评价是
你對这个回答的评价是?
下载百度知道APP抢鲜体验
使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。
初级技术员, 积分 36, 距离下一级还需 64 積分
|
初级技术员, 积分 36, 距离下一级还需 64 积分
|
|
高级技术员, 积分 553, 距离下一级还需 447 积分
|
高级技术员, 积分 553, 距离下一级还需 447 积分
|
|
|
|
初级工程师, 积分 2768, 距离下一级还需 232 积分
|
初级工程师, 积分 2768, 距离下一级还需 232 积分
|
刚进入while语句时为什么要将EA置1?