PIC18F87K90双串口C程序实现与配置详解

1 下载量 136 浏览量 更新于2024-09-04 收藏 56KB PDF 举报
"本文介绍了在PIC微控制器上实现双串口通信的C程序设计方法,重点关注了PIC18F87K90型号芯片的应用。在实际操作中,需要注意关闭串口2的端口模拟功能(ANCON2)才能正常工作。文章提供了相关引脚定义、中断设置以及初始化代码片段,有助于读者理解和实现类似的单片机项目。" 在单片机开发中,尤其是在嵌入式系统中,串口通信是一种常用的数据传输方式。对于某些需要同时连接多个设备或模块的系统,如监控、遥测或数据采集系统,双串口的应用变得尤为重要。PIC18F87K90是一款具有两个串行通信接口的微控制器,可以满足这种需求。 首先,为了配置串口,我们需要对单片机的引脚进行定义。在给出的代码中,可以看到对PORTA到PORTG的初始化,这些端口用于控制液晶驱动、按键、SPI1、串口1、串口2、数码管显示、RS485控制和看门狗等不同功能。特别地,串口2的端口配置位于TRISE寄存器中,并且需要将ANCON2设置为0,以禁用端口模拟功能,确保串口2能正常工作。 中断管理是实时系统中的关键部分,用于处理外部事件。代码中设置了全局中断(GIE)和低优先级中断(PEIE)的开启和关闭,并清除了中断标志(PIR1)。中断优先级的设置通过IPEN、TMR0IP、IPR1、IPR2和IPR3完成,其中串口1和串口2的优先级可以通过IPR1和IPR3设置。中断允许位(如TMR0IE)的设定则决定了特定中断是否被启用。 此外,初始化程序还涉及了时钟配置,如将OSCCON设置为0x46,选择内部16MHz晶振并进行8分频,得到2MHz的工作频率。这通常是为了节省功耗和满足系统速度要求。 在实际编程中,还需要编写处理串口发送和接收的函数,例如UART初始化、发送数据、接收数据的函数等。这些函数会涉及到波特率设置、数据格式(如奇偶校验、停止位数等)以及中断服务程序。虽然这部分代码没有在摘要中给出,但它们是实现串口通信不可或缺的部分。 总结来说,"PIC双串口应用的C程序实现"涵盖了单片机的硬件配置、中断管理和基本的串口通信设置。要完全实现这个功能,开发者还需要编写具体的串口通信协议处理代码,以及根据实际应用需求进行相应的调整和优化。对于学习和实践单片机通信的工程师来说,这是一个很好的参考案例。
2011-10-18 上传
书 名:零点起步——PIC单片机常用模块与典型实例 丛书名:零点起步系列丛书 闫广明 张波 孙小君 等编著 机械工业出版社 责任编辑 郝建伟 李宁 书 号 见本光盘盘面 对应盘号 见本光盘盘面 一、运行环境 1.MPLAB IDE可以运行在Windows 2000或Windows XP系统下。本书以MPLAB IDE V8.0为介绍对象。 2.Proteus可以运行在Windows 2000或Windows XP系统下。本书以Proteus V7.12为介绍对象。 3.本书中所有例子均运行在Windows XP系统下,屏幕分辨率设置为1024*768。 二、光盘内容介绍 1.随书所赠光盘中包括本书的配套软件、项目源代码和多媒体课件。 2.书中每个例子的所有源文件都保存在相应章节的文件夹下,每个文件夹分别命名为“SMN”的形式,其中“M”代表章号,“N”代表例子序号,例如“S041”表示这是第4章“例4-1”的项目文件夹。 3.习题答案源代码在相应章节文件夹下的answer文件夹下,例如“习题4-1”的答案在“chapter4\answer\E041”文件夹。 4.读者可以通过邮件gdz_zero@126.com联系我们,我们会耐心解答您的问题。 三、开发软件介绍 1.MPLAB_v8.zip是MPLABIDE V8.0的安装压缩包,请解压到硬盘后运行“Install_MPLAB_V8.exe”来安装,选用默认配置选项即可。 2.prodemo74cn.exe 是Proteus V7.4的中文演示版安装包,直接运行即可安装。需要注意的是此版本无法模拟第三方例子文件,若要模拟本书中的例子,请使用正版软件。 四、PPT文件清单 文件夹按每章序号排列,内容如下。 01单片机概述.ppt 02C语言项目建立过程.avi 02ICD2安装过程.avi 02MPLAB安装过程.avi 02单片机开发流程.ppt 03PIC单片机系统结构.ppt 04单片机C语言.ppt 05输入输出端口.ppt 06中断系统.ppt 07定时计数器.ppt 08AD转换器.ppt 09USART模块.ppt 10SPI模块.ppt 11I2C模块.ppt 12CCP模块.ppt 13综合实例.ppt 五、例子、习题文件清单 文件夹按每章序号排列,内容如下。 chapter4:第4章 单片机C语言 S041: 最简单的C程序例子 S042: 移位运算符效果例子 S043: 初级的数码管动态显示例子 S044: 多文件项目管理例子 S045: 一位计数器例子 answer: 习题编程题答案 E041:编程题1答案 E042:编程题2答案 E043:编程题3答案 E044:编程题4答案 E045:编程题5答案 chapter5:第5章 输入输出端口的用法 S051: 跑马灯程序 S052: 四位数码管动态扫描程序,主频为4MHz S053: 四位数码管动态扫描主程序,采用模块化编程 S054: 记录按钮按下次数并显示在四位数码管上 S055: 三按键读取程序,控制四位数码管内容变化 S056: 4*4键盘扫描例子 S057: 简单的加法计算器例程 answer: 习题编程题答案 E051:编程题1答案 E052:编程题2答案 E053:编程题3答案 E054:编程题4答案 chapter6:第6章 中断系统 S061: INT 中断例子 S062: B口高四位中断例子 answer: 习题编程题答案 E061:编程题1答案 chapter7:第7章 定时计数器 S071: TMR0定时中断例程 S072: WDT例程 S073: 习题编程题电路图 answer: 习题编程题答案 E071:编程题1答案 chapter8:第8章 AD转换器 S081: 采用查询方式把模拟通道AN0的10位A/D转换结果送D口,C口显示 S082: 采用中断方式把模拟通道AN0的10位A/D转换结果送D口,C口显示 S083: 测量电位器RV2对地阻值并显示在四位数码管上 answer: 习题编程题答案 E081:编程题1答案 E082:编程题2答案 chapter9:第9章 USART串行通信 S091: 模拟的单片机与真实PC通信,通过SerialNull虚拟串口实现 S092: 通过USART发送字母例子 S093: MCU双机通信(基于自定通信协议) answer: 习题编程题答案 E091:编程题1答案 E092:编程题2答案 chapter10:第10章 SPI接口 S101: SPI 串行输出控制74HC595例子,主机发数据 S102: SPI双击通信例子,主机收数据,从机发数据 S103: 25C080读写例程 answer: 习题编程题答案 E101:编程题1答案 E102:编程题2答案 chapter11:第11章 I2C总线 S111: I2C 主机发送模式例子 S112: I2C 主机接收模式例子 S113: 24C02C EEPROM 读写例子 answer: 习题编程题答案 E111:编程题1答案 chapter12:第12章 输入捕捉输出比较脉宽调制 S121: 捕捉例程:频率计设计 S121: 比较例程:方波发生器 S123: PWM例程 answer: 习题编程题答案 E121:编程题1答案 E122:编程题2答案 chapter13:第13章 综合实例 S131:字符液晶驱动例程 S132:8*8点阵显示例程 S133:16*16点阵显示例程 S134: 密码锁控制器项目源代码 answer: 习题编程题答案 E131:编程题1答案 E132:编程题2答案 E133:编程题3答案