历史上的今天
返回首页

历史上的今天

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

正在发生

2018年07月30日 | PIC单片机精通_串口通信模块C实现

2018-07-30 来源:eefocus

1.串口通讯头/定义文件 usart.h





#ifndef _SERIAL_H_

#define _SERIAL_H_

 

#define BAUD 9600      

#define FOSC 9216000L

#define NINE 0     /* Use 9bit communication? FALSE=8bit */

 

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

#define HIGH_SPEED 1

 

#if NINE == 1

#define NINE_BITS 0x40

#else

#define NINE_BITS 0

#endif

 

#if HIGH_SPEED == 1

#define SPEED 0x4

#else

#define SPEED 0

#endif

 

#if defined(_16F87) || defined(_16F88)

#define RX_PIN TRISB2

#define TX_PIN TRISB5

#else

#define RX_PIN TRISC7

#define TX_PIN TRISC6

#endif

 

/* Serial initialization */

//'\'是对函数内属性的定义 不可缺少

#define init_comms()\

RX_PIN = 1; \

TX_PIN = 1;  \

SPBRG = DIVIDER;     \

RCSTA = (NINE_BITS|0x90); \

TXSTA = (SPEED|NINE_BITS|0x20)

 

void putch(unsigned char);

unsigned char getch(void);

unsigned char getche(void);

 

#endif

2.串口通讯源/实现文件 usart.c



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

/*Author:Shen Chucu  All Rights Reserved!**

/*Tsinghua University

/*2016-11-15

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

#include

#include

#include "usart.h"

__CONFIG(0x3ffa);

 

 

void delay(unsigned int x);

static int label=0; //不做事件响应

void main()

{

   INTCON=0x00;

   GIE=1;

   PEIE=1;

   RCIE=1;

   init_comms();

   CREN=1;

   SPEN=1;

   while(1)

   {//等待中断 并进行事件响应设定

     if(label==1)

      {

        printf("OK"); 

label = 0; //发送一个回馈信号即可

        delay(50);

      }

     if(label==2)

     {

        printf("ERROR");

    label = 0; //发送一个回馈信号即可

        delay(50);

      }   

   }

}  

 

void interrupt IsReceive()

{  

   if(RCIE&&RCIF==1) //接受中断使能位 + 接收中断标志位

    {

        unsigned char temp=RCREG;  //把上位机发送的数据保存下来

        if(temp=='S')

          { 

            label=1;   //发送数据标志 1

          } 

       else if(temp=='E')

             {

               label=0; //发送数据标志 0 

             }

             else 

               label=2;  //发送数据标志 2  

    }

}

 

void delay(unsigned int x)

{

    unsigned int a,b;  //延时时间110x

    for(a=x;a>1;a--)

       for(b=110;b>1;b--)

          ;


推荐阅读

史海拾趣

康龙(CONCRAFT)公司的发展小趣事

康龙(CONCRAFT)公司成立于XXXX年,创始人XXX凭借其敏锐的商业眼光和对电子行业的深入理解,决定专注于电子连接器的研发和生产。公司初始阶段面临资金、技术和市场的重重挑战,但创始人带领团队夜以继日地工作,成功开发出了具有竞争力的连接器产品。随着产品的不断完善和市场推广的加强,康龙逐渐在电子连接器领域崭露头角。

泽耀科技(Ashining)公司的发展小趣事

在国内市场取得一定成绩后,泽耀科技(Ashining)开始积极拓展国际市场。公司参加了多个国际电子展会,与国际知名企业建立了合作关系,成功将产品打入国际市场。同时,泽耀科技还积极寻求与国际先进技术的交流与合作,不断提升自身的技术水平和产品质量。

ZTE高新兴(Gosuncn)公司的发展小趣事

泽耀科技(Ashining)深知品质是企业生存和发展的关键。因此,公司始终将品质管理放在首位,从原材料采购到生产流程控制,再到产品出厂检验,每一个环节都严格把控品质。同时,泽耀科技还注重品牌建设,通过提升产品形象和服务水平,逐渐树立了良好的品牌形象。

Chiefdom Electronic Co Ltd公司的发展小趣事

随着全球化的深入发展,Chiefdom Electronic Co Ltd意识到国际化布局对于提升竞争力的重要性。公司开始积极拓展海外市场,设立海外研发中心和销售网络,以便更好地了解当地市场需求和文化特点。通过本地化运营和定制化服务,公司成功打入多个国际市场,并获得了良好的业绩回报。这些国际化布局不仅提升了公司的整体竞争力,还为其在全球电子行业中占据了更加重要的地位。

C-MEDIA公司的发展小趣事

在2000年代初,C-MEDIA以其在音频处理领域的专业技术而知名。然而,随着市场竞争的加剧和技术的快速发展,公司意识到需要调整战略以适应市场变化。于是,C-MEDIA在与瑞昱(Realtek)达成收购协议后,决定将AC97、HD Audio板载音频芯片技术转让给Realtek,并退出板载声卡领域。这一决策使得C-MEDIA能够专注于中高端音频处理芯片的研发,进一步巩固了其在独立声卡市场的地位。

艾迈斯(AMASS)公司的发展小趣事

在国内市场取得一定成绩后,艾迈斯(AMASS)公司开始积极拓展国际市场。他们通过与国外知名企业的合作,成功将产品打入国际市场。同时,艾迈斯还针对不同国家和地区的市场需求,推出了定制化的产品和服务,进一步提升了公司在国际市场上的竞争力。如今,艾迈斯的产品已经远销全球多个国家和地区,成为了国际市场上备受瞩目的品牌之一。

问答坊 | AI 解惑

既然阿凡达那么火热,咱也看看其中通信(三)

《阿凡达》中人类在遥远的潘多拉星球上可以在广阔的地域之间高速传输数据和通信,用得可能将是未来的4G或5G技术,虽然CES没有对此高科技给出的切实解决答案,但多家企业正在不断努力,远程高速数据通信也即将到来。 美国运营商Sprint在CES上推 ...…

查看全部问答>

FPGA的多路可控脉冲延迟系统设计

FPGA的多路可控脉冲延迟系统设计 采用数字方法和模拟方法设计了一种最大分辨率为0.15 ns级的多路脉冲延迟系统,可以实现对连续脉冲信号的高分辨率可控延迟;采用Flash FPGA克服了现有SRAM FPGA系统掉电后程序丢失的缺点,提高了系统反应速度。本系 ...…

查看全部问答>

win7系统中无法安装usb-blaster

  最近我在win7的操作系统中一直无法安装usb-blaster驱动程序,导致我无法在quartus II软件中下载程序,如图F:\\picture\\no hardware.jpg 但是我在安装usb-blaster驱动程序的时候,系统弹出对话框F:\\picture\\drivers.jpg,我怀疑是因 ...…

查看全部问答>

想从上层开发(asp.net..c#) 转到 底层的嵌入开发(C)....请前辈指点....回答必得分

现在以有一年的上层开发经验....对asp.net..c# 什么的开发都 比较行了... 但现在有一个很好的机会 ...不过是做底层的嵌入开发(C).... 请高手给点好的意见...... 如果转入嵌入开发(C),有没有好的东东可以介绍... 先谢谢各位!…

查看全部问答>

C#(v1.1)怎么能够让控件透明呢?C#(v2.0)能做到也行

如题,希望能让label,radiobutton,panel等等控件都透明。 就像winxp上的 transparent 属性的效果。不是说alpha值。 不用画笔的方式实现。 …

查看全部问答>

IAR报错!!!!!!!!!!在线等

                                 嗖嗖嗖嗖…

查看全部问答>

09级的学生不应该参加国赛吗?

本帖最后由 paulhyde 于 2014-9-15 08:53 编辑 今天老师对我们说,建议09级的同学不要参加国赛,如果等到下一届,就得等两年,那时候就大四了,也就没有那个时间参加了!   可是老师给我们的答案是很多的竞赛在等你,为什么偏偏选择国赛呢 ...…

查看全部问答>

LED驱动IC

在LED灯恒流的问题上,不知各位有哪些好的LED恒流IC?有用过NU501或是HV9910的吗?这两款在LED灯中运用得应比较广泛的吧。…

查看全部问答>

咋不见有人玩UCOS-III呢?

实时多任务操作系统uCOS-III的特点1.uCOS-III是一个全新的实时内核,源于世界上最流行的实时内核uC/OS-II,除了提供熟悉的一系列系统服务,全面修订了API接口,使uC/OS-III更直观,更容易使用。该产品可以广泛应用于通信,工业控制,仪器仪表,汽车 ...…

查看全部问答>

学习易电源心得

“易电源纳米模块在一个微小解决方案尺寸中整合了易用性和高性能。纳米模块是目前市场上最小的1A封装。该器件是首款将IC安装在电感上的集成电感解决方案,可以降低电路板空间要求并提高性能,使之成为空间受限及负载点应用的理想选择。纳米模块还 ...…

查看全部问答>