导航:首页 > 操作系统 > 单片机单线通讯

单片机单线通讯

发布时间:2023-06-10 18:30:15

㈠ 2个51单片机怎么实现通过1—wire单总线通信最好有借鉴的代码。

用STC的吧,带SPI总线,我都用这个比较好用,单线的你不是要接到从机的外部中断口了。单线比较烦,共地的话你可以这样干。主机将信号线拉低,从机进主中断程序,定义一个长延时为同步头,然后主机移位传送数据,定义一个长延时结束。最好不要单总线通信,烦的呢

㈡ STC单片机的3线(+12V COM GND)单总线通讯,要求通讯距离100米,怎么做呢

我有一种方案 只用2线就可以,只需要+12V GND就可以,直接在电源线通信,既供电又通信。网络来信

㈢ 单片机的通信方式有那些

单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。

㈣ at89c52单片机可以通过普通IO口实现一线通信吗求通信程序!

/*合泰单片机*/

#defineDATA_pa6


unsignedcharnub[5]={0x01,0x0b,0xfe,0xcd,0xee};

unsignedcharReceive[10]={0x00};

unsignedcharReceivetime;

unsignedcharReceiveBF=0x00;

unsignedcharReceivecount=0x00;

unsignedcharReceiveC=0x00;

void__attribute((interrupt(0x10)))isr_time(void)//100us定时器中断函数

{

_ptma0f=0;

switch(ReceiveBF)

{

case0x00://引导码低

{

if(DATA)

{

if(Receivetime>85)

{

if(Receivetime<100)

{

ReceiveBF=0x01;

Receivetime=0x00;

}

else

{

ReceiveBF=0x00;

Receivetime=0x00;

}

}

else

{

ReceiveBF=0x00;

Receivetime=0x00;

}

}

else

{

Receivetime++;

}

break;

}

case0x01://引导码高

{

if(DATA)

{

Receivetime++;

}

else

{

if(Receivetime>40)

{

if(Receivetime<55)

{

ReceiveBF=0x02;

Receivetime=0x00;

Receivecount=0x00;

ReceiveC=0x00;

}

else

{

ReceiveBF=0x00;

Receivetime=0x00;

}

}

else

{

ReceiveBF=0x00;

Receivetime=0x00;

}

}

break;

}

case0x02://低电平

{

if(DATA)

{

if(Receivetime>10)//数据

{

if(Receivetime<25)

{

ReceiveBF=0x03;

Receivetime=0x00;

}

else

if(Receivetime<55)

{

ReceiveBF=0x04;

Receivetime=0x00;

}

}

}

else

{

Receivetime++;

}

break;

}

case0x03://数据码

{

if(DATA)

{

Receivetime++;

}

else

{

if(Receivetime>25)//1

{

Receive[ReceiveC]=Receive[ReceiveC]<<1;

Receive[ReceiveC]=Receive[ReceiveC]|0x01;

Receivecount++;

if(Receivecount==8)

{

Receivecount=0x00;

ReceiveC++;

}

ReceiveBF=0x02;

Receivetime=0x00;

}

else//0

{

Receive[ReceiveC]=Receive[ReceiveC]<<1;

Receive[ReceiveC]=Receive[ReceiveC]&0xfe;

Receivecount++;

if(Receivecount==8)

{

Receivecount=0x00;

ReceiveC++;

}

ReceiveBF=0x02;

Receivetime=0x00;

}

}

break;

}

case0x04://结束码

{

ReceiveBF=0x00;

Receivetime=0x00;

break;

}

}

}

voidSend()

{

volatileunsignedcharcount=0x05;

volatileunsignedchardatanub;

volatileunsignedchardatacount;

//引导码

DATA=0;

dly100us(90);

DATA=1;

dly100us(45);

//数据码

while(count)

{

datanub=nub[5-count];

datacount=0x08;

while(datacount)

{

if(datanub&0x80)

{

DATA=0;

dly100us(15);

DATA=1;

dly100us(30);

}

else

{

DATA=0;

dly100us(15);

DATA=1;

dly100us(15);

}

datanub=datanub<<1;

datacount--;

}

count--;

}

//结束码

DATA=0;

dly100us(45);

DATA=1;

dly100us(45);

DATA=0;

dly100us(45);

DATA=1;

}

阅读全文

与单片机单线通讯相关的资料

热点内容
房屋中介网站源码 浏览:29
命运格数算法 浏览:852
ets3编程 浏览:730
怎么制作音乐相册的文件夹 浏览:566
宁夏重加密硅灰用法 浏览:231
70个4相乘的简便算法 浏览:291
安卓手机没有机身存储了怎么办 浏览:314
输入法文件夹不能用 浏览:83
发单买多大的云服务器 浏览:331
特价云服务器如何注册 浏览:296
安卓手机账户忘记密码怎么解锁 浏览:821
如何用健身app确定一个特工 浏览:911
多级压缩的原理 浏览:864
java项目开发案例视频 浏览:70
文件夹快速查找表格不同内容 浏览:493
合并排序算法java 浏览:920
如何将文件夹删除的部分恢复 浏览:808
eco为什么连接不上服务器 浏览:294
查看linux的命令是 浏览:12
苹果邮件服务器地址 浏览:343