Ⅰ 2000分 请教几个单片机串行通信的问题 (高手进)
我来给你回答:我现在也正在做课程设计,恰好也是串行数据采集系统设计,多个采集站点和上位计算机的多机通讯;
问题1:
在设置串行启动(初始化)时,SMOD=1,此时恰好PCON=80H,用汇编就是 MOV PCON,#80H,原因:SMOD是波特率选择位,当串行口工作方式位1、2和3时,波特率和2的SMOD次方成正比,而SMOD=1,既2的SMOD次方等于2,所以波特率倍增。
问题2:
当上位机给单片机发指令时,数据到了SBUF中,产生RI=1,即产生串行中断(也可以用查询JNB RI,$;JMP GET),产生中断后单片机就进入中断处理子程序有条关键指令就是MOV A,SBUF;此时上位机的指令已经得到了,进入指令识别和处理程序比如比较指令中又没有01H +0000H + 01H + 03H + 0005H;没有的话给8282H 或8383H 发送个约定好的指令,上位机发现这个指令时,就进行重新发送.假如成功,就给8181H会送成功指令。上位机发送下步指令。
典型程序(错误时):
MOV DPTR,#8282H
MOV R3,#FFH
MOVX,@DPTR,R3
此时上位机就会得到FFH这个约定的错误码,处理后就会重新发送。
FFH既是个数也是个数据包,对与机器来说就是个数据包(需要发送),对于你来说,就是个约定的识别码是个数。当然约定码也可以是你说的0005H,对于我们来说0005H和05H是相等的,因为前面的00是空的。对于计算机来说是不一样的,计算机处理是0005H有16位,05H只有8位。
在等待过程中,如果单片机没有指令可以让它 SJMP $--既处于死循环等待中;当单片机受到数据时,串行控制位RI就会置1,产生串行中断。此时数据已经进入了SBUF,(发送和接受都是SBUF,是分开的,当在执行指令时,单片机会自己区别),此时加入用中断就可以在中断子程序中读取SBUF中的内容,指令位MOV A,SBUF,MOV R4,A;也可以把SBUF中的内容存入内部RAM中 ,然后就可以进一步处理R4中的内容或者存于内部RAM中的内容(要求记录的话)。
补充问题的回答:
发送数据时可以是05H也可以是0005H,因为通讯中,双方的识别是约定好的。
希望对你有用。
本人的回答供你参考,如果还是不明白的话,找老师吧,老师是最精通的。
Ⅱ 简述单片机串行口的工作方式
89系列单片机的串行通信有4种工作方式:
1、方式0是同步移位寄存器方式,帧格式8位,波特率固定为fosc/12。
2、方式1是8位异步通信方式,帧格式10位,波特率可变:T溢出率/n(n= :32或16)。
3、方式2是9位异步通信方式,帧格式11位,波特率固定: fosc/n(n=32 或16)。
4、方式3是9位异步通信方式,帧格式11位,波特率可变:T溢出率(m=32或16)。
方式1、2、3的区别主要表现在帧格式及波特率两个方面。
单片机应用范围:
单片机渗透到我们生活的各个领域。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制等等。
还有自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
Ⅲ 51单片机串行通信数据处理问题
是要根据接收到3 5 8分别实现动作?
可以把单片机接收的字符放在一个数组里面啊,如果是232,类似Receive_Buf[i]=*(SBUF+i) 应该就行,最近做的485的一个接收函数大概就是这个思路。
拼接字符串的话,用sprintf函数,头文件#include <stdio.h>
或者考虑判断接收到的数,SBUF=0x33就是接到3
Ⅳ 串口发送数据是单片机发送数据吗
通常,具备串行通讯端口的设备都可以发送和接收数据,那么单片机自然也可以发送串行数据。
PC电脑具有串行通讯端口,也能发送和接收串行数据,电脑和电脑之间,单片机和单片机之间,电脑和单片机之间都能发送和接收数据。当然还有其它设备也可以。
所以说单片机能够发送数据,但串口发送数据不是只有单片机才能发送数据。
Ⅳ 单片机串行口工作方式发送
串口通信是指多个单片机之间,或单片机与电脑进行互相通信,这时,RXD是接收,TXD是发送。串行通信是远距离的。
而串口的方式0,其实并不是串口收/发,准确说只是串行输入/输出数据,注意,不是通信。只是单片机与串/并转换芯片之间传输数据,而且限于同一个板内。所以,RXD不再接收,TXD也不再是发送。而是用TXD做同步时钟信号,用RXD做串行数据线。输出数据时,也是用发送状态,可以接74LS164芯片。而用接收状态时,是输入数据,外部可用74LS165芯片。这是串口的另一个应用。
Ⅵ 求助:单片机串行口输出的数据是什么类型
是全双工通用串口,ttl电平,如果需要和其它主机进行通讯进行电平转换,直接接max232就可认。
Ⅶ 单片机的问题
两个单片机串口通讯需要将Rx和Tx连接,一般其中间不需要外接电阻或电容等。但如果两个单片机各自为一套独立系统,彼此相距校远,在两单片机Rx和Tx之问通常会加入驱动芯片,以增加两者之间数据传输的可靠性。
另外如果两单片机是各自独立供电,除了连接Rx和Tx外,还需耍将两边的信号地(GND)连接到一起。
Ⅷ 单片机串行通信中通信什么意思
通信就是信息的传递!在数字系统中,通信一般分为并行通信和串行通信!并行通信一般是将一定位数的数据一次性通过一组数据总线向外发送。而单片机中的串行通信则一般将要发送或接受的数据拆分,只用一根数据线,一位一位向外发送或接收,例如大部分单片机中的UART串行通信端口,只用了两根线就实现了接收与发送!
一般来讲,并行通信可以一次性并行发送多位数据,所以通信速率较高,通信数据量大,但是需要位数较多的数据总线,适合近距离通信!而单片机串行通信由于一次只能发送一位数据,所以速度较慢,但是有效节省资源,适合远距离传输!就比如咱们家中使用的网线,一般是一根比较细的电缆或者电话线,好像没有见过拉一根很宽很粗的排线连接到您的计算机上吧,因为这样既不方便也不经济!呵呵!
举个例子,比如将八位二进制数10101101向外发送,如果采用并行通信方式,将这八位数对应的放到8根数据总线上,这样就一次性的将八位数据向外发送!而采用串行通信时,需要将这八位数据拆分,先发1,再发0,然后以此类推,直到将这八位数据发完,这样就可以只用一两根或少量数据线实现较远距离传输,并且比较节省资源!
至于你说的通的是什么信息,对于单片机来说,这信息既可以是数据信息,也可以是命令信息,比如你需要将一个数或字符发送出去,或者将一段命令代码发送出去!可以通过串行方式,也可以采用并行方式,使用者可以根据具体情况选择!
模数、数模转换一般是做模拟与数字信号之间的转换,这种转换可以认为是通信中的一种,它跟以上所说的串行并行通信不是一个概念!因为他们适用的场合不同!
呵呵,这个解释清楚吗?
Ⅸ 单片机的串行口和并行口有什么不同,它们各执行什么功能,可以详细讲解下单片机的整个工作步骤
一、主体不同
1、串行口:采用串行传输方式来传输数据的接口标准。
2、并行口:采用并行传输方式来传输数据的接口标准。
二、特点不同
1、串行口:串口没有干扰,传输出错后重发一位就可以了,所以要比并口快。
2、并行口:8位通道之间的互相干扰,传输时速度就受到了限制。而且当传输出错时,要同时重新传8个位的数据。
三、优缺点不同
1、串行口:串行传输由于只有一位信号在信号线上,没有位同步问题,因此传送频率可以继续提高
2、并行口:并行传输时,发送器是同时将8位信号电平加在信号线上,电信号虽然是以光速传输的,但仍有延迟,因此8位信号不是严格。
Ⅹ 单片机的IO口是不是既可以串行使用也可以并行使用
是的。所有的I/O都可以并行使用也可以串行使用,但串行使用要看情况,如果单片机内部具有诸如UART、I2C、SPI硬件模块的,可以通过对模块进行配置而直接使用。如果没有,则只能用软件模拟这些接口而达到串行使用目的。当然,即使存在这些硬件资源,但你不怕麻烦,,想用软件模拟也未尝不可。