历史上的今天
返回首页

历史上的今天

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

正在发生

2018年07月30日 | PIC单片机精通_异步串口通讯实例与细节

2018-07-30 来源:eefocus

1.前言


PIC16F876a异步串口通信的定义以及寄存器控制,这里不再多谈,前面已经进行过详细的分析。这里注意集中在几个关键点上。


串口中断服务程序应该注意什么?


利用串口助手进行调试应该注意什么?


串口助手接收不到数据的几种可能因素?


2.实例分析


PIC单片机与上位机握手程序如下:



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

/*Author: Chunxu Shen; All Rights Reserved!

/*Tsinghua University   2016-11-19

/*Serial Test Low Speed

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

#include

__CONFIG(0x3ffa);

 

#define BAUD 9600    

#define FOSC 9216000L

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

 

unsigned char Rece_flag ;  //初始化,串口接受标志

 

void main(void)

{

//初始化端口程序

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

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

 

//初始化串口设置

SPBRG = DIVIDER;  //波特率设置

TXSTA = 0x24;  //内部波特率-8bit-允许发送-异步通讯 空-低速模式-发送寄存器满空-无奇偶校验

RCSTA = 0x90;  //串口使能-不接收单字符-允许禁止连续接收

 

//中断设计

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

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

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

RCIF = 0;

 

//等待PC机触发中断

while(1)

{

if('E' == Rece_flag) //对应上位机“结束”按键

{//给PC机反馈信号“END”

TXREG = 'E';

while( TRMT == 0 ) 

continue; //检验发送是否结束

TXREG = 'N';

while(TRMT==0)

continue;

TXREG = 'D';

while(TRMT==0)

continue; 

}

else if( 'S' == Rece_flag )

{

//给PC机反馈信号“OK”

TXREG = 'O';

while(TRMT==0) 

continue;

TXREG = 'K';

while(TRMT==0) 

continue;

else //其他信号不响应

{ ; }

}

}

 

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

void interrupt usart(void)

{

if( RCIF )

{

RCIF = 0;  //软件清零

Rece_flag = RCREG;

}

}

3.经验总结


1.编写中断服务程序时,一定要注意接收中断标志位这个事儿!RCIF这个标志位,硬件不会自动清空。因此,一旦我们编写中断服务程序时,先把RCIF清零!!!


2.利用串口助手进行调试的时候,关注端口号!!!(计算机->管理->设备管理器->端口)确定你选择的端口是与PIC单片机是相连的,否则即使协议很正确,端口号没对上,也白扯。


3.波特率很关键,看好高低速,把初值算对很重要。


4.感想


曾经下过决心,不碰硬件,可是呢,有的时候你不去做就没有人做,这不得不说是一种悲哀!接下来的软件,瞧!看我飞起~~~


推荐阅读

史海拾趣

深圳杜因特(DOINGTER)公司的发展小趣事

在竞争激烈的电子行业中,杜因特始终将创新作为公司发展的核心动力。公司不断投入大量资源进行新产品的研发和技术创新,特别是在Super-Junction MOSFET和Super-Trench MOSFET等高端产品领域取得了显著成果。这些创新产品不仅满足了市场对高品质MOSFET的日益增长需求,还进一步巩固了杜因特在电子行业的技术领先地位。

Chicago Miniature公司的发展小趣事

随着LED技术的兴起,CML敏锐地捕捉到了这一趋势,并成为第一家引进LED灯具的公司。这一决策为公司带来了巨大的发展机遇。CML不断投入研发资源,推出了一系列具有创新性的LED产品,不仅提高了照明效率,还降低了能耗。这使得CML在微型照明领域逐渐取得了领先地位,并赢得了广泛的客户基础。

上海晶岳(AFSEMI)公司的发展小趣事

随着移动互联网的快速发展,晶岳电子敏锐地捕捉到了移动终端支付芯片市场的潜力。2016年,公司推出了具有自主知识产权的移动终端支付芯片,以及过压保护芯片和充电管理IC系列产品。这一创新举措不仅使晶岳电子成功拓展了新的市场领域,也进一步提升了公司在行业内的知名度和影响力。同时,公司还加强了与移动支付平台的合作,共同推动移动支付技术的发展和应用。

HOPERF公司的发展小趣事

为了进一步提升生产效率和产品质量,HOPERF在无锡太湖科技园建立了3万平方米的现代化生产基地。该基地引进了德国、美国等地区的先进封装测试生产设备和高精密测试测量仪器,并严格按照ISO9001国际质量认证体系进行生产管理。这种高标准的生产管理流程确保了产品质量的可靠性和稳定性,赢得了国内外客户的广泛认可和信赖。

Green Power Solutions公司的发展小趣事
首先确保稳压器已断电,并拔掉电源插头,以防触电。
Deutsch公司的发展小趣事

人才是企业发展的核心驱动力。Deutsch公司非常重视人才引进和培养工作。公司积极招聘具有丰富经验和专业技能的人才,并为他们提供广阔的发展空间和良好的职业前景。同时,公司还注重内部人才的培养和晋升,通过培训、交流等方式提升员工的综合素质和业务能力。这些措施使得Deutsch公司拥有一支高素质、高效率的团队,为公司的持续发展提供了有力保障。

问答坊 | AI 解惑

安防英文词解释

MPG 用MPEG-1压缩标准压缩的文件格式。它可以同进包括图像文件的画面和伴音面分,出可以只包括画面成分。        AVI AAVI是 Audio Video Interleave 的缩写,Windows3.1的视频格式,兼容好、调用方便、图象质量好,体积大。& ...…

查看全部问答>

ce 6 eboot 下载NK 启动后挂了

平台2440  使用NBOOT+EBOOT  下载NK    DNW信息如下   : Enter your selection: d INFO: Probe: DM9000 is detected. DM9000: MAC Address: 0:11:22:33:44:55 System ready! Preparing for downl ...…

查看全部问答>

2440 摄像头问题

           temp = (s2440CAM->CIPRSTATUS>>26)&3;                 temp = (temp + 2) % 4;//为什么要这样做呢?             ...…

查看全部问答>

nboot.bin运行后,EBOOT.NBO无法启动

我现在手中有五块2410板子 1)有三块nboot.bin运行后,EBOOT.NBO无法启动 2)一块nboot.bin,EBOOT.NBO运行后无法运行NK 2)一块nboot,EBOOT,NK运行正常 请各位高手指点迷津 …

查看全部问答>

关于怎么算出二进制

就是把十进制7/16怎么化成二进制,还有-5/16怎么化成二进制,不知道是怎么算的,知道的朋友请指点一下好吗?…

查看全部问答>

小喇叭不见了,是不是驱动的问题 各位帮帮忙~

最近新装了xp系统 装好后发现右下角的小喇叭没了 进控制面板的声音选项后发现有提示 没有音频设备 在网上看了一些帖子说是没有声卡驱动 于是下了个everest查到声卡的型号是Realtek ALC650 @ Intel 82801DB ICH4 - AC\'97 Audio Controller [B-0 ...…

查看全部问答>

缺氧报警器

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 …

查看全部问答>

cmd文件中的page0 和page1

本帖最后由 dontium 于 2015-1-23 13:23 编辑 cmd 文件中的page0和page1同地址分页中page0,page1是一会事吗? 地址分页中有page0 page1 .. page127 …

查看全部问答>