历史上的今天
今天是:2024年12月17日(星期二)
2019年12月17日 | PIC单片机实现通讯功能设计
2019-12-17 来源:elecfans
1. 单片机 PIC1编程(发送部分)
LIST P=16F877
#INCLUDE P16F876.INC
CBLOCK 0X24 ;保留三个字节作为显示用
COUNT ;作计数器或暂存器用
ENDC
ORG 0X0000 ;程序复位入口
NOP
START GOTO MAIN
ORG 0X20
MAIN MOVLW 0X30 ;以下将RAM内容初始化
MOVWF FSR ;从30H单元开始
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 0X04 ;选择异步高速方式传输8位数据
MOVWF TXSTA
BCF STATUS,RP0
MOVLW 0X80 ;允许同步串行口工作
MOVWF RCSTA
BSF STATUS,RP0
BSF TRISC,7 ;将RC6、RC7设置为输入方式,断绝与外接电路的连接
BSF TRISC,6
BCF STATUS,RP0
MOVLW 0X30 ;30H作为同步字符发送
MOVWF FSR
MOVF INDF,0
MOVWF TXREG ;将待发送的数据写入发送缓冲器TXREG
BSF STATUS,RP0
BSF TXSTA,TXEN ;发送允许
BCF STATUS,RP0
BSF RCSTA,CREN ;接收数据允许
LOOPTX BTFSS PIR1,RCIF ;等待PIC2的响应字节
GOTO LOOPTX
MOVF RCREG,0 ;读响应字节,清RCIF
LOOPTX1 BTFSS PIR1,TXIF ;发送下一字节
GOTO LOOPTX1
INCF FSR
MOVF INDF,0
MOVWF TXREG
BTFSS FSR,7 ;30H~7FH单元的内容是否发送完?
GOTO LOOPTX ;没有,继续下一字节的发送
BSF STATUS,RP0 ;如果是,则停止发送
BCF TXSTA,TXEN
BCF STATUS,RP0 ;数据发送完毕
CALLLED;调用显示子程序,将发送的数据显示出来
END ;程序完
2. 单片机 PIC2编程(接收部分)
LIST P=16F876
#INCLUDE P16F876.INC
CBLOCK 0X24
COUNT
ENDC
ORG 0X0000
NOP
START GOTO MAIN
MAIN BSF STATUS,RP0 ;初始化程序同发送子程序
MOVLW 0X19 ;波特率设置与PIC1相同
MOVWF SPBRG
MOVLW 0X04 ;异步高速传输
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 ;接收允许
BSF STATUS,RP0
BSF TXSTA,TXEN ;发送允许
BCF STATUS,RP0
WAIT BTFSS PIR1,RCIF ;等待接收数据
GOTO WAIT
MOVF RCREG,0 ;读取数据
MOVWF INDF ;将接收到的响应字节存入PIC2的RAM
INCF FSR
MOVWF TXREG ;发送响应字节
LOOPTX BTFSS PIR1,TXIF ;等待写入完成
GOTO LOOPTX
BTFSS FSR,7 ;全部数据接收否?
GOTO WAIT1 ;没有,继续接收其它数据
BCF RCSTA,RCEN ;接收完,则关断接收和发送数据允许
BSF STATUS,RP0
BCF PIE1,TXEN
BCF STATUS,RP0
CALL LED ;调用显示子程序,将接受到的数据显示出来
END ;程序完
下一篇:PIC单片机的这些优势你应该了解
史海拾趣
|
我用的是nboot+eboot启动,下面是输信息。请高手指点一下。 \\par Mini(4k) NandBoot V2.0. [2007-09-28] \\par \\par \\par NAND Boot Start \\par NAND Boot End \\par Boot time=nTCNT*82uS. nTCNT=0x052f. \\par I/O Strength Max \ ...… 查看全部问答> |
|
在CE上Bluetooth设置PIN问题 我用的SDK是STANDARDSDK_500,可是这SDK里没有Btdrt.lib,因此找了个Btdrt.lib 但是在使用BthGetPINRequest()、BthSetPIN()函数还是不能用 可能是手动加入的Btdrt.lib关连到其它的LIB,这要如何解决? 或者谁做的,你 ...… 查看全部问答> |
|
wince6.0 是否支持SHLoadImageResource? 请各位帮帮忙看看! 我在windows moible 5.0 上使用SHLoadImageResource是可以的 而在wince6.0上 却找不到SHLoadImageResource 是不是wince6.0 不支持 SHLoadImageResource? … 查看全部问答> |
|
1. ok6410 买来2.3个月,具体我也不知道了。装了android系统后当时间看看。没真正开发过。720元。 2. lm3s8962 申请来的。芯片太贵,放弃学习。248元。加钱换cc2530板子最好,我有无限龙3700元那个套件的光盘 ...… 查看全部问答> |
|
#include <stdio.h> void main() { int x=3,y; y=––x+––x+x++; printf(\"x=%d y=%d\\n\",x,y); } x=2,y=3 不懂 ??????? &n ...… 查看全部问答> |
|
BIN优点,下载时二进制传输效率高,一个起始地址和长度(均可事先知道)搞定.因起始地址和长度在 下载一开始就可以知道,所以只需要擦除实际代码大小的FLASH,避免大FLASH空间小代码时擦除FLASH的时间和FLASH损耗. 缺点:当代码分段在不同地址时,如 ...… 查看全部问答> |




