PIC单片机精通_串口通讯与串口调试实例

发布者:binggege最新更新时间:2018-07-30 来源: eefocus关键字:PIC单片机  串口通讯  串口调试 手机看文章 扫描二维码
随时随地手机看文章

1.引子


团队之所以称之为团队,就意味着多个人在一起共事。需要的是谦虚,谦逊,切勿言之偏偏。也要学会尊重,任何一门编程语言都有自己的优势与不足,否则早就有一门语言一统天下啦!!!我由VB入门,利用C、C++、Java、TCL进行过开发,至今不敢妄言哪种语言最好,只知道把事情做好,才是最成功的。

耐心与细心,至关重要。最忌浮于事,遇到问题要仔细分析,千万不可抱怨。作为软件出身的傻大个,竟然“沦落”到进行电子线路测试、故障排除、阻抗匹配,不得不说是配合的环节出现了问题,再此感谢一下我的母校——华中大,还好本科管得严,任务重,电子电力的知识还没有忘记。

今天记载的是独立开发的串口通信程序,没有利用PIC自带的Example,很适合新手,共同进步。

2.串口通信实例与详解


 /********************************************************/

/*Author: Chunxu Shen; All Rights Reserved!

/*Tsinghua University

/*2016-11-14

********************************************************/

#include

__CONFIG(0x3ffa);

 

#define BAUD ???UL      

#define FOSC ???UL //根据实际情况,自己设定

#define DIVIDER ((int)(FOSC/(16UL * BAUD) -1))

 

unsigned int  send1[2] = {0x4f,0x4b}; //'O'=ASCII 0x4f;'K'=ASCII 0x4b; “OK”

unsigned int  send2[5] = {0x45,0x52,0x52,0x4f,0x52}; //'E'=ASCII 0x45;'R'=ASCII 0x52 “ERROR”

unsigned char rece;  //全局变量

unsigned int cnt;    //计数器

 

void main(void)

{

//初始化端口程序

TRISC7 = 1; //RX端口设为输入有效

TRISC6 = 0; //TX端口设为输出有效

//初始化串口设置

SPBRG = DIVIDER;  //波特率设置

TXSTA = 0x04;  //异步通讯-禁止发送数据-高速模式

RCSTA = 0xA0;  //串口使能-接收单字符-禁止连续接受

//中断设计

RCIE = 1;  //允许接收信号触发中断

GIE = 1;   //打开中断总开关

PEIE = 1;  //允许外围设备触发中断

//无限循环,等待PC机触发中断

while(1)

{

......

}

}

 

//接收上位机送发的信号

void interrupt usart(void)

{

if( RCIE )

//RCIE:开放串行中断请求  RCIF:接收中断允许(接收区满or单字符)

{

......

}

}

3.心得感悟


1.“查询”和“中断”哪种方式好?


这个问题就很奇怪了;其实没有绝对的好与不好。就个人而言,我更偏向于中断,思路比较清晰。无论哪种方式,记住核心就好。中断:采用的是通信外围设备触发(也就是PC机发送信号);而查询方式:采用的是接收移位寄存器溢出标志位以及发送移位寄存器清空的标志位。

2.为什么在main函数中设置字符数组mplab一直报错?


这个问题同学问我之后我一直没有答上来,因为我感觉这本身是没有错的。可能是配置的问题。为什么我没有碰到?因为我习惯把字符数组放到程序的预定义处。我也很推崇这种方式,这会大大增强程序的可读性。

3.通信流程该如何设定?


单片机通信模块都很相似:端口方向配置(那个是发送数据?哪个是接收数据?);串口状态配置(打开串口?连续发送?同步/异步?);中断配置(打开接收中断触发事件、开启总中断、开启外围中断触发);最后一个是进行数据处理。

4.TXSTA=0x24;会怎么样?


TXSTA=0010 0100B;异步-高速-允许发送模式

就个人而言,不建议这样写。因为接收信号触发中断,如果此时发送还是允许的,容易陷入一直都发送的死区。所以,我们可以试着这样做:“激发信号”触发中断->允许数据发送->发送数据->关闭数据发送。


关键字:PIC单片机  串口通讯  串口调试 引用地址:PIC单片机精通_串口通讯与串口调试实例

上一篇:PIC单片机精通_串口通信模块C实现
下一篇:PIC单片机入门_同步/异步通信技术基础

推荐阅读最新更新时间:2024-03-16 16:10

基于PIC单片机的便携式磁记忆检测仪
引言   金属构件和零部件发生损坏的主要原因,是各种微观和宏观机械应力集中导致疲劳失效,其基本特征表现为材料在低于静强度极限的交变应力持续作用下,生成多种类型的微观内部缺陷,并逐渐演化为宏观裂纹,裂纹扩展最终导致结构破坏。因此,进行疲劳分析,有效评价应力变形状况,测定未来裂缝发展的位置、大小和方向,成为评价金属零部件与构件结构强度和可靠性的一个重要依据。为了及时准确的找出最大机械应力变形区域,20世纪90年代后期,以杜波夫为代表的俄罗斯学者率先提出一种崭新的诊断技术—金属磁记忆检测。本文采用PIC单片机,设计了高性价比的便携式磁记忆检测仪,具有低成本、低功耗和快速检测等特点,可以满足各种场合,特别是难以到达部位的应力集中区检测。
[单片机]
基于<font color='red'>PIC单片机</font>的便携式磁记忆检测仪
PIC单片机实现双字节无符号数的除法
编写子程序Div_16,实现双字节无符号数除法。自行定义变量,其中: ACCALO ;存放被除数低 8 位 ACCAHI ;存放被除数高 8 位 ACCBLO ;存放除数 8 位 ACCCLO ;存放余数 8 位 ACCCHI ;存放商 8 位 采用移位法,设被除数为ACCA、除数为ACCBLO、商为ACCCHI(初值为0)、余数为ACCCLO(初值为0)。ACCA由高位至低位依次左移进入ACCCLO单元,每次移位进入后比较ACCCLO单元和ACCBLO的值,如果ACCCLO≥ACCBLO,则将这一位的商单元的值置1,然后从ACCCLO中减去ACCBLO,否则不做操作。直到ACCA全部进入ACCCLO单元为止。此时AC
[单片机]
单片机与单片机串口通讯程序
单片机 与单片机串口通讯程序 #include reg51.h #define uchar unsigned char #define SLAVE 0x00 #define BN 16 uchar idata tdata ; uchar idata rdata ; bit trdy; bit rrdy; void main(void) { TMOD=0x20; //定时器T1为模式2 TL1=0xfd; //定时器初值 TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf0; //串行口方式3 ES=1;EA=1;
[单片机]
喜欢单片机的同学快来看啊,过来人的经验告白
今天星期六,由于现在处于淡季,星期日不加班,一大早起来就拿着自己新买的移动硬盘把办公室的PIC资料考了回来,在自己寝室的电脑上学开了,既然要努力学就不能一天口号,两天行动。我做好了充分的准备,要把握分分秒秒。 单片机的学习开始是个枯燥的过程,慢慢的熔入起中就会发现其中的乐趣。举个很贴进的例子,当你家的电器全是自己搞的可以遥控的,比如一进门,灯全亮了,在按下遥控,电视,空调全开了,晚上睡觉都不用当心忘记灯没关,只要遥控一按,就OK了,这不是很好吗?这只是一个小小的例子,其实学会单片机还有好多有意思的地方。 在学习单片机时,首先要做的不是去买书,去看书,先要搭建一个学习平台,好比要上网就好有IP一样,所以一个平台的搭建是很有必
[单片机]
基于PIC单片机的病房呼叫系统设计
0 引言 病房呼叫系统是一种应用于医院病房、养老院等地方,用来联系沟通医护人员和病员的专用呼叫系统,是提高医院护理水平的必备设备之一。病房呼叫系统的优劣直接关系到病员的安危,历来受到各大医院的普遍重视。它要求及时、准确可靠、简便可行、利于推广。 目前市场上存在着许多种型号不一功能各异的医院病房呼叫系统,主要为两大类:有线式和无线式。传统的有线式病房呼叫系统往往采用集中式结构,电源线、数据通信线、语音通信线分开传输,具有铺设线路较多、成本高、安装调试困难、实时性差、故障率较高等缺点。无线式病房呼叫系统不存在铺设线路的问题,但是可靠性差,而且无线电波会干扰其它医疗仪器设备,目前大多数医院不采用此类无线呼叫系统。 本文设计的
[单片机]
基于<font color='red'>PIC单片机</font>的病房呼叫系统设计
PIC单片机-定时器的应用
一、利用定时器Timer0的定时功能,设计一个倒计时,显示在数码管上。 #include htc.h #define uint8 unsigned char #define uint16 unsigned int #define SCK_595 RA5 #define RCK_595 RE0 #define SER_595 RC0 __CONFIG(WDTDIS & LVPDIS & HS & PWRTDIS & BORDIS);//设置配置位 //WDTDIS:disable watchdog timer 看门狗禁止 //LVPDIS:low voltage programming disabled
[单片机]
PIC单片机人机接口模块独立式按键的电路设计
  本实例可以分为5部分,如图1所示。   图1 系统组成原理框图   下面将对这5部分分别进行说明。   (1)复位电路。   上电时,对复位电路中的电容充电,也是对PIC单片机进行上电复位的过程,在这一过程中,还可以手工直接按动上电复位中的按键,对其进行复位。   (2)时钟电路。   时钟晶振可以采用主频为0~20MHz的晶振,接法如图2所示。   图2 复位电路和时钟电路   (3)独立式键盘输入。   通过PlC16F877的端口D直接输入,在实际电路实现时,由于会产生抖动,所以,在编程时要采用100ms的延时进行复查,确定后再输出数据。   (4)LED输出。   通过PIC16F877的端
[单片机]
<font color='red'>PIC单片机</font>人机接口模块独立式按键的电路设计
基于PIC单片机的数码虚拟环绕声控制器设计
引言 在智能娱乐技术快速发展的大背景下,消费者已经普遍希望营造家庭影院的声响效果。配置一套家庭影院音响系统,需要环绕声处理器和较大功率的AV功放,并且至少有5或6只音箱。而通过5、6只音箱来表现声像定位和营造环绕声效果,不仅对室内声学特性、音箱摆放和声音调校的要求较高,并且占用空间大,投资份额占到整个系统的一半以上,很难令广大消费者接受。 随着虚拟环绕声技术的迅速发展和普及应用,仅使用2只音箱就能实现以往5只音箱才能产生的符合DolbyPro-Logic或Dolby Digital(AC-3)标准的环绕声场,有效地解决了家庭影院音响系统投资大、占地面积大的问题。本文设计了基于PIC单片机的数码虚拟环绕声控制器,提供一种具有较高性价
[单片机]
基于<font color='red'>PIC单片机</font>的数码虚拟环绕声控制器设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved