历史上的今天
今天是:2024年11月07日(星期四)
2019年11月07日 | pic32单片机RS485通信程序
2019-11-07 来源:51hei
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; // 串口使能
史海拾趣
|
关键字:网络摄像机 网络摄像机是传统摄像机与网络视频技术相结合的新一代产品,除了具备一般传统摄像机所有的图像捕捉功能外,机内还内置了数字化压缩控制器和基于WEB的操作系统,使得视频数据经压缩加密后,通过网络送至终端用户。本文 ...… 查看全部问答> |
|
MFC requires WINVER to be #defined to 0x0400 or greater MFC requires WINVER to be #defined to 0x0400 or greater… 查看全部问答> |
|
计算机组成原理课程设计、电子钟、电子琴、智能交通灯电路图!用8255!~和汇编程序! 各位高手:今年计算机组成原理课程设计,电子钟,电子琴,智能交通灯! 这些电路图!我们是用实验箱做实验的!主要电路图不会画 和借口不知道从哪接! 希望大家能看看有没有会的,和做过这样的课程设计!还有相关的汇编语言程序! 希 ...… 查看全部问答> |
|
/******************************************************* 说明: 次程序成功实现SPI简单通信配置,能实现SPI1发送 数据,SPI2接收数据简单通信功能,仅供测试使用。 *********************************** ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 2011.8.25全国大学生电子设计竞赛组委会专家组在网上公布本次全国大学生电子设计竞赛需要的基本仪器和主要元器件清单,以便参赛学校做好准备。通过对所公布的基本仪器和主要元器件清单进行分析,可以 ...… 查看全部问答> |
|
经过奋斗,LM3S811的中断程序调通了! ** Created By: hu_hejiaun lai_qingmin** Created date: & ...… 查看全部问答> |




