欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2554|回復: 1
收起左側

單片機雙機通信,串口發送數據超過16位的程序問題

[復制鏈接]
ID:365235 發表于 2020-5-9 21:21 | 顯示全部樓層 |閱讀模式
采用串口通信實現兩臺單片機進行數據的收發,一臺單片機想要把0x7fffff發送給另一臺,我自己寫的程序是先把0x7fffff分成7f高八位,ff中間8位,還有ff低8位,然后第二臺單片機接收到數據后,將三次接收到的高八位中間8位和第八位 再合并成0x7fffff。我這個程序好像調試有問題,能不能請大神幫忙看看。主機程序:
#include<reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
void init()
{
TMOD=0x20; //M1=1,M0=0 定時器1工作方式2(定時常數重裝,8 位)
SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允許接收
TH1=0xfd; //晶振11.0592時,波特率9600
TL1=0xfd; //TL1計數,溢出后,TH1值送入TL1
EA=1; //開總中斷
ES=1; //允許串口中斷
TR1=1; //啟動定時器1
}
void send(uchar m)
{
SBUF=m;
while(!TI);
TI=0;
}

void main()
{  
uchar mh,mz,ml;
long encode=0x7fffff;
init();
while(1)
{
         mh=(0x7fffff&0xffffff)>>16;
     mz=(0x7fffff&0x00ffff)>>8;
     ml=(0x7fffff&0x0000ff);
     send(mh);
         delayms(10);
         send(mz);
         delayms(10);
         send(ml);

}                  
}
void delayms(unsigned int xms)                //延時函數
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}



從機程序:
#include<reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
void delayms(unsigned int xms);
void main()
{  
TMOD=0x20; //M1=1,M0=0 定時器1工作方式2(定時常數重裝,8 位)
SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允許接收
TH1=0xfd; //晶振11.0592時,波特率9600
TL1=0xfd; //TL1計數,溢出后,TH1值送入TL1
EA=1; //開總中斷
ES=1; //允許串口中斷
TR1=1; //啟動定時器1
while(1);

}
void ser() interrupt 4
{
uchar table[3]={0};
uchar j;
long b;
RI=0;
table[j++]=SBUF;
b=(table[0]<<16)|(table[1]<<8)|table[2];
}


回復

使用道具 舉報

ID:213173 發表于 2020-5-10 08:31 | 顯示全部樓層
無標題.jpg
主機程序.zip (10 KB, 下載次數: 13) 從機程序.zip (10.48 KB, 下載次數: 10)

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表