历史上的今天

今天是:2024年11月07日(星期四)

正在发生

2019年11月07日 | pic32单片机RS485通信程序

发布者:chi32 来源: 51hei关键字:pic32  单片机  RS485通信 手机看文章 扫描二维码
随时随地手机看文章

pic32源程序如下:

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

*********************************************************************************************************

*

* File                : RS485.c

* Hardware Environment:        easyPIC pro v2

* Build Environment   : MPLAB V8.66 + PIC32 V2.01

* Microcontroller     : PIC32MX795F512L

* Version             : V1.0

* By                  : JEFF

* DATE                                  : 20150320

*

* Hardware Connection:



  CN5(0~5)-----RB8~RB13, Segment LED Connetion

  CN6(0~7)-----RD0~RD7


  RE/DE------RB15

  RO   ------RF4

  DI   ------RF5

*

*(c) Copyright 2010-2018, Logifind Tech CO.,LTD

*http://www.logifind.com

*All Rights Reserved

*

*********************************************************************************************************

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

//

// 实验描述:串口助手发送数据,接收16 Byte数据,RS485 发出16Byte数据

//           LED及数码管 显示缓冲区数据.

//

// 头 文 件:C:Program FilesMicrochipMPLAB C32 Suitepic32-libsincludeproc

//

// 配 置 位:菜单栏 -> Help -> Topics.. -> PIC32MX Config Setting 

//

// 波 特 率:9600  N 8 1 

//

// 注意事项:每次必须累积 16Byte 数据,单片机才回传数据

//

//-------------------------------------------------------------------------------


#include                    //调用通用头文件


//-------------------------------------------------------------------------------

// POSCMOD = XT, FNOSC = PRIPLL, FWDTEN = OFF

// PLLIDIV = DIV_2, PLLMUL = MUL_20

// PBDIV = 4 (default)

// Main clock = 4MHz /2 * 20    =  40MHz

// Peripheral clock = 40MHz /4  =  10MHz

// SYSCLK = 40 MHz (4MHz Crystal/FPLLIDIV * FPLLMUL / FPLLODIV)

// PBCLK  = 10 MHz


#pragma config POSCMOD  = XT         //主振荡器  

#pragma config FNOSC    = PRIPLL     //倍频模式 

#pragma config FPLLIDIV = DIV_2      //输入分频 1:2

#pragma config FPLLMUL  = MUL_20     //PPL 倍频 1:20

#pragma config FPLLODIV = DIV_1      //输出分频 1:1

#pragma config FPBDIV   = DIV_4      //外设时钟

#pragma config FWDTEN   = OFF        //关闭看门狗

//#pragma config ICESEL   = ICS_PGx1   //调试端口1

#pragma config ICESEL   = ICS_PGx2   //调试端口2


#define SysLED     _LATB5                       //CPU LED

#define SPEKAK     _LATD8                       //蜂呜器

#define RELAY      _LATD8                       //继电器

#define bctl_485   _LATB15                      //485控制端



#define Smg_a    0xFE                           //定义段码

#define Smg_b    0xFD

#define Smg_c    0xFB

#define Smg_d    0xF7

#define Smg_e    0xEF

#define Smg_f    0xDF

#define Smg_g    0xBF

#define Smg_dp   0x7F


#define Bmp0Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_e & Smg_f 

#define Bmp1Map          Smg_b & Smg_c

#define Bmp2Map          Smg_a & Smg_b & Smg_d & Smg_e & Smg_g

#define Bmp3Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_g

#define Bmp4Map          Smg_b & Smg_c & Smg_f & Smg_g

#define Bmp5Map          Smg_a & Smg_c & Smg_d & Smg_f & Smg_g

#define Bmp6Map          Smg_a & Smg_c & Smg_d & Smg_e & Smg_f & Smg_g

#define Bmp7Map          Smg_a & Smg_b & Smg_c 

#define Bmp8Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_e & Smg_f & Smg_g

#define Bmp9Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_f & Smg_g

#define BmpAMap          Smg_a & Smg_b & Smg_c & Smg_e & Smg_f & Smg_g

#define BmpBMap          Smg_c & Smg_d & Smg_e & Smg_f & Smg_g

#define BmpCMap          Smg_a & Smg_d & Smg_e & Smg_f 

#define BmpDMap          Smg_b & Smg_c & Smg_d & Smg_e & Smg_g

#define BmpEMap          Smg_a & Smg_d & Smg_e & Smg_f & Smg_g

#define BmpFMap          Smg_a & Smg_e & Smg_f & Smg_g





const unsigned char SegCode[] =                //显示段码表

{

        Bmp0Map,Bmp1Map,Bmp2Map,Bmp3Map,Bmp4Map,Bmp5Map,Bmp6Map,Bmp7Map,

        Bmp8Map,Bmp9Map,BmpAMap,BmpBMap,BmpCMap,BmpDMap,BmpEMap,BmpFMap

};


unsigned char DpyNum[6] = {Smg_g,Smg_g,Smg_g,Smg_g,Smg_g,Smg_g}; //显示缓冲区   


unsigned char RxBuffer[16] = {0,0,0,0};        //串口接收缓冲区

unsigned char SysTick = 0;                     //系统时基

unsigned char COM2_RecvCnt  = 0;               //计数清零

unsigned char COM2_RecvFlag = 0;               //接收标志

unsigned char COM2_SendDatCnt = 0;             //发送计数        

unsigned char COM2_SendDatLength = 0;          //发送长度


//-------------------------------------------------------------------------------

//  延时函数

//-------------------------------------------------------------------------------

void Delay_xmS(unsigned int i)                

{

        unsigned int j;

        for(;i>0;i--)

        {

                Nop();

                for(j=0;j<255;j++)

                {

                        Nop();

                        ClearWDT();

                }

        }        

}


//-------------------------------------------------------------------------------

//  串口2初始化函数

//-------------------------------------------------------------------------------

void UART2_Init(void)

{

        bctl_485 = 0;                    // 接收模式

        U2MODEbits.SIDL  = 0;            // IDLE工作

        U2MODEbits.IREN  = 0;            // 禁止IrDA

        U2MODEbits.UEN   = 0;            // 使能RX TX引脚

        U2MODEbits.WAKE  = 0;            // 禁止唤醒

        U2MODEbits.ABAUD = 0;            // 禁止自动BUD

        U2MODEbits.RXINV = 0;            // 空闲状态为1

        U2MODEbits.BRGH  = 0;            // 16x标准波特率

        U2MODEbits.PDSEL = 0;            // 8位无奇偶校验

        U2MODEbits.STSEL = 0;            // 1个停止位

        

        U2STAbits.ADM_EN   = 0;          // 关自动地址检测

        U2STAbits.UTXISEL1 = 0;          // 发送完所有字符后中断

        U2STAbits.UTXISEL0 = 1;

        U2STAbits.UTXINV   = 0;          // 空闲状态为1

        U2STAbits.URXEN    = 1;          // 接收器使能        

        

        U2STAbits.UTXBRK   = 0;          // 禁止发送间隔位

        U2STAbits.UTXEN    = 1;          // 发送器使能

                                                       

        U2STAbits.URXISEL1 = 0;          // 接收1个字符中断

        U2STAbits.URXISEL0 = 0;

        

        U2BRG = 64;                      // PBCLK 10MHz  N 8 1 9600 BRG = 64;

        

        IPC8bits.U2IP   = 4;             // 主优选级

        IPC8bits.U2IS   = 1;             // 次优选级

        

        IEC1bits.U2RXIE = 1;             // 接收中断

        IEC1bits.U2TXIE = 0;             // 发送中断

        

        U2MODEbits.ON   = 1;             // 串口使能 

[1] [2] [3]
关键字:pic32  单片机  RS485通信 引用地址:pic32单片机RS485通信程序

上一篇:PIC单片机内部EEPROM的操作
下一篇:PIC10F202做的一个按键切换两个继电器

推荐阅读

全球连接与传感领域领军企业TE Connectivity (TE)近日宣布推出微型同轴电缆连接器。节省空间的微型同轴电缆连接器具有坚固、紧凑的设计,专为高性能微波系统而打造。TE的连接器专为接受多种阻抗值的小型同轴电缆而打造,非常适合需要较高密度和可靠性并需要降低尺寸和重量的应用。产品系列包含了航空航天和国防工业中部分最小最可靠的连接器设计。为了满...
在电力参数测量装置中,电力参数来源于具有强大干扰源的电网,同时由于互感器、放大电路本身的影响,造成在信号进入A/D转换器之前,所采集信号中混有各种频率的信号,但很多是不需要的信号。在实际应用中要获得准确的FFT运算结果,必须满足奈奎斯特采样定理的要求,防止频谱混叠的发生。因此前置模拟低通滤波器在电力参数的测量装置中有着不可替代的作用...
去年,HMD 推出了诺基亚 C1 –一款经济实惠的 Android Go 手机(50 欧,约 392 元),配备 5.45 英寸紧凑型显示屏。而今天,它的继任者 C1 Plus 在发布前的时间里被曝出炉。  IT之家了解到,该机此前已通过 EEC 认证,列表中可以查实该机型号 TA-1312 。  据外媒 NokiaPowerUser 消息,诺基亚 C1 Plus(诺基亚 C1+)...
摆脱芯片供应短缺问题 双芯片代工策略见效 11月4日,高通股价飙涨逾12%,相较同业,高通在面对芯片更显得心应手,并看好明年业绩将持续成长。 高通执行长 Crisano Amon 于电话会议上表示,预计12月底供应问题将明显好转,明年下半年将有足够的供应满足需求,预期 2022财年EPS有望年增20%。 Lily点评:芯片短缺一直影响5G手机的出货量。高通作为全...

史海拾趣

问答坊 | AI 解惑

变压器组别的测量问题

比如一个变压器组别联结情况是Yd11,现在只知道一次绕组和二次绕组的接线方式是星形和三角形,即只知道Yd,如何测出二次电压领先一次电压30度?即那个11点。 …

查看全部问答∨

2440官方bsp的DM9000A驱动问题!

最近移植bsp发现wince5.0的DM9000A驱动有问题!现在在这个和大家讨论讨论! 首先dm9000大部分驱动是官方的,下面就是一些细节的研究、我首先讲讲我的平台情况。 1.SD0~SD15  --------   LDATA0~LDATA15  数据线和 ...…

查看全部问答∨

uboot和kernel共享内存区域问题!

各位高人! 我现在遇到这样一个问题!lcd驱动在uboot和kernel中使用了不同的buffer,从而导致了在进入kernel中lcd驱动时出现 lcd屏有个短暂的颜色渐变。为了消除这个bug。就想让uboot和kernel使用同一块内存。 1)下面是我的做法:    & ...…

查看全部问答∨

VS2005如何通过USB和ActiveSync下载程序到开发板上直接运行和调试,不用模拟器?

VS2005如何通过USB和ActiveSync下载程序到开发板上直接运行和调试,不用模拟器?就象以前用的eVC一样,直接下载到开发板上调试? …

查看全部问答∨

个人笔记《深入浅出STM8》

第二章 开发工具.rar (110.62 KB) 一点使用心得,希望对新手入门有所帮助,陆续还有新的章节 下载次数: 100 2009-12-29 20:49 第二章 开发工具.rar (110.62 KB) 下载次数:50 2009-12-29 20:49 ...…

查看全部问答∨

PB安装问题

恳请高人指点:我安装PB时候没有选择shared source选择项,所以导致windowsce目录下没有private文件夹,我现在还没遇到麻烦,我想问一下如果我不重新安装PB,有没有办法解决问题,或者没有这个文件夹,做什么系统或者操作时会出现问题。…

查看全部问答∨

(转帖)linux内核大讲堂-驱动基础架构

Linux内核大讲堂系列 序论 来源:Linux社区  作者:z2007b 其实我也是过来人,深知没有接触过内核开发的同志在无人指导的情况下独自学习Linux设备驱动的感受。都是买书,看BLOG,自已调个小程序,很难有同志能够坚持下去,市 ...…

查看全部问答∨

用147控制GSM发短信的问题

flsafjldjfjaf [ 本帖最后由 wangren09 于 2012-5-16 18:03 编辑 ]…

查看全部问答∨

9S12单步调试问题

void main(void) {       PTS_PTS1=0;  PTS_PTS2=0;  PTS_PTS3=1;  PTS_PTS4=0;  DelayXms(3000);  FCNFG= 1;  PPAGE=0x20;  FlashPointer ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved