历史上的今天
返回首页

历史上的今天

今天是:2025年07月30日(星期三)

正在发生

2018年07月30日 | PIC单片机精通_串口通讯与串口调试实例

2018-07-30 来源:eefocus

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;异步-高速-允许发送模式

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


推荐阅读

史海拾趣

Auris公司的发展小趣事

在不断追求技术创新的道路上,Auris公司并未止步。近年来,该公司正在积极研发柔性机器人技术,这种技术有望在治疗喉咙、肺和肠胃疾病方面发挥重要作用。柔性机器人的研发不仅展示了Auris在技术创新方面的持续努力,也为其在未来的医疗市场中抢占先机提供了有力支持。

这五个故事展示了Auris公司在电子行业中的发展历程,从创始人的科技愿景到技术突破获得认可,再到与强生的合作以及柔性机器人的研发,每一步都体现了Auris对于技术创新和市场拓展的不懈追求。这些事实性的故事不仅展现了Auris公司的成长轨迹,也反映了电子行业中技术创新和市场竞争的激烈态势。

Everspin Technologies公司的发展小趣事

Everspin一直致力于MRAM技术的创新和发展。其中,自旋转移力矩MRAM(STT-MRAM)是该公司的重要技术之一。Everspin在平面内和垂直磁隧道结(MTJ)STT-MRAM位单元的开发方面取得了显著成果,并积累了超过600项有效专利和应用的知识产权组合。这些技术的创新和专利的积累,使得Everspin在MRAM市场中保持了领先地位。

Horn公司的发展小趣事

自1969年成立以来,Horn公司便致力于开发和生产切槽、侧铣和槽铣刀具。起初,公司聚焦于为小型机械加工企业提供高质量的工具解决方案。在创始人Paul Horn的领导下,公司迅速建立了技术团队,专注于刀具材料的研发与生产工艺的改进。这一时期,Horn公司凭借其出色的产品质量和定制化的服务,在行业内逐渐树立了良好的口碑。

ATOP_Technologies公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,ATOP Technologies开始将目光投向更广阔的市场。公司积极参与国内外各类行业展会和交流活动,加强与同行和客户的交流与合作。同时,ATOP Technologies还积极开展国际合作,与多个国家的知名企业建立了战略合作关系,共同推动工业自动化领域的发展。

Dialog Semiconductor(戴乐格半导体)公司的发展小趣事

Dialog Semiconductor在电源转换技术方面取得了重要突破。公司成功将氮化镓(GaN)技术应用于电源转换器中,推出了基于氮化镓技术的电源转换产品。氮化镓技术以其高速和低功耗的特点,为电源转换器带来了更高的效率和更小的尺寸。这一技术突破不仅推动了Dialog Semiconductor自身的发展,也为整个电子行业带来了重要的影响。

Auctor Corp公司的发展小趣事

Auctor Corp公司的创始人,一群富有远见和冒险精神的工程师,怀揣着对电子技术的热情和对市场的敏锐洞察,决定共同创办这家公司。在创业初期,公司面临着资金紧张、技术储备不足等多重困难。然而,团队成员们凭借着坚韧不拔的精神和对技术的执着追求,通过自主研发和不断改进,逐渐在市场上站稳了脚跟。

问答坊 | AI 解惑

[求助] LM386 Pspice model

[请问哪位大侠知道去哪可以下到LM386 Pspice model,不胜感谢!…

查看全部问答>

2010年新兴视频监控技术指南(序列二)

IP摄像机(标清)潜在优势     使用IP摄像机最突出的优势在于它可以直接把摄像机连接到IP网络或计算机网络上,而在模拟摄像机系统中则需要另外再增加一个计算机(通常是编码器或者DVR),因此,在某些情况下,使用IP网络能很大程度上减 ...…

查看全部问答>

VC中的三种CString转数值的方法在eVC中全部失效

void CStyCString2ValueDlg::OnButton1() {         char *s=\"123\", *stops;         int i;         //这三种方法无论在VC还是eVC均正常         i=strtol( ...…

查看全部问答>

AXD调试器的教程

有谁用ADS1.2的吗?谁有AXD的教程,推荐下,谢谢…

查看全部问答>

最近很郁闷……

我是一个比较最求效率的人,最近帮一个朋友做了一个高速放大电路,让我很郁闷!板子弄好了,但是测试时却出现了非常诡异的事情,由于缺乏测试工具(示波器)使得我的工作停滞了很多天,再加上朋友的催,让我很不安心!考试快来了,时间不多了,但是 ...…

查看全部问答>

享受32位的乐趣---EJ-STM32体验板,请各路大侠拍砖!

人人都能有机会享受32位的乐趣了!   重庆优易特电子公司最新推出的EJ-STM32,是一款基于意法半导体(ST)STM32系列高性能32位处理器(Cortex-M3内核)的DEMO板。该板采用底板与核心板组合的工作方式,只需通过换插不同的CPU核心 ...…

查看全部问答>

24系列的DSP指令中,RPT指令的问题.

RPT # N指令可以使其后面的指令执行很多次,但那些指令可以和RPT指令配合产生N次有效的操作呢?…

查看全部问答>

用锂电池,430的vcc脚还需要接电容来滤波吗?

看到很多原理图上,430单片机电源脚接104电容来滤波。但是,如果采用3.6伏锂电电池供电,那么电源引脚还用得着接电容来滤波吗?…

查看全部问答>

用于 LED 照明应用的恒流非隔离式电源

$(\'swf_K8k\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', encodeURI(\'http://player.youku.com/player.php/sid/XMjcyNjgxNDUy/v.sw ...…

查看全部问答>

外型更加犀利 ABT发布了奥迪Q3改装套件

日前,德国改装公司Abt Sportsline发布了奥迪Q3改装套件。 外观套件包括前格栅,前扰流板,车门饰条,集成了排气系统的后保险杠和尾翼。 动力方面,Abt将提供汽油发动机不同程度的升级,针对2.0 TSI发动机,经过提升后从原来的21 ...…

查看全部问答>