PIC单片机的应用设计技巧

 行业新闻     |      2021-02-21 07:00
本文摘要:Microch { pTechnologyInc }开发的CM0S PIC系列8位微控制器(RISC微控制器)。尤其是内置第二代闪存(40年存储寿命)的微控制器,在慢速应用方面是独一无二的。 该系列微控制器由于使用方便,可靠性高,在全球8位单片机出货中排名第一。PIC系列微控制器具有指令集简洁、易学、速度慢、功能强大、功耗低、价格低廉、体积小、适用性好、抗干扰能力强等特点。 它们广泛应用于汽车电气控制、电机控制、仪表工业控制、通信、家电、玩具、小功率测控应用等。

鸭脖app下载

Microch { pTechnologyInc }开发的CM0S PIC系列8位微控制器(RISC微控制器)。尤其是内置第二代闪存(40年存储寿命)的微控制器,在慢速应用方面是独一无二的。

该系列微控制器由于使用方便,可靠性高,在全球8位单片机出货中排名第一。PIC系列微控制器具有指令集简洁、易学、速度慢、功能强大、功耗低、价格低廉、体积小、适用性好、抗干扰能力强等特点。

它们广泛应用于汽车电气控制、电机控制、仪表工业控制、通信、家电、玩具、小功率测控应用等。受到国内广大设计师的青睐。微芯片公司的微控制器已经成为微控制器领域的主流产品。

PIC8位单片机已经包含了运算器、存储器、A/D、PWM、输出输入I/O(按流平均电流为25mA)、通信等常用模块。权利柔性的定义功能可以适应不同环境下的不同控制和拒绝。而不减少额外的IC芯片。

这样电路结构非常简单,开发周期会大大延长。PICl6系列单片机属于PIC8位单片机的中间产品,采用14位RISC指令系统。作者为PICl6F716单片机设计了一种电机保护器,在设计过程中遇到了很多问题。通过向各方询问数据,并寻求微芯片公司技术人员的反对,问题得以逐一解决。

现将一些问题记录如下,我们一起探讨。1ICD2是作为1.1ICD2概述的程序编写的,MPLABICD2在线调试器是一个低成本的PIC开发工具。

利用Flash工艺芯片程序区的自读功能,搭建模拟器的调试功能;使用的软件平台是Microchip的mpl result,兼容WindowsNT、Windows2000和WindlowsXP。其通信接口可以是USB(最低平均2 MB/s)或RS-232串行接口。

工作电压范围为2。O ~ 5.5V,可以对抗2.0V以下的高压调试,MPLABICD2可以对抗大部分Flash芯片。

它不仅可以在调试器中使用,还可以作为开发编写器使用。1.2 ICD 2作为预烧写入器时,有两种方式为其配备预烧芯片:普通预烧和在线预烧。

在线燃烧是一种适合大规模生产的燃烧方法。当用于在线烧录时,一般来说,用户已经将芯片焊接到板上,此时,用户被拒绝在板上拥有空出的烧录模块。用户板上的模块通过6芯排线连接到ICD2主机上一定程度的模块。

有6个插座连接到ICD,但只使用了5个,分别是VDD(电源)、VSS(接地)、VPP(编程电压)、PGC(实时时钟)和PGD(数据)。1.3ICD2作为一个消防写手,更容易出现经常性的问题和解决方法。

虽然MPLAGICD2和目标板的点对点连接很简单,但是不小心也不会经常出现问题,基本上每个PIC初学者都会遇到类似的问题。下面不详细描述一些常见问题。如图L右图所示,在VPP和VDD之间串联了一个上拉电阻(一般约为lOk),这样VPP线就可以设置为低电平,手动废掉PICmicro单片机。

但是对于一般的设计师来说,都是用上电自动废黜。如果这里使用的是建筑设备DMP809,则不会断开连接,程序也不会烧入。对于PGC线和PGD线,上拉已经在ICD2内部进行,所以在外围设计中,不要随意上拉,否则不会产生分力。对于三条线路PGC、PGD和VPP,不要将电容接地,因为电容不会阻碍数据和时钟线路上的电平缓慢切换,从而影响ICD2和目标板之间的连接。

在某种程度上,对于PGC和PGD来说,由于数据或时钟是双向传输的,如果中间连接一个二极管,ICD2和MCU之间的双向通信不会受到影响。然而,对于PGC和PGD来说,它们同时适用于普通的输入/输出端口,其中一些端口必须通过电容接地或串联二极管连接。

在这种情况下,处理它的唯一方法是在老化过程中,将芯片的PGC和PGD端口的电线跳线到程序老化插座。2a/d切换井下通道切换问题作者设计的电动机保护器必须进行多种a/d切换,如三相电流切换、零序电流切换和各种定位器。而笔者使用的PIC16F716单片机只有5个A/D切换地下通道,因此可以选择多位选择器开关来适应一个A/D地下通道。

在调试中,我们发现了这样一个问题,就是A/D切换值不准确,甚至有点乱,但是从程序流程和代码的角度,我们并没有发现什么问题。发现PICl6F716单片机在启动A/D切换地下通道转换时,必须延迟一定的时间,延迟时间为毫秒级。

解决方法是:地下通道切换时,第一条地下通道切换时,会转移到另一条地下通道;然后延时1ms左右,再进行a/d切换。同一地下通道信号转换时,第一次信号切换完成后应禁止信号输出,延时约1ms然后拿下信号,再进行a/d切换。这个方法比较难,比较闲,而且从调试结果来看,问题并没有解决问题。在反复调试中,最终优化的解决方案是:对于地下通道之间的切换以及同一地下通道的信号切换,每个信号至少要进行两次A/D切换;第一次切换的结果被丢弃而不进行处理,并且仅取第二次模数切换的结果。

从调试结果来看,这个问题得到了很好的解决。3软件开发技巧PIC单片机采用简化指令集。比如PICl6F716单片机只有35个单字节指令。

用这么少的指令搭建一个简单的控件或者计算,软件设计上似乎要付出更多的努力,而且PIC的指令系统和51系列单片机的指令系统有很大的不同,使得PIC初学者不太适应环境。下面笔者结合自己的经验谈谈软件设计中必须注意的一些问题。3.1指令的情况在编写PIC单片机源程序时,除了在源程序开头列出严格的指令外,还要注意源程序中字母符号的大小写规则,否则在PC上汇编程序时会比较流畅。将在源程序中用于伪指令INCLUDE。

该指令从列表(在MPLAB中)中注册的MCU文件中读取源程序,作为源程序的一部分。因此,MPLAB中所有具有微控制器数量的寄存器都需要在源程序中分配赋值指令(EQU),这使得创建的源程序被深度修改。

另外,由于伪指令INCLUDE,根据MPLAB软件中的格式,源程序中涉及MPLAB指定的寄存器名称的操作数字母不允许大写或小写。其他操作码和符号字母在任何情况下都可以,但是0x中的x不应该是小写的。否则编译会很顺利。

鉴于以上原因,为了书写方便,在MPLAB软件中使用时,PIC单片机的源程序要用大写字母(0x值得注意)。3.2振荡器和计时计算设备PIC系列微控制器可以工作在以下四种不同的振荡器模式:LP(低功率晶体振荡器)、XT(晶体谐振器)、HS(高速晶体谐振器)和RC(电阻电容振荡器)。用户可以根据自己系统设计的需要,通过对配备的位(FOSC1和F0SC2)进行编程,自由选择其中一种工作模式。

而且一旦配备了振荡器,根据用户的设备,程序的运行时间和A/D切换的空闲时间就可以奇妙的计算出来,这样就不会奇妙的决定单片机的定时了。比如使用4MHz的HS波动模式,单片机的时钟频率为FOSC/4,意味着必须继续执行一条指令1s;对于必须有两个指令周期的指令,必须是2s。至于A/D切换,如果自由选择A/D切换时钟位为FOSC/8,则A/D切换模块切换一位的时间Tad为2s。

对于一个8位开关,需要的时间是9.5Tad,也就是完成一个A/D开关的时间是19 s。这样我们只需要查一下源程序的行数,做一个详细的分析,就可以计算出程序的运行时间。3.3存储体自由选择PIC单片机的数据存储器一般分为两个存储体,即存储体0和存储体1。

每个存储体由一个特殊寄存器和一个通用寄存器组成。两个存储体中的感觉寄存器单元本质上是相同的寄存器单元,但是它具有不同的地址。

PIC单片机有不同的类型,数据存储器组成(即功能)也不完全相同,所以一旦设计师搭配了某个PIC单片机型号,就需要查询单片机的数据存储器数据进行编程。作者使用的PICl6F716单片机的存储区是通过状态寄存器的RPl位和RP0位自由选择的。当设备设置为00时,响应存储区0的自由选择;当设置为01时,它响应存储区1的自由选择。一般来说,当写程序时,只有RP0位被改变以自由选择存储区。

但是更容易在节目中引起恐慌。所以,我建议每次更换存储区域时,RPO和RPl应该分开设置。程序初始化时,寄存器的初始化最多分为两部分:第一部分是存储区o;第二部分是存储区1。

然后,必须初始化的每个寄存器在相应的存储区中初始化。3.4GOTO和CALL说明不一样。在PIC汇编程序中,CALL和GOT0指令用于不同的领域。

CALL用于调用子程序,调用子程序后返回调用前的程序;GOTO是无条件移动的,也就是从这个状态移动到另一个状态,而不必返回。为了使程序可读性更强,过程更清晰合理,一般来说,程序是模块化设计的,根据程序的功能将程序分为不同的子程序,而主程序非常简洁,只使用call指令调用子程序。

因为PIC单片机的栈是有限的,不能在程序中无限期地用于GOTO指令,否则不会阻塞栈,程序也不能长时间运行。但是有时候,比如程序经常分支的时候,就被迫使用GOTO指令。

至于PICl6F7x系列单片机,当程序经常出现分支时,是无法用STATUS寄存器的z位或c位来区分的。此时,在前两种情况下,必须用于GOTO指令的扩展和移动;否则,继续第一种情况后,继续第二种情况。程序如下:BTFSSSTATUS,函数调用一个时,GOTO指令必须使用ZGOTOAGOTOB否则,执行此语句后,立即继续执行GOTOB。

这样,不管z值是多少,程序都会调用函数B.而对于GOT0B,可能不用于GOTO指令。在上面的情况下,因为GOTO只是扩展子程序内部的函数调用,小程序内部没有很多级别的空闲栈,所以使用GOTO指令是不切实际的。但如果用于大型程序中的GOTO指令,可能无法在调用前返回下一条指令。因此,作者建议在汇编语言开发程序设计中使用该程序时,应将其分解为一级子程序;然后扩展程序之间的调用,尽可能扩大GOTO指令函数调用的范围。

3.5芯片的重复烧录对于没有硬件模拟器的设计人员来说,他们总是用带EPROM的芯片调试程序,通过重复的改动来观察运行结果,从而调试程序。每次换程序都是把原来的内容重新读一遍,重新编程,浪费了大量的时间,延长了芯片的使用寿命。

如果最后一次编程多于前一次编程,则只有相应机器码字节的相同位从1变为0,然后数据可以再次加载到前一次编程的芯片上,而无需读取原始芯片内容。在程序调试过程中,经常会遇到不断的调整。如果常数的变化可以保证对应的位从1变为0,则可以在原有内容的基础上进行后期编程。

另外,由于NOP指令对应的机器码是00,所以调试时的指令移除可以先用NOP指令代替,编译器也可以在原始内容之后进行编程。结论在使用PIC单片机的设计过程中,我们注意到了PIC单片机的特点,可以减少走弯路,延长开发周期。

在一定程度上,在软件设计中使用合适的方法可以使整个程序顺利运行,并且会增加程序空间的使用,防止调试中出现bug。以上只是作者在实际设计过程中的一些小经验。

希望和大家一起探索,为PIC单片机在联合自学中的普及和发展做出贡献。


本文关键词:PIC,单片机,的,应用,鸭脖app下载,设计,技巧,Microch

本文来源:鸭脖app下载-www.atelier-anone.com