历史上的今天
今天是:2025年01月08日(星期三)
2020年01月08日 | PIC单片机双机同步通信设计
2020-01-08 来源:elecfans
1. 单片机 PIC1编程(主控发送)
LIST P=16F876
#INCLUDE P16F876.INC
CBLOCK 0X24 ;保留三个字节作为显示用
COUNT ;作计数器或暂存器用
ENDC

ORG 0X0000 ;程序复位入口
NOP
START GOTO MAIN
ORG 0X0100
MAIN MOVLW 0X30
MOVWF FSR ;以下将从30H单元开始的RAM内容初始化
MOVLW 0X30 ;将值30H赋给单元30H
MOVWF COUNT
INTRAM MOVF COUNT,0 ;将30H~7FH赋给单元30H~7FH
MOVWF INDF
INCF COUNT,1
INCF FSR,1
BTFSS COUNT,7
GOTO INTRAM
BSF STATUS,RP0 ;将SCI部件初始化
MOVLW 0X19 ;将传输的波特率设为约9600 bps
MOVWF SPBRG
MOVLW 0X94 ;选择同步高速方式传输8位数据
MOVWF TXSTA
BCF STATUS,RP0
MOVLW 0X80 ;允许同步串行口工作
MOVWF RCSTA
BSF STATUS,RP0
BSF TRISC,7 ;将RC6、RC7设置为输入方式,断绝与外接电路的连接
BSF TRISC,6
BSF STATUS,RP0
MOVLW 0X30 ;将从30H单元开始的内容传送到PIC2
MOVWF FSR
MOVF INDF,0
MOVWF TXREG ;将待发送的数据写入发送缓冲器TXREG
BSF STATUS,RP0
BSF TXSTA,TXEN ;发送允许
BCF STATUS,RP0
TX1 BTFSS PIR1,TXIF ;等待上一个数据写完
GOTO TX1
INCF FSR ;准备发送下一个数据
MOVF INDF,0
MOVWF TXREG ;将新的数据写入TXREG
BTFSS FSR,7 ;判断所有30H~7FH单元的内容是否发送完毕?
GOTO TX1 ;没有,则继续发送其它字节
TX2 BTFSS PIR1,TXIF ;等所有要求发送的数据已经发送完,再额外
GOTO TX2 ;写一个字节到TXREG,使最后一个数据能够顺利发送
MOVWF TXREG
NOP ;延时几个微秒后,关发送允许
NOP
NOP
NOP
NOP
BSF STATUS,RP0
BCF TXSTA,TXEN
BCF STATUS,RP0
CALL LED ;调用显示子程序,将发送的数据显示出来
END ;程序完
2. 单片机 PIC2编程(从动接收)
LIST P=16F876
#INCLUDE P16F876.INC
CBLOCK 0X24
COUNT
ENDC
ORG 0X0000
NOP
START GOTO MAIN
ORG 0X0100
MAIN BSF STATUS,RP0
MOVLW 0X10 ;选择同步从动方式
MOVWF TXSTA
BCF STATUS,RP0
MOVLW 0X80 ;串行口使能
MOVWF RCSTA
BSF STATUS,RP0
BSF TRISC,7 ;关断与外部电路的联系
BSF TRISC,6
BCF STATUS,RP0
MOVLW 0X30 ;从30H单元开始存放接收的数据
MOVWF FSR
BSF RCSTA,CREN ;接收允许
WAIT BTFSS PIR1,RCIF ;等待接收
GOTO WAIT
MOVF RCREG,0 ;读取接收到的数据
MOVWF INDF ;将接收到的数据存入PIC2的RAM
INCF FSR
BTFSS FSR,7 ;所有的数据是否已接收完?
GOTO WAIT ;没有,继续接收其它字节
NOP ;延时数微秒后,清接收允许位
NOP
NOP
NOP
BCF RCSTA,RCEN
CALL LED ;调用显示子程序,将接受到的数据显示出来
END ;程序完
上一篇:PIC单片机与PC机的通信设计
史海拾趣
|
1、对于你们软件中的“Import”、“Open”这两个菜单的命名,我不是很能理解,能说说吗? 答:Open 是指打开我们的软件保存的文件,而Import是指导入其他软件转换的ASCII文件。 2、怎么我找不到网络编辑的菜单啊? 答:我们的网络编辑更加快捷 ...… 查看全部问答> |
|
这个板子有点小问题。 1.xout部分当clk不能用,飞线到pclk,管脚。原因:xout信号太弱。所以,咱这个stm32的xout部分就去掉吧。 2.spck接a3p060 pin91不行,那不是全局管脚,2,4,6 93,94可以,我用的93. 3.12 - 5 v的DC-dc不能用,有 ...… 查看全部问答> |
|
CE正在用MediaPlayer播音乐,手动休眠再唤醒后就没音乐了!但点击屏幕还有声音 如题,是怎么回事啊? 在串口里会输出 +-BattHwPowerOn() I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 I2CWrite ERROR: 170 等信息, I2CWrite ERROR在WaveDev的hwctxt.cpp的HW_ ...… 查看全部问答> |
|
第一次进wince模块,问几个问题 1 把win ce 嵌入到像ARM9平台上,那么wince 这个软件价格怎样?像蛮多做实验板的开发商提供的一些软件包就以用了吗?如果真做成了一个产品,是基于wince OS的,那么这个需要正式向微软件购买使用版权费吗? 2 wince 嵌入 ...… 查看全部问答> |
|
我使用的是RVDS2.2. 在编译设置选项里设置只要我选择ARMV6系列的芯片,编译连结可以通过,但DEBUG(运行)的时候GO MAIN就会出错,提示有未定义的指令。而只要选择V6以下的芯片,都是好着的。 编译的程序很简单,就是一个MAIN函数。 请高手指点一 ...… 查看全部问答> |
|
TI C2000 系列技术研讨会 C2000 器件是具有高性能集成外设(针对实时控制应用而设计)的 32 位微处理器。它的数学优化内核使设计人员能够提高系统效率、可靠性和灵活性。功能强大的集成外设使 C2000 器件成为最理想的单芯片控制解决方 ...… 查看全部问答> |
|
在这里给大家推荐三本学习ucos的必看书籍 1.(比较难买)嵌入式实时操作系统uc/os-II教程 西安电子科技大学出版 -----这本书对UCOS的源代码分析的非常清楚 比作者原著 &nbs ...… 查看全部问答> |




