单片机学习小组
直播中

张凯

8年用户 171经验值
私信 关注

为什么我的51单片机多机串行口通讯一直做不出来?

单片机A发送数组,单片机B接收数组,然后单片机B控制1062显示数组,通讯这一块一直做不出来
发送
void cuan() interrupt 4
{
unsigned char z=0;
        //uchar date;
        //date=SBUF;        //取出接受到的数据
        //RI=0;                          //清除接受中断标志位
for (z=0;z<8;z++)
                {
                        SBUF = TempData[z];
                        while(!ti);
                        TI=0;
}
接收
void ser() interrupt 4
{
        unsigned char a;
        RI = 0;
        a = SBUF;
        z++;
        if(z==8)
        {
                z = 0;
        }
}

回帖(6)

范亚娟

2019-8-8 07:38:26
帮顶
举报

李娓仑

2019-8-8 07:55:59
[AppleScript] 纯文本查看 复制代码
//发送unsigned char z=0;ES=0;//查询法不要开中断for (z=0;z<8;z++){           SBUF = TempData[z];           while(!TI);           TI=0;}ES=1;接收char TempData_RX[8];void ser() interrupt 4{        static int z=0;        unsigned char a;        RI = 0;        TempData_RX[z++] = SBUF;        if(z==8)        {                z = 0;        }}
没测试过,基本思路是这样
举报

魏双艳

2019-8-8 08:01:27
接收函数中  a只是局部变量,没有赋值给全局变量或者有输出接口,怎么发送,每次中断都会更新a的值 ,a的值最后只是数组的最后一个值并且没有输出。
举报

蒋进如

2019-8-8 08:07:32
你接受的数据,没有赋值数组,无法正确显示
举报

更多回帖

发帖
×
20
完善资料,
赚取积分