关于PIC单片机的应用和设计
pic单片机中文手册

pic单片机中文手册摘要:1.pic 单片机中文手册概述2.pic 单片机的特点和优势3.pic 单片机的应用领域4.pic 单片机的发展历程5.pic 单片机的未来展望正文:【pic 单片机中文手册概述】pic 单片机中文手册是一本详细介绍pic 单片机的技术手册。
pic 单片机是一种集成电路,可以用于控制和处理各种电子设备和系统。
这本手册包含了pic 单片机的基本原理、结构、功能、应用和开发技术等方面的内容,是电子工程师和相关专业人员必备的参考资料。
【pic 单片机的特点和优势】pic 单片机具有多种特点和优势,包括高性能、低功耗、多功能、易开发等。
它采用了哈佛结构,具有高速、高效的特点。
此外,pic 单片机还具有丰富的外设接口和可编程I/O 口,可以方便地与其他设备连接。
【pic 单片机的应用领域】pic 单片机广泛应用于各种电子设备和系统中,例如智能家居、工业自动化、医疗设备、消费电子等。
它可以用于控制、处理、测量、显示等功能,是现代电子技术中不可或缺的重要组成部分。
【pic 单片机的发展历程】pic 单片机是由美国微芯科技公司(Microchip)研发的一种单片机产品。
自20 世纪80 年代推出以来,pic 单片机已经经历了多个版本的更新和升级,性能和功能不断提高和完善。
目前,pic 单片机已经成为全球最畅销的单片机产品之一。
【pic 单片机的未来展望】随着电子技术的不断发展和进步,pic 单片机也将迎来新的发展机遇和挑战。
未来,pic 单片机将继续提高性能、降低功耗、拓展功能,以满足更多领域的应用需求。
PIC单片机的特点及应用

PIC单片机的特点及应用公司生产的16C72是一款基于EPROM的8位高性能微控制器。
与其它价格相当的微控制器相比,它在执行速度和代码压缩方面都有很大的改进。
因为随时可以买到需要的OPT(一次性编程)产品,因而缩短了利用PIC16C73举行产品设计开发的周期。
PIC16C73微控制器所具有的优越性能主要归功于它的精简命令集(RISC)和所采纳的哈佛(Harvard)结构,它具有分别的程序储器空间(12位宽命令)和数据存储器空间(8位宽数据)。
同时可运用两级流水线命令举行取数和执行,除了跳转命令需要两个周期外,其余全部的命令都可在单周期内执行。
PIC16C73分别的程序和数据空间可使命令字优化为随意宽度,从而使命令具有单字长的特性,且允许命令码的数据位数多于8位,这样,就可达到2:1的代码压缩和4:1的速度。
2 结构特点及工作原理PIC16C73 PIC16xx系列微控制器中的一种,它由高性能RISC结构的CPU、存储器、I/O接口和复位等组成。
其内部结构图1所示。
2.1 外部结构特点PIC16C73是28脚双列直插式大规模集成芯片,其引脚罗列2所示。
各引脚功能如下:OSC1/CLKIN:为晶体输入/外部时钟源输入引脚。
OSC2/CLKOUT:晶体振荡器输出/外部时钟源输出引脚。
在晶体振荡器方式下,接晶体或陶瓷振荡器;在RC振荡方式,输出1/4fosc。
MCLR/Vpp:芯片复位/编程输入脚,复位时,低电平有效。
RA0/AN0~RA5/AN4/SS:复用引脚,RA0~RA5为双向数据线;AN0~AN4为A/D输入输出通道;RA5~AN4/SS还可作为同步串口用法。
第1页共5页。
PIC单片机的应用设计技巧

I D连 接 插 座 有 6个 引 脚 , 只 使 用 了 其 中的 5个 引 C 但 脚 , 别是 V D 电源 ) V s 地 ) V p 编 程 电 压 )P C 分 D( 、 s( 、 p ( 、G
( 同步 时 钟 ) P 和 GD( 据 ) 数 。
1 I 2作 为 程序 烧 写 的使 用 CD
烧 写 芯 片 的方 式 有 两 种 : 通 烧 写 和 在 线烧 写 。在 线 普
可 靠 性 , 系 列 微 控 制 器 稳 居 8位 单 片 机 全 球 出 货 量 之 该 首 。PC 系列 单 片 机 具 有 指 令 集 简 洁 、 单 易 学 、 度 高 、 I 简 速 功能 强 、 耗 低 、 格 低 廉 、 积 小 巧 、 用 性 好 及 抗 干 扰 功 价 体 适 能 力 强 等 特 点 , 量 应 用 于 汽 车 电气 控 制 、 大 电机 控 制 、 业 工 控 制 仪 表 和 仪 表 、 信 、 电 、 具 、 功 耗 的 测 控 应 用 等 通 家 玩 低 领 域 , 国 内越 来 越 受 到 广 大 设 计 者 的 欢 迎 , 芯 公 司 的 在 微 单 片机 已经 成 为 目前 单 片机 世 界 的 主流 产 品 。 PC8位 单 片 机 内 已 经 包 含 运 算 器 、 储 器 、 / I 存 A D、 P M 、 入 和 输 出 IO( 电 流 可 达 2 W 输 / 灌 5mA) 通 信 等 常 用 、 接 口, 自由灵 活 的定 义 功 能 可 以适 应 不 同 的 控 制 要 求 , 而
维普资讯
雎
PC单 片机 的应 用设 计技 巧 I
■ 同济 大 学 黄 世 泽 曾 萍 郭 其 一
美 国 微 芯 公 司 ( co hp Te h oo y I c ) 发 的 Mir c i c n lg n . 开 C M0S工 艺 P C系 列 8位 单 片 机 ( S I RIC微 控 制 器 ) 特 别 ,
PIC详细功能及原理介绍

PIC详细功能及原理介绍1PIC 单⽚机开板详细功能及原理使⽤说明第1章 PIC单⽚机开发板简介1.1 产品概述本套开发板为天祥电⼦⼯程师综合市场上现有的多种PIC开发板的功能之优点,结合⼯程师们多年项⽬经验之需求,特别为PIC单⽚机爱好者们研制的具有强⼤功能的PIC单⽚机学习开发板。
该开发板集常⽤的单⽚机外围资源、烧写电路于⼀⾝。
配合天祥电⼦出品的配套视频教程及提供的资料和例程,可以让您在最短的时间内,全⾯的掌握PIC单⽚机编程技术。
板⼦的供电和下程序下载共⽤⼀根USB线与电脑连接,使⽤⽅便,性能稳定。
最⼤的特点是配套有郭⽼师亲⾃讲解的视频教程,让学习者轻松上⼿。
该开发板特别适合单⽚机初学者以及电⼦爱好者⾃学使⽤。
与PIC单⽚机开发板配套的视频教程全部⼗三讲,⾮常详细的讲解软件的使⽤、程序的编写,整个过程全部⽤单⽚机的C语⾔讲解,全新的讲课风格,跳过复杂的单⽚机内部结构知识,⾸先从单⽚机的应⽤讲起,⼀步步深⼊到内部结构,让学⽣彻底掌握其实际应⽤⽅法。
2第2章 MPLAB IDE集成开发环境第3章 PIC开发板资源介绍3.1 单⽚机引脚资源及系统时钟选择3.1.1 系统组成本模块主下由以下部分组成:1)40脚芯⽚插座2)PIC16F57芯⽚插座3)28脚芯⽚插座4)20脚芯⽚插座5)18脚芯⽚插座6)14脚芯⽚插座7)8脚芯⽚插座8)PIC10FXXX芯⽚插座9)时钟源OSCA(供40/28引脚单⽚机和PIC16F57单⽚机使⽤)10)时钟源OSCB(供18引脚单⽚机使⽤)11)时钟源OSCC(供20/14/8脚单⽚机使⽤)12)各I/O端⼝的输出接⼝3.1.2 芯⽚引脚资源各芯⽚的引脚资源详细信息请参考各芯⽚的数据⼿册,由于硬件设计原因,在本实验板中有⼀些引脚需要特别说明:1)PIC10FXXX的第8脚做复位脚和编程电压输⼊脚,不⽤于I/O功能(GP3)。
2)8引脚单⽚机的第4脚做复位脚和编程电压输⼊脚,不⽤于I/O功3能(GP3)。
PIC单片机实用教程-提高篇教学设计

PIC单片机实用教程-提高篇教学设计一、教学目标本教学设计旨在深入讲解PIC单片机的高级应用,并帮助学生掌握如下技能:1.理解PIC单片机的高级架构和代码结构。
2.掌握PIC单片机的定时器和计数器的高级应用。
3.学习PIC单片机的A/D转换与比较器的高级应用。
4.掌握PIC单片机的PWM信号输出以及DAC的高级应用。
5.学习PIC单片机与其他设备的通信方式。
二、教学内容2.1 PIC单片机高级架构和代码结构介绍PIC单片机的高级架构和代码结构,以及其与其他单片机的区别,帮助学生深入理解其工作原理和优势。
2.2 定时器和计数器的高级应用讲解PIC单片机在计时和计数方面的高级应用,帮助学生了解如何实现更精准的定时和计数,并实现一些特殊的功能。
2.3 A/D转换与比较器的高级应用介绍PIC单片机在模拟信号处理方面的高级应用,使学生了解如何进行高精度的模拟量采集和比较,以及如何将比较结果转换为数字值。
2.4 PWM信号输出与DAC的高级应用讲解PIC单片机在数字信号输出方面的高级应用,使学生了解如何实现更精准的PWM信号输出和DAC转换,并应用于驱动电机,控制照明等场景。
2.5 与其他设备的通信方式介绍PIC单片机与其他设备的通信方式,如SPI、I2C等,帮助学生了解如何实现设备之间的互联,以及如何进行数据传输和处理。
三、教学方法本课程将采用以下教学方法:1.讲授:通过PPT和黑板讲解PIC单片机的高级应用知识点,并结合实例进行分析和演示。
2.实验:通过实验操作帮助学生巩固所学知识,并掌握如何使用PIC单片机实现各种高级应用。
3.课程作业:布置课程作业,鼓励学生在课外深入学习和实践,并及时反馈和指导。
四、教学资源本课程将提供以下教学资源:1.PPT课件:详细介绍所有知识点,并提供相关实例。
2.开发板:提供PIC单片机的开发板和相关配件,供学生进行实验操作。
3.实验手册:提供详细的实验操作指导,使学生能够顺利完成实验,并掌握关键技能。
pic16f单片机例程

pic16f单片机例程如何在PIC16F单片机上实现一个简单的LED闪烁程序PIC16F系列是微芯科技公司推出的8位单片机系列产品,被广泛应用于各种嵌入式系统中。
其中,PIC16F877A是该系列中应用最广泛的一款单片机。
本篇文章将介绍如何使用PIC16F877A单片机,通过编写一个简单的LED闪烁程序来展示其基本的程序控制能力。
第一步:准备硬件设备要实现LED闪烁程序,我们需要以下硬件设备:- PIC16F877A 单片机- 开发板- LED- 适配器(用于将单片机上的数字电压转换为LED所需的电压)将PIC16F877A单片机插入开发板的合适位置上,并连接好适配器和LED。
确保硬件设备连接正确,以便在编写程序后能够顺利进行实验和调试。
第二步:编写闪烁程序C语言是编写PIC单片机程序的常用语言。
我们将使用MPLAB X IDE和XC8编译器来编写闪烁程序。
按照以下步骤进行设置和编写程序。
1. 安装MPLAB X IDE以及XC8编译器,确保其正常运行。
2. 打开MPLAB X IDE,创建一个新工程。
选择"Microchip Embedded" -> "Standalone Project",并选择合适的工具链(例如:XC8)。
3. 选择PIC16F877A作为目标设备。
4. 定义单片机的时钟频率和相关配置参数。
在项目窗口的“Properties”下,选择"XC8 Global Options" -> "PIC14/PIC16" -> "Configuration bits",并设置好需要的参数(例如:时钟频率、使能位等)。
5. 在工程目录下创建一个新的.c文件,用于编写闪烁程序。
例如:ledBlink.c6. 编写闪烁程序的代码。
以下是一个简单的LED闪烁程序示例:c#include <xc.h>#define _XTAL_FREQ 8000000函数声明void init(void);void delay(void);主函数int main(void) {init();无限循环while(1) {设置LED端口为高电平PORTDbits.RD0 = 1;延时delay();设置LED端口为低电平PORTDbits.RD0 = 0;延时delay();}return 0;}void init(void) {将RD0引脚配置为输出TRISDbits.RD0 = 0;初始化RD0引脚为低电平PORTDbits.RD0 = 0;}void delay(void) {延时函数,用于控制LED闪烁的速度__delay_ms(500);}第三步:编译和下载程序完成程序的编写后,我们需要将其编译成二进制文件并下载到PIC16F877A单片机中。
pic单片机汇编语言程序设计实例
pic单片机汇编语言程序设计实例一、前言单片机是现代电子技术中的重要组成部分,而汇编语言则是单片机编程中最基础的语言。
本文将以PIC单片机为例,介绍汇编语言程序设计实例。
二、PIC单片机简介PIC(Peripheral Interface Controller)是一种微控制器,由美国Microchip Technology公司开发。
PIC单片机具有体积小、功耗低、价格便宜等优点,广泛应用于各种电子设备中。
三、汇编语言基础1. 寄存器PIC单片机有许多寄存器,其中最常用的有W寄存器和F寄存器。
W 寄存器是一个8位的通用寄存器,可用于存储临时数据;F寄存器则是一个8位的特殊功能寄存器,可用于控制各种外设。
2. 指令集PIC单片机的指令集非常丰富,涵盖了各种数据操作、逻辑运算、跳转等指令。
例如:- MOVF:将指定地址中的数据移动到W寄存器中;- ADDWF:将指定地址中的数据与W寄存器中的数据相加,并将结果保存到指定地址中;- BTFSS:测试指定地址中某一位是否为0,并跳过下一条指令。
3. 标志位PIC单片机还有一些标志位,用于记录各种状态信息。
其中最常用的有C(进位标志位)、Z(零标志位)和DC(半进位标志位)。
四、汇编语言程序设计实例下面以一个简单的LED闪烁程序为例,介绍PIC单片机汇编语言程序设计。
1. 硬件连接将一个LED连接到PIC单片机的RA0口,通过一个220欧姆电阻限流。
将VDD和VSS分别连接到5V和地。
2. 程序设计首先定义RA0口为输出口,并将其置为低电平。
然后进入一个死循环,在循环中将RA0口置为高电平、延时一段时间、再将RA0口置为低电平、再延时一段时间。
程序如下:LIST P=16F84AINCLUDE "P16F84A.INC"__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON &_HS_OSCORG 0x00GOTO MAINORG 0x04MAIN:MOVLW 0x00 ; 将W寄存器清零TRIS PORTA ; 将PORTA定义为输出口LOOP:BSF PORTA, 0 ; 将PORTA.0置为高电平CALL DELAY ; 延时BCF PORTA, 0 ; 将PORTA.0置为低电平CALL DELAY ; 延时GOTO LOOPDELAY:MOVLW 0x64 ; 将W寄存器设置为100(十进制)DELAY_LOOP:NOP ; 空操作,延时1个指令周期DECFSZ W, F ; 将W寄存器减1,如果不为0则跳转到DELAY_LOOPGOTO DELAY_LOOP ; 否则跳出循环RETURN ; 返回主程序3. 编译和烧录将程序保存为.asm文件,使用MPLAB IDE进行编译和烧录。
PIC单片机课程设计 - 三位倒计时器(含全部汇编程序清单)
课程设计报告课程名称:单片机原理与接口技术课程设计设计题目:三位倒计时器院系:机电工程学院班级:2012级电气工程及其自动化专业姓名:XXX学号:2012XXXX指导教师:XXXX设计时间:2014年X月X日出勤实物报告总分目录前言 (1)第一章设计方案 (1)1.1 设计内容及要求 (1)1.1.1 设计内容 (1)1.1.2设计要求 (1)1.1.3功能设计 (2)1.2硬件设计 (2)1.2.1 矩阵键盘电路设计 (2)1.2.2数码管电路设计 (3)1.2.3 LED及蜂鸣器电路设计 (4)1.2.4单片机主电路设计 (4)1.2.5上电电路的设计 (5)1.2.6总电路图 (5)1.3总体方案 (6)第二章软件设计 (7)2.1 倒计时部分 (7)2.1.1 键盘扫描子程序 (8)2.1.2 0到9按键功能子程序和键盘显示子程序 (9)2.1.3 一位转多位十进制子程序 (12)2.1.4 TMR0中断服务子程序 (13)2.1.5 倒计时显示子程序 (15)2.2 附加功能部分 (15)2.2.1 暂停和继续 (16)2.2.2 计数功能 (17)2.2.3 复位和归零 (17)2.3 结束提示部分 (18)2.4 程序部分总结 (18)第三章实物照片 (19)3.1 实验板照片 (19)3.2 脱机运行照片 (19)第四章问题与体会 (21)结论 (22)参考文献 (23)附录:程序清单 (24)前言此次课程设计的内容为三位数的倒计时器的设计。
目前倒计时器的发展已经相当先进,我做这次设计的主要目的是想更进一步了解基本电路的设计流程,以提高自己的设计理念,使自己的动手动脑能力有更进一步提高。
通过解决现实生活中的问题,巩固和加深单片机课程中所学的理论知识和实验能力,加深对单片机软硬件知识的理解,以获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
本次设计注重对单片机工作原理以及键盘控制及显示原理的理解,能够提高自己的动手能力和设计能力,以培养自己的创新能力,做到理论和实践相结合。
2015-PIC单片机原理及应用1
嵌入式系统(embedded system)是计算机硬件和软件的集合体。它包
括一个处理器,涉及对硬件的直接控制,是为了嵌入到对象体系中完成
某种特定的功能而设计的,是嵌入式计算 机系统的简称。 嵌入式系统可以是以微控制器 (单片机)或是以微处理器为主构成的计
32
系统集成
1. 复位模块
主复位信号SYSRST 信号
RESET指令:只要何时执行了RESET 指令, 器件都会产生主复位信号SYSRST 信号, 从而将器件置于特殊复位状态
34
1. 复位模块
引脚复位(MCLR):只要MCLR 引脚拉为低 电平,输入脉冲比规定的最小宽度长,当 引 脚被释放产生高电平后,在下一个指令时钟周 期将产生SYSRST 信号并开始复位向量取指。
FLASH Memory型
程序存储器简介
中断向量是中断源的识别标志,可用来形成相应 的中断服务程序的入口地址或存放中断服务程序的 首地址 把所有的中断向量集中起来,按中断类型号从小 到大的顺序存放到存储器的某一区域内,这个存放 中断向量的存储区叫做中断向量表,即中断服务程
序入口地址表
27
用于保存用户编写的应用程序代码, 同时还可以用于保存程序执行时用 到的数据
2
PIC单片机原理及应用
第1章 概述
3
1.1 单片机简介
什么是单片机?
单片机(single chip microcontroller)是一种集成在电路芯片,
是采用超大规模集成电路技术把具有数据处理能力的中央处理器 CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、 定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、 模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一 个小而完善的计算机系统。
基于PIC单片机的 AT88RF256-12感应卡应用设计
C 3 I 67
41 8×4 4
V
吣 S / KI C1 CL N l l
I
‰鲐 lC L L R 0 o2 Kr AA s/ Or 1 1 C / N
3 软 件 设 计
对 A 8 R 2 6 2卡 片 的 读 写 操 作 可 以分 为 如 下 几 T 8 F 5 —1
个 功能模块 :
◇ 读 卡 ( MI L R 码 ) 读 L E ;
◇ 发 读卡命令 ( 读块 命 令 ,c接 收 正确 后将 发 出 发 I
对应块 的信息) ;
装 。在 图 1电 路 中 , I 6 7 P C1 C 3用 来 承 担 数 据 的 MI L L ER
款基于 15k 频率 工作 的感应卡 , 2 Hz 感应卡的天线利用 电
感 耦 合 产 磁 通 , 通 用 来 向芯 片 提 供 电源 。作 为 一 种 典 型 磁 的 低 频 可 读 写 卡 , 其 可 加 密 且 数 据 量 为 2 6位 , 因 5 A 8 R 2 6 1 在 市 场上 有 着 良好 的 应 用 前 景 。越 来 越 T 8 F5 — 2 多 的应 用 除 了对 感 应 卡 的接 口提 出 要 求 , 对 传 统 感 应 卡 还 应 用 开 发 的微 处 理 器 提 出 了进 一 步 的 要 求 。这 就 需 要 较 高 的软 件 技 巧 。P C微 处 理 器 是 微 芯 公 司推 出 的 高 性 能 I 系 列 产 品 。它 采 用 精 简 指 令 集 R S ( eu e ntut n IC R d cdIsrc o i S t o p tr和 哈佛 总线 ( vad , 有 低 价 、 电 、 e C m ue) Horr) 具 省 高
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于PIC单片机的应用和设计关于PIC单片机的应用和设计[复制链接]PIC系列单片机具有指令集简洁、简单易学、速度高、功能强、功耗低、价格低廉、体积小巧、适用性好及抗干扰能力强等特点,大量应用于汽车电气控制、电机控制、工业控制仪表和仪表、通信、家电、玩具、低功耗的测控应用等领域,在国内越来越受到广大设计者的欢迎,微芯公司的单片机已经成为目前单片机世界的主流产品。
PIC 8位单片机内已经包含运算器、存储器、A/D、PWM、输入和输出I/O(灌电流可达25 mA)、通信等常用接口,自由灵活的定义功能可以适应不同的控制要求,而不必增加额外的IC芯片。
这样电路结构很简单,开发周期将大为缩短。
PIC16系列单片机属于PIC 8位单片机的中级型产品,采用14位的RISC指令系统。
笔者使用PIC16F716单片机设计了一个电动机保护器,在设计过程中遇到很多问题,通过多方查找资料以及向Microchip公司技术人员寻求支持,问题一一得到解决。
现将部分问题记录如下,与大家一起探讨。
1 ICD2作为程序烧写的使用1.1 ICD2简介MPLAB ICD2在线调试器是一款低价位的PIC开发工具。
它利用Flash工艺芯片的程序区自读写功能来实现仿真器调试功能;使用的软件平台是Microchip的MPLAB IDE(集成开发环境软件包),兼容Windows NT、Windows 2000和Windows XP等操作系统。
其通信接口方式可以是USB(最高可达2 Mb/s)或RS-232串行接口方式;工作电压范围为2.0~5.5 V,可支持最低2.0 V 的低压调试.MPLAB ICD2可以支持大部分Flash工艺的芯片。
它不仅可以用作调试器,同时还可以作为开发型的烧写器使用。
1.2 ICD2作为烧写器时的配置烧写芯片的方式有两种:普通烧写和在线烧写。
在线烧写是适合大批量生产方式的烧写办法。
使用在线烧写时通常用户都已经把芯片焊到了板上,此时就要求用户板上有预留的烧写接口。
用户板上的接口是通过一条6芯的扁平电缆与ICD2主机上同样的接口一一对应连接的。
图1显示了MPLAB ICD2与目标板上模块连接插座的互连状况。
ICD连接插座有6个引脚,但只使用了其中的5个引脚,分别是VDD(电源)、Vss(地)、Vpp(编程电压)、PGC(同步时钟)和PGD(数据)。
1.3 ICD2作为烧写器时容易出现的问题及解决方法尽管MPLAB ICD2与目标板的互连非常简单,但是一不小心就会出现问题,基本上每一个PIC的入门者都会碰到类似的问题。
下面就一些常见问题作简要叙述。
如图1所示,在Vpp与VDD之间通常要串接一个上拉电阻(通常约为10 kΩ),这样Vpp线可置为低电平来手动复位PICmicro单片机。
但是对一般设计者来说,都是采用上电自动复位。
如果在这里采用集成器件DMP809,那么就会导致连接不上,程序没有办法烧入。
对于PGC、PGD两根线,由于在ICD2内部已经进行了上拉,所以在外围设计中,不要再进行上拉,否则会造成分压。
对于PGC、PGD和Vpp三根线,不要对地接电容,因为电容会阻碍在数据和时钟线上电平的快速转换,从而影响ICD2与目标板的连接。
同样对于PGC、PGD,由于数据或时钟都是双向传输的,这时如果在中间串一个二极管,则会影响ICD2与单片机的双向通信。
但是,对PGC和PGD来说,在单片机上同时复用为普通I/O 口,而有些使用上必须要接对地电容或者是串接二极管。
对于这种情况,唯一的处理方式就是在烧写时从芯片的PGC和PGD端口直接跳线到程序烧写口。
2 A/D转换通道切换问题笔者所设计的电动机保护器需要进行很多A/D转换,比如三相电流转换、零序电流转换以及各种定位器等。
但是笔者所采用的PIC16F716单片机只有5路A/D转换通道,因此附加了一个多位选择开关对一个A/D通道进行复用。
而在调试中发现这样一个问题,就是A/D转换值不准确,甚至有点乱,但从程序流程以及代码角度均查不出任何问题。
后查明PIC16F716单片机进行A/D转换通道切换时,需要一定的延时,延时时间是毫秒级。
解决办法是:在通道间切换时,当第一个通道转换完成后,先转到另一个通道;然后延时1 ms左右,再进行A/D转换。
而对同一个通道信号切换时,要在第一个信号转换完成后,禁止信号输入,延时1 ms左右;然后输入信号,再进行A/D转换。
这种做法比较麻烦,也很占用时间,并且从调试结果来看,问题并没有解决。
在反复进行调试中,最后得到的优化解决办法是:对于通道间转换以及同一通道信号转换,要对每一个信号至少进行两次A/D转换;第一次的转换结果,舍弃不予处理,只取第二次A/D转换的结果。
从调试结果来看,很好地解决了这一问题。
3 软件开发小技巧PIC单片机采用精简指令集,例如对于PIC16F716单片机,只有35条单字节指令。
要用这么少的指令实现复杂的控制或计算,显然要在软件设计上多下功夫,并且PIC的指令系统与51系列单片机有很大不同,这让PIC初学者很不适应。
下面笔者就自己的体会,谈一些软件设计需要注意的问题。
3.1 指令的大小写问题编写PIC单片机的源程序,除了源程序的开始处需要严格的列表指令外,还须注意源程序中字母符号的大小写规则,否则在PC机上汇编程序时不会成功。
在源程序中都会使用伪指令INCLUDE。
这条指令将列表中指定的单片机文件(在MPLAB中)读入源程序作为源程序的一部分,所以凡是MPLAB中有关该单片机已有的寄存器在源程序中无需再用赋值指令(EQU)赋值,这就使所建立的源程序大为简化。
此外,由于有了伪指令INCLUDE,所以根据MPLAB软件中的格式,在源程序中的操作数凡是涉及MPLAB已规定的寄存器名称的,其字母一律只能大写,不能小写。
其余操作码、符号字母可任意大小写,但0x中的X应小写,否则汇编不会成功。
鉴于上述原因,为了书写方便,在使用MPLAB软件时,PIC单片机的源程序均用大写字母为宜(0x 例外)。
3.2 振荡器的配置以及时序的计算PIC系列单片机可以工作于以下4种不同的振荡器方式:LP(低功耗晶体振荡器)、XT(晶体谐振器)、HS(高速晶体谐振器)和RC(阻容振荡器)。
用户可以根据其系统设计的需要,通过对配置位(FOSC1和FOSC2)编程,选择其中一种工作模式。
而一旦振荡器配置完成,那么根据用户的配置,可以轻松地计算出程序运行的时间以及A/D转换所占用的时间,这样就会很轻松地安排好单片机的时序。
例如,如果采用4 MHz的HS振荡模式,那么单片机的时钟频率为Fosc/4,也就是说执行一条指令需要1us;对于需要两个指令周期的指令,需要2us。
而对于A/D转换,如果A/D转换时钟位选择为Fosc/8,那么A/D转换模块转换一个位的时间Tad就为2us。
对一个8位的转换来说,需要的时间为9.5Tad,也就是完成一次A/D转换的时间为19us。
这样只需要查看源程序的行数并作简要分析,就可以计算出程序运行的时间。
3.3 存储体的选择PIC单片机的数据存储器通常分为两个存储体,即存储体O(Bank0)和存储体1(Bank1)。
每个存储体都是由专用寄存器和通用寄存器两部分组成的。
两个存储体中的一些寄存器单元实际上是同一个寄存器单元,却又具有不同的地址。
不同型号的PIC单片机,其数据存储器的组成(即功能)是不完全相同的,所以设计人员一旦选用了某个PIC单片机的型号后,就要查找该单片机的数据存储器资料,以便编程使用。
笔者所采用的PIC16F716单片机的存储区,是通过STATUS寄存器的RP1位和RP0位来选择的。
当配置为00时,表示选择存储区0;当配置为01时,表示选择存储区1。
因为存储区的改变只须改变RP0位,所以通常在程序编写时,只改变RP0位来选择存储区。
但是这样容易造成程序的混乱,因此,笔者建议在每次更换存储区时,要分别对RP0和RP1进行置位。
在程序初始化时,最好将寄存器的初始化分为两部分:第一部分为存储区0;第二部分为存储区1。
然后将每个需要初始化的寄存器分别在对应的存储区进行初始化即可。
3.4 GOTO和CALL指令的不同使用在PIC的汇编程序中,CALL与GOTO 指令使用的场合不同。
CALL是用来调用子程序的,在调用完子程序后返回到调用前的程序;而GOTO是无条件转移,即由此状态进入另外一个状态而不需要返回。
为了使程序更加具有可读性,使流程更加清晰、合理,通常程序都采用模块化程序设计,即将程序按照功能分成不同的子程序,而主程序则相当简洁,只须采用CALL 指令对子程序进行调用。
由于PIC单片机的堆栈有限,在程序中不能无止境地使用GOTO指令,否则会使堆栈溢出,程序无法正常运行。
但是在有些时候,例如当程序出现分支时,则不得不使用GOTO指令。
对于PIC16F7x系列单片机,程序出现分支时只能通过STATUS寄存器的Z位或C位进行判断。
这时在两种情况.的前一种情况下,必须使用GOTO指令进行转移;否则在执行完第一种情况后,紧接着又执行第二种情况。
程序如下:BTFSS STATUS,ZGOTO AGOTO B在跳转到A时,必须使用GOTO指令;否则执行完这条语句以后,紧接着执行GOTO B。
这样无论Z为何值,程序都将跳转到B。
而对于GOTO B,则可以不必使用GOTO 指令。
在上面这种情况下,由于GOTO只在子程序内部进行跳转,小程序内部循环占用堆栈的级数不多,因此使用GOTO 指令是可行的。
但是在大的程序中使用GOTO指令,将有可能无法返回到调用前的下一条指令。
因此,笔者建议,在使用汇编语言进行程序设计时,应该将程序分解成一级级的子程序;然后在程序之间进行调用,尽量将GOTO指令跳转的范围缩小。
3.5 对芯片的重复烧写对没有硬件仿真器的设计者来说,总是选用带有EPROM 的芯片来调试程序,通过反复的修改来观看运行结果,以便对程序进行调试。
每更改一次程序,都是将原来的内容先擦除,再编程,浪费了相当多的时间,又缩短了芯片的使用寿命。
如果后一次编程较前一次,仅是对应的机器码字节的相同位由1变为0,那么就可在前一次编程芯片上再次写入数据,而不必擦除原片内容。
在程序调试过程中,经常遇到常数的调整。
如果常数的改变能保证对应位由1变0,则都可在原片内容的基础上继续编程。
另外,由于指令NOP对应的机器码为00,调试过程中指令的删除,可先用NOP指令替代,编译后也可在原片内容上继续编程。