当前分类

单片机1000问

PIC单片机型号中后缀A/B/C分别代表什么

PIC单片机型号中,后缀 A/B/C 表示的是芯片生产的工艺不同,从A到C是工艺不断更新,硅片圆盘 Wafer的直径变大 线宽变窄,线距变密 在同一个圆盘上可以制作出更多的芯片,从而降低了生产成本,从功能角度来看,三者是一样的,当然,新版本的芯片中会把现有版本中存在的一些问题作些修正,功能会得到扩充,从性能指标上来讲,三者有些差距,一个明显的表现是在电源电压的承受范围,制作线宽越细,所能承受的电压越低,例如,PIC16C57的最高电源电压指标为6V,而 57C 的指标为5.5V,绝大多数情况下新版的片子可直接替换旧版,从目前发现的问题来看,主要出在晶体振荡电路部分,原因是新版芯片振荡电路内部的反向放大器的增益要比旧的高出许多,若晶体选择的不合理可能会振荡到高次谐波上去,有些客户也提出新版的片子抗干扰的性能不比旧版的片子
其实,我们公布的技术指标在这方面并没有任何牺牲,只是工艺上的原因,我们留的余量减少了,请大家注意不要认为,PIC的片子抗干扰能力强,在电路设计时就一点不考虑应有的抗干扰措施

PIC 单片机应用中晶体选择的注意事项

对于一个高可靠性的系统设计,晶体的选择非常重要,在振荡回路中,晶体既不能过激励,容易振到高次谐波上,也不能欠激励,不容易起振),尤其在设计带有睡眠唤醒,往往用低电压以求低功耗 的系统中,若还是随手拿一颗晶体就用你的系统可能会出问题,这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振这一现象在上电复位时并不特别明显,原因是上电时电路有足够的扰动,很容易建立振荡
评价振荡电路是否工作在最佳点的简单方法时用示波器看 OSC2 脚上的波形,必须考虑示波器接入电容 )最好的情形是看到非常干净漂亮的正弦波,没有任何波形畸变,而且要满幅,接近 VCC 和 GND,晶体的选择至少必须考虑,谐振频点,负载电容,激励功率温度特性,长期稳定性

为什么 PIC 单片机应用中,有时出现上电工作正常,而进入睡眠后唤醒不了

对于一个高可靠性的系统设计,晶体的选择非常重要,在振荡回路中,晶体既不能过激励,容易振到高次谐波上,也不能欠激励,不容易起振,尤其在设计带有睡眠唤醒(往往用低电压以求低功耗)的系统中,若还是随手拿一颗晶体就用,你的系统可能会出问题这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡在睡眠唤醒时,电路的扰动要比上电时小得多得多,起振变得很不容易
在睡眠唤醒时,电路的扰动要比上电时小得多得多,起振变得很不容易,有人评价PIC 单片机对晶体的要求怎么这么高,用 51 好象从来就没有这么麻烦,手里抓到什么就用什么,也不见有问题呀,且慢,这样比较前提并不一样,同样在睡眠时,有谁见过 51 系列不用复位而仅靠内部或外部事件唤醒吗,若你并不需要这么高级的设计技术,PIC 也大可以让你逮到什么晶体就用什么,评价振荡电路是否工作在最佳点的简单方法时用示波器看OSC2 脚上的波形(必须考虑示波器接入电容 )最好的情形是看到非常干净漂亮的正弦波没有任何波形畸变,而且要满幅,接近 VCC 和GND)晶体的选择至少必须考虑:谐振频点负载电容,激励功率,温度特性,长期稳定性

使用带A/D的PIC芯片时,怎样才能提高A/D转换的精度?

1.保证您的系统的时钟应是适合的,如果您关闭/打开A/D模块,应等待一段时间,该段时间是采样时间,如果您改变输入通道,同样也需等待这段时间,和最后的TAD,TAD为完成每位A/D转换所需的时间,TAD可以在ADCON0中,ADCS1,ADCS0中选择它应在2US-6US之间,如果TAD太小,在转换过程结束时,没有完全被转换,如果TAD太长,在全部转换结束之前,采样电容上的电压已经下降,对该时间的选择的具体细节请参照有关的数据手册或应用公式
2.通常模拟信号的输入端的电阻太高,大于10Kohms,会使采样电流下降从而影响转换精度,若输入信号不能很快的改变,建议在输入通道口用,0.1UF的电容,它将改变模拟通道的采样电压,由于电流的补给,内在的保持电容为51.2PF
3.若没有把所有的A/D通道用完,最好少用AN0端,因它的下一个脚与OSC1紧靠在一起,会对A/D对转换造成影响
4.最后在系统中,若芯片的频率较低A/D转换的时钟首选的是芯片的振荡,这将在很大范围内降低数字转换噪音的影响,同时在系统中,在A/D转换开始后,进入SLEEP状态,必须选择片内的RC振荡作为A/D转换的时钟信号,该方法将提高转换的精度

PIC16C7XX的A/D片内RC振荡器能否用于计数器

16C71A/D转换器片内RC振荡器的作用是让MCU处于睡眠时,此时主振停振,能有一个时钟源来进行A/D转换,此RC振荡器因其内部设计的限制不能被其他电路使用A/D转换器内部RC振荡器钟频典型值为250K,但会随着环境温度,工作电压,产品批号等不同而有相当的变动,定时器的时钟源可以选择内部的振荡频率,也可以是外部的脉冲输入信号,若你能选择后者,那就能方便地做到MCU的主频很高而时钟的溢出率较低,不然除了用软件来计数分频,好象也没有其它招数,另一种选择是用其它型号的MCU,其内部至少还另有一个TIMER1,因为TIMER1可以有独立的一颗晶体作为时钟振荡的基准,你可以方便地选用频率低的晶体来完成你的设计

为何使用PICSTAR-PLUS烧写16CE625-04/P有时无法把保密位烧成"保密"

使用PICSTAR-PLUS对芯片编程时,程序代码是放在计算机的RAM中,每次写程序时通过串口把数据下载到烧写器中去编程,所以可能会出错,我不怀疑你操作有问题,但是请注意的 PICSTAR-PLUS 是用于开发用途的编程器,不推荐用于规模生产,你能计算出出错概率为 1% 看来你是用它来作大规模生产了,为保证烧写可靠,推荐你使用高奇公司生产的PICKIT 编程器

PIC系列单片机I/O脚有什么特点

PIC系列单片机的任意一条I/O管脚都有很强的带负载能力,至少可提供或灌入25mA的电流,因此在某些场合,这些管脚可作为可控的电源,举个例子,在一些低功耗的设计中,希望一些周围的器件在系统待命时不耗电或尽量少耗电,此时可考虑这些器件的电源供电由一条I/O脚负责提供,在工作时,MCU在该条管脚上输出高电平,接近VDD带几个mA的负载绝对不成问题,若要进入低功耗模式,MCU就在该管脚输出低电平接近0,被控器件没有了电源,也就不会耗电,比如LCD显示电路,信号调制电路等都非常适合此类控制

PIC 单片机振荡电路中如何选择晶体

对于一个高可靠性的系统设计,晶体的选择非常重要,尤其设计带有睡眠唤醒,往往用低电压以求低功耗的系统,这是因为低供电电压使提供给晶体的激励功率减少,造成晶体起振很慢或根本就不能起振,这一现象在上电复位时并不特别明显,原因时上电时电路有足够的扰动,很容易建立振荡,在睡眠唤醒时,电路的扰动要比上电时小得多,起振变得很不容易,在振荡回路中,晶体既不能过激励,容易振到高次谐波上,也不能欠激励
不容易起振,晶体的选择至少必须考虑,谐振频点,负载电容,激励功率,温度特性长期稳定性

如何判断电路中晶振是否被过分驱动

电阻RS常用来防止晶振被过分驱动,过分驱动晶振会渐渐损耗减少晶振的接触电镀,这将引起频率的上升 可用一台示波器检测,OSC输出脚,如果检测一非常清晰的正弦波且正弦波的上限值和下限值都符合时钟输入需要,则晶振未被过分驱动,相反,如果正弦波形的波峰,波谷两端被削平,而使波形成为方形,则晶振被过分驱动,这时就需要用电阻RS来防止晶振被过分驱动 判断电阻RS值大小的最简单的方法就是串联一个5k或10k的微调电阻,从0开始慢慢调高,一直到正弦波不再被削平为止,通过此办法就可以找到最接近的电阻RS值

单片机对modem要进行哪些初始化操作?

答:一般单片机的MODEM通讯必须要有两个背景知识,一个是AT命令集,另一个是通用非同步接收发送器(UART)。
①AT命令集
下面介绍我通讯程式例子中涉及到的AT命令。
Dn:拨号命令。该命令使MODEM立即进入摘机状态,并拨出跟在后面的号码。D命令是基本的拨号命令,它受到其他命令的修饰可构成MODEM何时拨号以及如何拨号等操作。 T:音频拨号。例如,ATDT8886666,其中8886666为电话号码。 P:脉冲拨号。例如,ATDP8886666,其中8886666为电话号码。
,:标准暂停。我们常常碰到拨打外线电话时需要暂停一下,等听到二次拨号音(外线)之后才能再拨后续的号码。缺省时暂停时间为2s(秒),它由S8寄存器指定。 Sn:表示MODEM内部的寄存器。
S0:自动回应。如果要求MODEM具有自动回应特性,则应该预先将MODEM的S0寄存器设置为非0。
S8:逗号拨号修饰符的暂停时间。该寄存器决定了当MODEM在拨号中遇 到逗号(,)时应该暂停的时间。 ②通用非同步接收发送器UART
深入理解UART内部结构以及内部寄存器各位的含义,详细了解资料发送和接收的过程,有助于编写出高效、稳定的程式。一般介绍编写基本通讯程式需要知道的寄存器。实际的ADDRESS由具体接线决定。
串列传输速率除数锁存器(LSB、MSB)
在通讯之前要进行一些参数初始化,串列传输速率是首先应该考虑的一项。该寄存器是一个16位的寄存器,分为低8位(LSB)和高8位(MSB)寄存器。
另外单片机访问的是串列传输速率除数锁存器LSB/MSB。一般常用的工作频率是1。8432MHz。这个频率除以16就是串列传输速率的时钟频率,用于控制发送和接收资料的速度。 下面给出串列传输速率除数锁存器值的计算公式:
串列传输速率除数锁存器值=工作频率/(16×期望串列传输速率)=1843200/(16×期望串列传输速率)接收缓冲寄存器和发送保持寄存器(transmit and receive holding register)
读操作单片机访问接收缓冲寄存器(RHR),写操作单片机访问发送保持寄存器(THR)。 中断允许寄存器(interrupt enable register)FIFO控制寄存器(FIFO control register)
资料发送和接收模式的选择。常用的两种模式:FIFO和DMA。其中DMA又有两种模式DMA的模式0、DMA的模式1可供选择。

我使用的单片机是AT89C51,试过用弹出指令强行返回中断的方法,确实能够返回主程序,具体做法是:首先将堆栈中的地址弹出,然后压入主程序中新的地址,最后执行RETI指令就可以返回到该地址了。如果弹出指令执行完后直接用跳转指令而不通过RETI指令也能返回到主程序,但下次中断来时将不能再次响应。请问是从被嵌套的高优先级中断程序中怎样返回主程序,是不是还必须得通过最低级中断才能返回。要是直接返回的话,是否下次中断还能够正常响应?

答:对于51系列的单片机而言,当中端响应发生时,会将相应的优先级有效触发器职位;当退出中断时,执行RETI,单片机又自动将优先级有效触发器清0。因此,如果直接使用跳转指令从中断子程序出来的话,单片机没有清0优先级有效触发器,下一次中断发生时就不能响应了。
如果要从高优先级中断程序返回主程序的话,必须执行两条RETI指令,才可以清除高/低优先级有效触发器。具体的程序可以是: MOV DPTR, #LABLE1
POP ACC;将高优先级子程序返回地址出栈 POP ACC
PUSH DPL;将LABLE1地址入栈
PUSH DPHRETILABLE1:
POP ACC;将低优先级子程序返回地址出栈 POP ACC
MOV DPTR, #LABEL2
PUSH DPL;将LABLE2,即需要返回的主程序地址入栈 PUSH DPHRETI

对单片机的速度,有何要求?Holtek的单片机能符合该项应用吗?

答:目前HOLTEK的单片机速度最高为8MHz,一条指令执行时间为0.5us,以这样的速度,可以满足大多数项目的开发;不知你说的具体是什么项目。目前HOLTEK单片机主要有OTP和Mask两种,将来会推出Flash的单片机;但 HOLTEK的开发系统很完善,在开发阶段,HOLTEK还可以适当提供免费样片,相对来说,开发成本并不会比用Flash来得高。

PSoC是一种功能灵活和强大的软硬件嵌入式开发系统,能否用PSoC代替部分单片机系统呢?

答:在一般在嵌入式系统的应用中,都可能需要使用几十种甚至是更多的类比或数位周边元器件。熟悉MCU开发的工程师们都知道,在MCU的开发过程中,最需要花时间和精力的就是元器件的选购,以及元器件相容性方面的考虑。目前在市场上有成千上万不同种周边元器件,设计人员要想从中寻找到适合自己应用的元器件是一件令人头痛的事情。因此,设计工程师的理想方案似乎是采用定制的SoC晶片,但是如果采用定制微控制器、ASIC和PLD器件,一方面价格比较昂贵,另一方面需要设计人员具有专门的设计技能。因此,研制一个高效率、周边元器件可嵌入配置的、低功耗的8位微控制器是很有必要的。
PSoC(Programmable System on Chip)可编程系统晶片,是美国Cypress MicroSystems公司在最近推出的新一代功能强大的8位元可配置的嵌入式单片机。该系列单片机与传统单片机的根本区别在于其内部集成的数位和类比block模组,工程师可以根据不同设计要求调用不同的数位和类比block模组,完成晶片内部的功能设计;实现使用一块晶片就可以配置成具有多种不同周边元器件的微控制器,建立一种可配置嵌入式微控制器;用以实现从确定系统功能开始,到软/硬体划分,并完成设计的整个过程。因此,PSoC能够适应非常复杂的即时控制需求,使用它进行产品开发可以大大提高开发效率,降低系统开发的复杂性和费用,同时增强系统的要可靠性和抗干扰能力;因此,它特别适用于各种控制和自动化领域。所以PSoC的动态配置能力给开发者提供了快速方便的编程和开发方法,同时也为单片机的应用开拓了更大的空间。因此利用片内集成的闪速记忆体可以降低产品开发成本,缩短产品开发周期。因此,此MCU结构具有广阔的应用推广前景。

用一个12M的晶振,怎么能实现480MB/S的数据传输率呢?

答:在集成了PLL的12MHz的晶体振荡器即可达到480MHz,相位锁定回(环)路(Phase Locked Loop,PLL)又被称为相锁回路或锁相回路,其原理是经由闭回路自动控制系统的反馈作用,驱使另一个动作不精准、频率变动量高的作用元件的动作频率,使其能快速且一直保持稳定地与正确的频率参考源达到同相甚至是同相又同频的状态,如此即是相位锁定(Phase Locked)的状态,我们若以电路外部精准、频率变动量极低的振荡频率源作为基准参考,来驱使电路内部精准、频率变动量极低的振荡频率源,使其达成相位锁定的状态,即可用来作为通讯系统的调变/解调电路。
一般480MB/S的数据传输率是运用在USB2。0,当通用序列汇流排(UniversalSerialBus)规格于1996年1月发表时,代表业界成功研发出一套连结中低速频宽的周边元件与个人电脑之间的低成本串连管道,但是仍缺乏支援高速宽频的应用能力。于2000年4月,USB再度推出全新一代的USB 2。0版本的技术规格,可将讯号传输速度提升整整40倍,由原先 USB 1。0的最高12MHz的速度至现今USB2。0的高速480MHz,并扩增了更先进的功能,如新型的传输装置以提高频宽使用率与增加传输装置及主机控制器之间的附加功能。
针对实际上可供使用的频宽来说,资料的传输频宽速度由原先的1Mbytes/sec左右提高至50Mbytes/sec,这样一个大幅度的频宽增加主要归功于USB 2。0规格运用了微讯框(micro-frame)、可容纳更多资讯的传输封包、更频繁的传输次数、分割式传输处理(split transaction)、以及一些新的执照(token)等崭新技术。USB 2。0装置的架构同时增加了两项全新的描述元(descriptor),即装置认
可(Device Qualifier)与其他的速度配置(Speed Configuration),可用来明确标示出资料传输装置在其它运作速度下的功能表现。
针对电子规格的变动:在主机与新型的高速控制器之间的连结则重新定义,以支援现今高达480MHz的传输效能表现。新的高速拓璞新的标准采用90W的差分阻抗(differential characteristic impedance)搭配差分电流模式讯号(differentialcurrentmodesignaling),并采用相同的NZRI编码机制(NZRIencoding),但对SYNC讯号(SYNC signaling)、EOP讯号(EOP signaling)与闲置状况(idle state)等略作更改,但也必须搭配其他相关规范,以便严格控制游离电容(straycapacitance)、点对点抖动(peak to peak jitter)与上升/下落时间(rise/fall time)等,使得讯号的传输速度能够更加快速。

在单片机程序设计中遇,从被嵌套的高级中断中如何强行返回到主程序。子程序返回指令在恢复堆栈后可不可以用跳转指令替代返回到主程序中?

答:如果是51系列,那直接用POP指令就可以实现强行返回;如果是用RISC结构的单片机(HOLTEK单片机是RISC结构的),那一般都是硬件堆栈,没有PUSH和POP指令,所以子程序调用和返回指令必须成对使用。

HT48系列单片机支持串行通信吗?采用哪种通信方式较合适?HT46系列单片机串行通信的I/O口PA。67与51系列的RX/TX两PIN(P3。0/P3。1)的结构有何不同,传输效能是否一样? 能给个键盘与电脑通信的例程和常规通信协议吗?

答:HT48系列的单片机支持串行通信。可以通过软件编程,利用HT48系列单片机的I/O实现串行通信。在HOLTEK的网站上有使用HT48系列进行“I2C”或者“三线串行通信”实现串行通信的软硬件应用范例(http://www.holtek.com.cn/tech/tech.htm)。
HT46系列的串行通信口PA。6/SDA和PA。7/SCL是共用管脚,它们可以通过掩膜选择作为普通I/O全双工的输出输入接口,或者串行通信口。当作为串行口时,SDA/SCL是I2C通讯总线协议的从端,这和51系列的RX/TX使用的串行通信协议是不同的,51系列的TX/RX遵循的是RS-232串行协议。所以他们之间的传输效能是不可比的。
如果想用单片机做键盘产品的话,推荐使用HOLTEK的HT82K68E,它支持PS/2接口,或者是HT82K96E,它支持USB接口。这些芯片是HOLTEK专为键盘应用所设计的。具体的芯片资料请见 http://www.holtek.com.cn/products/mcu_11.htm

加载更多

微信扫一扫

微信扫一扫

微信扫一扫,分享到朋友圈

PIC单片机的各种中断有没有优先级之分