標(biāo)題:
單片機(jī)雙機(jī)通信,串口發(fā)送數(shù)據(jù)超過16位的程序問題
[打印本頁]
作者:
Awaken
時間:
2020-5-9 21:21
標(biāo)題:
單片機(jī)雙機(jī)通信,串口發(fā)送數(shù)據(jù)超過16位的程序問題
采用串口通信實現(xiàn)兩臺單片機(jī)進(jìn)行數(shù)據(jù)的收發(fā),一臺單片機(jī)想要把0x7fffff發(fā)送給另一臺,我自己寫的程序是先把0x7fffff分成7f高八位,ff中間8位,還有ff低8位,然后第二臺單片機(jī)接收到數(shù)據(jù)后,將三次接收到的高八位中間8位和第八位 再合并成0x7fffff。我這個程序好像調(diào)試有問題,能不能請大神幫忙看看。主機(jī)程序:
#include<reg52.h>
#include <intrins.h>
typedef unsigned char uchar;
typedef unsigned char uint;
void init()
{
TMOD=0x20; //M1=1,M0=0 定時器1工作方式2(定時常數(shù)重裝,8 位)
SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允許接收
TH1=0xfd; //晶振11.0592時,波特率9600
TL1=0xfd; //TL1計數(shù),溢出后,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) //延時函數(shù)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
從機(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(定時常數(shù)重裝,8 位)
SCON=0x50; //SM0=0,SM1=1,REN=1 串口工作方式1,允許接收
TH1=0xfd; //晶振11.0592時,波特率9600
TL1=0xfd; //TL1計數(shù),溢出后,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];
}
作者:
wulin
時間:
2020-5-10 08:31
無標(biāo)題.jpg
(107.38 KB, 下載次數(shù): 23)
下載附件
2020-5-10 08:30 上傳
主機(jī)程序.zip
(10 KB, 下載次數(shù): 13)
2020-5-10 08:30 上傳
點擊文件名下載附件
從機(jī)程序.zip
(10.48 KB, 下載次數(shù): 10)
2020-5-10 08:30 上傳
點擊文件名下載附件
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1