- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
教学课件讲义PPT教案幻灯片学习资料
;本章目录;;并行通信是构成数据信息的各位同时进行传送的通信方式。例如8位数据或16位数据并行传送。
优点是传输速度快。
缺点是需要多条传输线,当距离较远、位数又多时,导致通信线路复杂且成本高。;串行通信是数据一位接一位地顺序传送。
特点是通信线路简单,只要一对传输线就可以实现通信(如电话线),从而大大地降低了成本,特别适用于远距离通信。
缺点是传送速度慢。;串行通信可分为异步传送和同步传送两种基本方式。 ;图6-2串行异步传送的字符格帧式;(2)同步通信 ;2. 串行通信的制式 ;3. 串行通信的接口电路 ;表6-1 DB-9连接器各引脚各引脚定义;在远距离通信时,一般要加MODEM(调制解调器),当计算机与MODEM 连接时,只要将编号相同的引脚连接起来即可 。;在距离较近(小于15m)的情况下进行通信时,不需要使用MODEM,两个计算机的RS-232-C接口可以直接互连。;2. RS-449、RS-422A、RS-485标准接口 ;(2)RS-422A接口 ;(2)RS-485接口 ;6.1.3 单片机串行口的结构与控制寄存器 ;1. 串行口数据缓冲器SBUF;2. 串行口控制寄存器SCON;(1)SM0、SM1(SCON.7、SCON.6) ;(2)SM2
多机通信控制位,用于方式2和方式3中。
在方式2和方式3处于接收时,若SM2=1,且接收到的第9位数据RB8为0时,则不激活RI;若SM2=1,且RB8=1时,则置RI=1;若SM2=0,不论接收到第9位RB8为0还是为1,TI、RI都以正常方式被激活。
在方式1处于接收时,若SM2=1,则只有当收到有效的停止位后,RI才置1。在方式0中,SM2应为0。
(3)REN
允许串行接收控制位。由软件置位或清零。REN=1时,允许接收;REN=0时,禁止接收。
(4)TB8
发送数据的第9位。在方式2和方式3中,由软件置位或复位,一般用做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数据帧时TB8为0。;(5)RB8
接收数据的第9位。功能同TB8。
(6)TI
发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其它方式中,在发送停止位之初由硬件置位。因此TI是发送完一帧数据的标志,可以用指令来查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后必须由软件清除TI。
(7)RI
接收中断标志位。在方式0中,接收完8位数据后,由硬件置位;在其它方式中,在接收停止位时由硬件置位。因此RI是接收完一帧数据的标志,也可以通过指令来查询是否接收完一帧数据。RI=1时,也可向CPU申请中断,响应中断后也必须由软件清除RI。
;3. 电源和波特率控制寄存器PCON ;6.1.4 单片机串行口的工作方式;2.方式1;3.方式2;4.方式3;6.1.5 串行口的波特率 ;2.方式1和方式3 ;表6-3 定时器T1产生的常用波特率 ;6.2 任务2 单片机的双机通信 ;6.2.1 硬件电路与软件程序设计 ;图6-20 单片机串行口双机通信硬件电路;2. 程序设计 ;甲机程序代码:;//主程序
void main()
{
uchar Operation_No=0;
SCON = 0x40; // 串口模式 1
TMOD = 0x20; // T1 工作模式 2
PCON = 0x00; // 波特率不倍增
TH1 = 0xfd;
TL1 = 0xfd;
TI = 0;
TR1 = 1; // 启动T1
while (1)
{
if ( K1 == 0 ) // 按下 K1 时选择操作代码 0,1,2,3
{
while ( K1 == 0 );
Operation_No=(Operation_No+1)%4;
} ;switch ( Operation_No ) // 根据操作代码发送 A/B/C 或停止发送
{
case 0: LED1 = LED2 = 1;
break;
case 1: Putc_to_SerialPort(A);
LED1 = ~LED1; LED2 = 1;
break;
case 2: Putc_to_SerialPort(B);
LED2 = ~LED2; LED1 = 1;
break;
case 3: Putc_to_SerialPort(C);
LED1 = ~LED1; LED2 = LED1;
break;
}
DelayMS ( 100 );
}
};乙机程序代码:;// 主程序
void main ()
{
SCON = 0x50; //串口模式 1,允许接收
文档评论(0)