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; // 串口使能
上一篇:PIC单片机内部EEPROM的操作
下一篇:PIC10F202做的一个按键切换两个继电器
推荐阅读
史海拾趣
在电子行业中,艾迪沃德公司(Beijing IDworld Science & Technology Development Co., Ltd.)的发展历程充满了技术创新与市场拓展的亮点。以下是五个关于艾迪沃德公司发展起来的相关故事,每个故事均基于事实描述,旨在展现其成长轨迹。
1. 创立与技术创新起点
艾迪沃德公司成立于2004年6月,自创立之初便确立了以研究、开发国际先进指纹识别技术为基本战略的发展方向。在那个指纹识别技术刚刚兴起的时代,艾迪沃德凭借其前瞻性的视野,迅速投入到这一领域的探索中。公司自主研发的指纹识别技术,经过不断迭代与优化,逐渐成为了业界公认的优秀指纹识别核心算法之一。这一技术突破不仅为公司赢得了市场的初步认可,更为后续的产品开发奠定了坚实的基础。
2. 产品多元化与市场拓展
随着技术的不断成熟,艾迪沃德开始将指纹识别技术应用于更多领域,推出了包括指纹考勤机、指纹门禁系统、指纹保险柜在内的多元化产品系列。这些产品凭借其高安全性、便捷性和稳定性,迅速在市场中占据了一席之地。特别是在安防、金融、教育等行业,艾迪沃德的产品得到了广泛应用,进一步巩固了其在指纹识别领域的市场地位。
3. OEM与ODM业务的发展
为了满足不同客户的定制化需求,艾迪沃德积极拓展OEM(原始设备制造商)和ODM(原始设计制造商)业务。公司凭借其强大的研发能力和生产能力,为众多合作伙伴提供从产品设计、生产到售后的全方位服务。这一业务模式不仅为公司带来了稳定的收入来源,还进一步提升了艾迪沃德在电子行业中的知名度和影响力。
4. 技术支持与解决方案提供
艾迪沃德深知技术支持对于客户的重要性,因此公司组建了一支专业的技术支持团队,为客户提供包括技术咨询、方案设计、系统集成在内的全方位服务。无论是大型项目还是小型应用,艾迪沃德都能根据客户的具体需求,提供量身定制的解决方案。这种以客户为中心的服务理念,赢得了客户的广泛赞誉和信赖。
5. 国际合作与品牌建设
在国际化战略的推动下,艾迪沃德积极参与国际交流与合作,与多家国际知名企业建立了良好的合作关系。通过引进国外先进技术和管理经验,艾迪沃德不断提升自身的竞争力和创新能力。同时,公司还加大了品牌建设的力度,通过参加国际展会、发布新品等方式,提升品牌知名度和美誉度。这些努力不仅为公司带来了更多的国际合作机会,也为艾迪沃德在全球电子行业中树立了良好的品牌形象。
背景:20世纪末,随着电子技术的飞速发展,Handok敏锐地捕捉到了半导体行业的崛起机遇。公司决定投入大量研发资源,专注于开发新型半导体材料和技术。
发展:经过数年的潜心研究,Handok成功研发出一种具有更高导电性和稳定性的新型半导体材料,这一创新成果迅速获得了业界的广泛关注。公司迅速将这项技术应用于生产,推出了一系列高性能的半导体产品,迅速占领了市场的一席之地。
影响:Handok的技术革新不仅推动了公司自身的快速发展,还对整个半导体行业产生了深远的影响,促进了整个产业链的升级和转型。
Dino-Lite公司在发展过程中,始终注重市场拓展和合作伙伴关系的建立。公司与多家知名企业建立了长期稳定的合作关系,共同开拓市场、分享资源。通过与合作伙伴的紧密合作,Dino-Lite公司的产品得以快速进入各个行业领域,并获得了良好的口碑和市场份额。
此外,Dino-Lite公司还积极参与国际展览和交流活动,展示公司的最新技术和产品。这些活动不仅提高了公司的知名度,也为公司带来了更多的商业机会和合作伙伴。
Dino-Lite公司在发展过程中,始终注重市场拓展和合作伙伴关系的建立。公司与多家知名企业建立了长期稳定的合作关系,共同开拓市场、分享资源。通过与合作伙伴的紧密合作,Dino-Lite公司的产品得以快速进入各个行业领域,并获得了良好的口碑和市场份额。
此外,Dino-Lite公司还积极参与国际展览和交流活动,展示公司的最新技术和产品。这些活动不仅提高了公司的知名度,也为公司带来了更多的商业机会和合作伙伴。
AMRI Enterprise Co Ltd注重与高校和研究机构的产学研合作,通过引进先进技术和人才,推动公司的技术创新。公司与多所知名高校建立了紧密的合作关系,共同开展科研项目和技术攻关。这些合作不仅为AMRI带来了前沿的技术成果,还提升了公司的研发能力和创新能力。在产学研合作的推动下,AMRI不断推出具有创新性和竞争力的新产品,为公司的持续发展提供了强有力的支撑。
最近移植bsp发现wince5.0的DM9000A驱动有问题!现在在这个和大家讨论讨论! 首先dm9000大部分驱动是官方的,下面就是一些细节的研究、我首先讲讲我的平台情况。 1.SD0~SD15 -------- LDATA0~LDATA15 数据线和 ...… 查看全部问答∨ |
|
各位高人! 我现在遇到这样一个问题!lcd驱动在uboot和kernel中使用了不同的buffer,从而导致了在进入kernel中lcd驱动时出现 lcd屏有个短暂的颜色渐变。为了消除这个bug。就想让uboot和kernel使用同一块内存。 1)下面是我的做法: & ...… 查看全部问答∨ |
VS2005如何通过USB和ActiveSync下载程序到开发板上直接运行和调试,不用模拟器? VS2005如何通过USB和ActiveSync下载程序到开发板上直接运行和调试,不用模拟器?就象以前用的eVC一样,直接下载到开发板上调试? … 查看全部问答∨ |
第二章 开发工具.rar (110.62 KB) 一点使用心得,希望对新手入门有所帮助,陆续还有新的章节 下载次数: 100 2009-12-29 20:49 第二章 开发工具.rar (110.62 KB) 下载次数:50 2009-12-29 20:49 ...… 查看全部问答∨ |
|
Linux内核大讲堂系列 序论 来源:Linux社区 作者:z2007b 其实我也是过来人,深知没有接触过内核开发的同志在无人指导的情况下独自学习Linux设备驱动的感受。都是买书,看BLOG,自已调个小程序,很难有同志能够坚持下去,市 ...… 查看全部问答∨ |
|
void main(void) { PTS_PTS1=0; PTS_PTS2=0; PTS_PTS3=1; PTS_PTS4=0; DelayXms(3000); FCNFG= 1; PPAGE=0x20; FlashPointer ...… 查看全部问答∨ |