51单片机 为什么不能直接将串口的 SBUF值赋给并口?

例如:前面定义ch为unsignedcharch;中断中将SBUF的值通过ch赋给P1voidserial()interrupt4{if(RI){RI=0;ch=SBUF... 例如: 前面定义ch 为 unsigned char ch; 中断中将 SBUF 的值通过ch 赋给 P1

void serial() interrupt 4
{

if(RI)
{ RI=0;

ch=SBUF;

P1=ch;
flag=!flag

}
}
这样行不行? 我用proteus 仿真为什么P1 没有变化呢?

如果不行应该怎么写才能实现这个功能?
展开
 我来答
百度网友5ffd0d3
2013-09-11 · TA获得超过715个赞
知道小有建树答主
回答量:386
采纳率:100%
帮助的人:236万
展开全部
这样完全可以,因为P1口是8位的,串口接收一个字节也是8位的,可以通过P1口来测试下数据.
就是不知道你的串口初始化程序有没有配置好,你可以不用中断先用扫描接收试试.
我把我的发送接收函数给你参考.

typedef unsigned char BYTE;
typedef unsigned int WORD;
/************************************
发送一个字节
************************************/

void Send(BYTE dat)
{
SBUF = dat;
while(!TI);
TI=0;
}
/************************************
接收一个字节
************************************/
BYTE Receive(void)
{
BYTE dat;
while(!RI);
RI = 0;
dat = SBUF;
return dat;
}

你可以在主程序中测试下
void main( void )
{
P1 = Receive();
while(1);
}
薄仲Qc
2013-09-11 · TA获得超过3757个赞
知道大有可为答主
回答量:2万
采纳率:0%
帮助的人:4084万
展开全部
发送需要专门的发送功能,你要注册的操作,而不是分配,SBUF只是一个地方来存储数据,它不会自动发送,它会不会自动接受。你看看,看看是否有接收或发送之类的一个功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式