PIC单片机I/O口单线通讯的实现

上传人:hs****ma 文档编号:457668336 上传时间:2023-02-24 格式:DOCX 页数:5 大小:69.25KB
返回 下载 相关 举报
PIC单片机I/O口单线通讯的实现_第1页
第1页 / 共5页
PIC单片机I/O口单线通讯的实现_第2页
第2页 / 共5页
PIC单片机I/O口单线通讯的实现_第3页
第3页 / 共5页
PIC单片机I/O口单线通讯的实现_第4页
第4页 / 共5页
PIC单片机I/O口单线通讯的实现_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《PIC单片机I/O口单线通讯的实现》由会员分享,可在线阅读,更多相关《PIC单片机I/O口单线通讯的实现(5页珍藏版)》请在金锄头文库上搜索。

1、PIC单片机I /o 口单线通讯的实现中、低档pic单片机有些不带串口,有些虽然有串行口,却受串口固定协议 的限制或留作他用,故需用普通I/O口进行通讯。由于中、低档机I/O口 数量相对较少,为节省口线,就要用I/O口模拟串行通讯。本文以两片采用不同主频的 PIC单片机(A机时钟频率为6 M H Z ,使用口 线RB6; B机时钟频率为4MHz,使用口线RB4)之间用异步通讯方式 传送一组数据为例,说明I/O一线通讯的实现方法。一、设计思想1 .时钟同步问题因两个单片机的时钟不同,故采用异步通讯方式。发送、接收一位数据时,采用软件延时,保证发送、接收完全同步。2 .数据发送、接收方式I/O 口

2、一线串行通讯,并串(或串并)转换用软件完成。将欲发送 的字节存于1 6 H中,经移位指令移至进位位。根据进位位的值,将口线R B 6置0或1。接收端R B 4接收并判断后, 置进位标志为0或1 ,再经移位指令移入14H中。这样循环执行8次,就可将一个字节由低位到高位一位位地发送出去。数 据传送速率可用延时循环的方法进行调节。3 .握手协议先发握手信号,后发数据。假定A机为发送,B机为接收。A机开始发送 时,先发送一个握手数据信号,B机收到后回送一个应答信号,表示同意接 收。A机收到应答信号后,开始发送数据。握手信号和数据信号都按异步通讯 格式,先发准备信号1”,接着发送起始位tT,然后发数据位

3、。4 .数据传送异步通讯时,发送时钟控制数据位的定时移位串行输出,接收时钟检测起始位,并控制数据的定时接收移入。两个时钟信号不是通过信号线传递,而是采用编程约定的办法,使之和实际使用的数据速率基本保持一致,而数据信号中的起始位则是发和收的同步控制。接收时钟为数据传送波特率的1 6倍频信号,即一个数据位宽的时间内将会出现1 6个接收时钟的信号,这是检测起始位和保证在数据位中央位置接收数据所需要的。为排除瞬时干扰,在检测到数据输入线的电平由1 变为0”之后,接收端将继续检测。仅当连续8个接收时 钟周期内都检测到数据线上的电平为0”时,才确认是起始位,且发送端每一个或都发送1 6次,接收端将以1 6

4、倍的时钟周期,即以位宽时间为间 隔,接收各数据位(在其中央位置接收数据)。一个字长数据(8位)接收完 后,子程序返回。二、程序框图和源程序下面给出发送、接收一字长(8位)信号的子程序框图(见图1、图2) 和PIC单片机源程序(发送、接收联络信号与数据信号相同)。注:所有 xx 程序略。1 .发送子程序listp=16c65, f=inhx8mportbequ6trisbequl6hstatusequ3r p 0 e q u 5orgOxlOOfsbsfstatus, rpO;选存储体 1bcftrisb, 6;置R B 6 为输出bcfstatus, r p 0 ;恢复存储体0bsfportb

5、, 6;发准备信号 1m o v w f 1 f ;置发送字长xx 同步m o v 1 w 0 x 1 0m o v w f 1 cfslbcfportb, 6;发 16 个起始位decfszlc, 1g o t o f s 1xx 调节波特率r r f 1 6 h , 1 ;发送字节移位btfscstatus, 0g o t ym o v 1 w 0 x 1 0m o v w f 1 cfs2bcfportb, 6;位为 0 ,发 1 6 个 ”decfszlc, 1g o t o f s 2g o t rt y m o v 1 w 0 x 1 0m o v w f 1 cfs3bs fpo

6、rtb, 6;位为 1 ,发 1 6 个 1decfszlc, 1g o t o f s 3trdecfszlf, 1g o t s ;发送未完, xx发下一位 return;发送结束返回end2 .接收子程序1 i stp=16c65, f = i n h x 8 mportbequ6trisbequl6hstatusequ3r p 0 e q u 5org0x200jsbsfstatus, r p 0 ;选存储体1bsftrisb, 4;置RB4 为输入 bcfstatus, r p 0 ;恢复存储体0j slbtfssportb, 4;检测收到1 ”否g o t 0 J si;未收到1

7、”继续检测m o v 1 w 0 x 0 8 ;置接收字长8位m o v w f 1 fIooplmovlw0x08;置循环次数 8m o v w f 1 dloopbt fscportb, 4 ;检测起始位gotoloopl;未收到 b ”重置8次循环decfszld, 1g o t o 1 o o p ;收到 ”继续检测j z c a 1 1 y s t b ;收到8个,延时同步,接收数据bt fscportb, 4 ;测试接收位g o t o j ybcfstatus, 0;收到 0 置 c = 0g o t o j 1jybsfstatus, 0;收至 U 1 ”置 c = 1j 1 r r f 1 4 h , 1 ;接收位移入1 4 hdecfszlf, 1g o t o j z ;未接收完, xx接收下一位return;接收完返回end #/ 5

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号