单片机应用编程技巧(二,共两篇)
本文作者:?千千?
53.HOLTEK的C语言是否有关于位操作和读定义的寄存器地址的指令,如果有,它们是什么?
答:HOLTEK的C语言与标准C类似,不仅有标准C的位操作、&(按位与、按位或)、^(按位异或)、~(取反)、<<(左移)和>>(右移);还有相应的内建函数实现对整型和长整型的带和不带进位C的左移和右移。对已定义变量的地址的操作也与标准C相同,可通过指针运算符 * 和 &来实现。?
54.? 在完成程序编写运行以后看到的结果是存储器中从R0到R7都被占用,而我根本就没用到几个,这是为什么?
答:要看用的是什么型号的单片机,不同型号的单片机R0到R7的定义是不同的。如果R0~R7是被定义成特殊寄存器的话,那么运行过程中自然会影响到这些寄存器,例如执行运算程序就会影响状态特殊寄存器的值。如果R0~R7是被定义成通用寄存器的话,那么可能就是在程序的开头没有初始化,单片机在上电复位时,通用寄存器的值通常是随机的。
55.? 请推荐一些比较好的理论及实践教材,以其配套的编译仿真烧录的硬软件?
答:当今单片机市场种类繁多,应用广泛。以HOLTEK公司为例。HOTLEK的单片机是RISC结构的8位单片机,它可以广泛应用在家用电器、安全系统、掌上游戏等方面。大概来说可以分成I/O型单片机、LCD型单片机、A/D型单片机、A/D with LCD型单片机等等。这些单片机的中文资料我们都公开在HOLTEK网站www.Holtek.com.cn。HOLTEK各类单片机的使用手册下载地址:;HOLTEK单片机软件/硬件应用范例下载地址:;HOLTEK单片机支持工具下载地址:。?
56.? 将PWM做到100kHz(8bit以上)的方法有哪些?{zh0}是支持C编译的。
答:要做到PWM频率100kHz(8bit)以上,单片机的频率要求100kHz*256=25。6MHz。所以,要实现这种要求的单片机需要满足两个条件:1。单片机有PWM输出;2。系统频率达到25。6MHz,或者单片机内部能自己提供25。6MHz的频率(ATtiny15内部就有提供一个25。6MHz的频率做为定时/计数器的时钟)。?
57.? ARM董事长认为,医疗电子将成为下一个10年推动电子产业增长的动力,EMS预测医疗电子将成为{zd0}的代工市场。蓝牙使医疗产品移动能力增强将会广泛应用,那么随着医疗电子发展,单片机在这一领域应用会变大吗?医疗电子应用的最多是几位单片机?
答:随着16/32位嵌入式RISC发展,是会扩大医疗电子领域的应用。
一般的电子医疗保健系列产品有如下: 笔式电子体温计、婴儿奶嘴式电子体温计、测温音乐奶瓶、妇女电子体温计,电子血压计等系列产品,在医疗电子仪器有酸碱度测定器,比色计等此类产品可用8位单片机来完成。?
但从研究制造方面来说,针对医疗电子仪器,目前已有厂商制造心电图机、酸碱度测定器、电子测温计等仪器,仪器中心可自制示波器(oscilloscope)、显微镜等,以及X光机、超声诊断仪、电脑断层成像系统、心脏起博器、监护仪、辅助诊断系统、专家系统等,较大型复制的医疗嵌入式系统电子仪器就须用上16位,32位单片机来完成。?
58.? 普通商业级单片机的使用温度范围为0-70度,在低于0度和高于70度环境中使用会出现什么问题?商业级芯片和工业及芯片除温度范围不同外,在其他方面还有区别吗?(如抗干扰性能)
答:一般单片机根据工作温度可分为民用级(商业级)、工业级和xx级三种:民用级的温度范围是0℃~70℃,工业级是-40℃~85℃,其HOLTEK的MCU就属于此项等级,xx级是-55℃~125℃。如果是一般普通商业级单片机,在超规格范围使用IC时,就有可能部份IC无法工作,或工作运作不正常等发生。?
至于抗干扰性能,是属于整个产品的EMS(电磁杂讯耐受性)检测,它是EMC(电磁相容)中的一项检测, 另一项是EMI(电磁辐射干扰)。各国都有其EMC认证标准,例如目前在欧洲EMC指令下常用的测试规范下,针对其中法规EN61000-4-2是做静电试验(ESD),本项试验目的为测试试件承受直接来自操作者及相对物件所产生之静电放电效应的程度,其法规范如下:??
l???????? Air Discharge
l???????? Leve1 2KV
l???????? Leve2 4KV
l???????? Leve3 8KV
l???????? Leve4 15KV
?以上是举个例子,就如抗静电能力,不只跟IC性能有关,也跟应用电路及PCB Layout有直接关联。?
59.? 各种各样的输入怎么样与MCU进行通讯?
答:首先必须确定此类输入信号是否与MCU系统的信号电平兼容,如果不兼容,则需要外接电路或用集成块来完成电平转换。其次就是选择通讯方式,通信的基本方式分为并行通信和串行通信,两者各有其优劣,并行通信速度快,缺点是数据有多少位,就需要多少根传输线。这在位数较多,传输距离又远时就不太适宜;而串行通信与前者相反,传输成本低,但是传送速度较低。{zh1},为了确保通信的成功,通信双方必须有一系列的约定,即通信协议,它对什么时候开始通信、什么时候结束通信、何时交换信息等问题都必须作出明确的规定。??
60.? 那种型号的51单片机具有两个串口、16KEPROM、512个字节的RAM?
答:PHILIPS半导体的P87C591应该能满足此条件,目前生产51单片机的半导体厂家有INTEL、ATMEL、PHILIPS、ANANOG DEVICES、DALLAS等,可以登陆其网站,查询相应的产品信息。?
61.? 在嵌入式开发中软件抗干扰有哪些问题?如何解决?
答:关于软件抗干扰问题和策略,如果在实际应用中能很好的遵循这些原则,再配合硬件电路的抗干扰措施,基本上可以xx干扰影响。但有时往往因为程序本身的复杂度和芯片资源的限制,再加上编程人员本身的能力限制,不能做到十分完善。所以我们只能给出一些建议,至于具体的实现,就需要各位在平时的项目实践中不断的摸索和积累经验。以下是之前有关软件抗干扰的问题答复,谨供参考:??
防止干扰xxx的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。??
一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。??
62.? 语音识别会不会是单片机下个消费热点?
答:语音识别在多年前即开始应用在低阶玩具上,如遥控车的左右前后控制,教育玩具利用发语音方式,依记忆体大少能容纳的长度经压缩编码采集后储存各字词,日后再发相同语音经单片机处理辨识后,即可作出相应动作。依成本不同,影响相关的MCU资源和速度,以及所利用的辨识技术algorithm (运算法则)的优劣,记忆体大少等,所设计出的产品其辨识率和字词长度亦有很大差异。 此低阶市场在现今芯片价格下降应有可为,就看产品创新应用是否吸引人!高阶的语音识别应用是在PC(个人计算机)上,有CPU等级的资源速度和硬盘大少的记忆容量, 但此市场和硬件(单片机)无关!??
另一个语音识别应用是嵌入式系统,如目前的手机大都配备语音辨识电话簿,其实一般的嵌入式系统如PDA,DSC,MP3……等都有能力builtin此功能,就看需占用多少硬件资源和所能作出的效果。产品的功能定位很重要,语音识别是否必需要评估实际使用率!??
63.? 如何设计实现一个共模范围在0 - 120V 之间的低成本测量电池组电压的装置?
答:这里所谓高共模输入电压,是指高范围的同相输入电压,下面先说明运放一些概念:?
运放有所谓的dynamic range是指运放(OP)未饱和时,正常动作时的输出、入电压范围。一般而言dynamic range越大,电源电压的有效利用率越高,例如处理同等级的信号时,就不需刻意提高电源电压也获得省能源效应。尤其是可携式消费性电子产品要求低电压低耗电量的场合,高效率的电源电压始终是备受重视的焦点,尤其是运放的ground电位,若是设于Vcc~VEE正负电源电压的中点(亦即动作点)时,就可获得极宽广的dynamic range。有鉴于此设计人员通常会在不减损输出dynamic range的前提下,使输入dynamic range大于输出dynamic range。?
输入信号的电位为VEE(电源电压)时,有些OP它的极性会造成反转,虽然Output允许因过大输入造成的饱和,不过大部份的情况却不允许极性反转,所以两单电源用在运放输入信号到达VEE之前输出会反转。需注意的是即使是单电源使用运放,如果超越VEE下0。5V亦即VEE-0。5V 时,输出的极性也可能会反转。?
所谓的同相输入电压范围VICM(共模输入电压)是指两个输入端子与ground之间,可施加的同相电压范围。虽然施加的同相电压超过该范围时,并不会造成元件损坏等问题,不过却会使运放的功能停止。只要差动输入电压作为增幅器时的动作正常基本上是0伏特。同相输入电压范围VICM与正负电源电压相同是属于理想状态。?
一般运放会利用差动放大器的CMR(共模信号xx比)来做相同成份的去除时,在有必要将同相范围扩大的情况,可用增益(Game)1/10的反相放大器A2 之输入Vs2讯号,另外用加法方式再加入一级也是增益(Game)1/10反相放大器A1之输入Vs1讯号,这样就可以达到同相输入范围扩大之差动放大。?
如果要设计共模范围在0 - 120V 之间,其上述反相放大器A1,可用R1=100K,Rf=10K,而反相放大器A2,也是用R1=100K, Rf=10K,并且反相放大器A1输出串一10K电阻到反相放大器A2的负端输入口即可。
64.? 在使用单片机控制LCD的时候,利用T1的溢出中断显示刷新时钟信息,在主程序循环时中为了显示浮点数,不断调用了spritf()函数,可是时钟信息不在刷新了,把这个函数屏蔽后,就恢复正常,请问调用这个函数会不会影响定时/计数器的中断?
答:这应该与程序有关,一般来说sprintf()函数,不会影响定时/计数器的中断,因为没看到具体程序,所以猜测原因可能是程序里面对定时器初始化的部分与sprintf()使用的buffer有些冲突,造成了定时器初始化的错误。
?65.? LM4915是什么IC?
答:LM4915是一款音频功率放大器,常用于带单听筒的手机、PDA和其他的便携式音频装置等低电压的应用场合,在外接极少的元器件情况下,为其提供高质量的功率输出以驱动发声装置。
?66.? 现在RISC架构的单片机应用很广,它的主要特点是什么?优越性在哪里?还有处理器中哈佛结构有什么特点?
答:在MCU开发方面,以架构而言,可分为两大主流;RISC(Reduced Instruction Set Computer)与CISC(Complex Instruction Set Computer), RISC代表MCU的所有指令都是利用一些简单的指令组成的,简单的指令代表 MCU 的线路可以尽量做到{zj0}化,而提高执行速率,相对的使得一个指令所需的时间减到最短。HOLTEK的一系列MCU便是采用 RISC 结构来设计。
?再说RISC因为指令集的精简,所以许多工作都必须组合简单的指令,而针对较复杂组合的工作便需要由『编译程式』(compiler) 来执行,而 CISC MCU因为硬体所提供的指令集较多,所以许多工作都能够以一个或是数个指令来代替,compiler 的工作因而减少许多。以一个数值运算程式来说,使用 CISC 指令集的MCU运算对于一个积分运算式可能只需要十个机器指令,而 RISC MCU在执行相同的程式时,却因为CPU 本身不提供浮点数乘法的指令,所以可能需要执行上百个机器指令 (但每一个指令可能只需要 CISC 指令十分之一的时间),而由程式语言转换成机器指令的动作是由程式语言的 Compiler 来执行,所以在 RISC MCU的Compiler 便会较复杂 。因为同样一个高阶语言 A=B*C 的运算,在 RISC MCU转换为机器指令可能有许多种组合,而每一种组合的『时间/空间』组合都不尽相同。所以 RISC 与 CISC 的取舍之间,似乎也是MCU硬体架构与软体(Compiler) 的平衡之争,应该没有{jd1}优势的一方,只能说因应不同的需求而有不同的产品,例如工作单纯的印表机核心 MCU,便适合使用效能稳定,但单位指令效率较佳的 RISC MCU。
?对单片机处理方式而言,目前单片机的系统结构有两种类型:一种是将程式和资料记忆体分开使用,即哈佛(Harvard)结构,当前的单片机大都是这种结构。另一种是采用和PC机的冯。诺依曼(Von Neumann)类似的原理,对程式和资料记忆体不作逻辑上的区分,即普林斯顿(Princeton)结构。
?67.? 在很多情况下,以单片机为主控制器的测量系统要长时间保持无故障运行,因此其自诊断就成为关键。请介绍一下有关单片机系统的故障自诊断的一些知识?
答:要保证系统可以长时间故障运行,防止干扰是很重要的。xxx的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干扰最重要的是处理好复位状态。
?一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。
?68.? MCU的功能只有在ROM中写入程序代码后才能显现出来。测试MCU时都是向ROM写入程序后并向输入管脚提供相应的测试矢量的情况进行的,然后对于OTP型MCU,只能一次编程,所以每次对封装后成品测试时,测试一个就废掉一个。据我所知,Holtek的MCU多为OTP版本单片机,Holtek是如何解决这个测试问题?
答:如果是IC生产厂商的测试人员,以HOLTEK的经验来说测试分两个步骤。一、对裸片的ROM烧入 Code测试,看IC是否能正常写入程序。如果测试通过,则使用紫外线擦去裸片的ROM Code,进行封装。二、使用外部测试电路来测试封装IC的逻辑电路。
?如果是从厂商处拿到封装片后自行测试销售,那么所能做的就只是通过测量I/O口电阻,二极管值等参数,来测量IC的逻辑电路。无法测试ROM code是否能写入正确,除非是IC的原设计者,知道如何对IC预留的Test Rom(如果有预留的话)进行测试。
?69.? 作为IC生产厂商的测试人员,是在整个Wafer上进行的,还是将Wafer切割成Die后对单个Die进行?
答:裸片烧ROM Code是使用针压机器来烧录,所以必须是整个Wafer一起烧,单个Die无法排列整齐供烧录。
?70.? “裸片烧ROM Code是使用针压机器来烧录,所以必须是整个Wafer一起烧,单个Die无法排列整齐供烧录。” 这个阶段测试仅用来测试OTP本身,还是写入有针对性的程序代码并在输入管脚施加相应测试矢量来测试整个MCU的功能是否正确?
答:在芯片还未经分割的wafer阶段,在测试时当然要把DC test, Function test……等完成。如果是OTP 型式的芯片还需把烧code工作也一并解决。切割后就处理困难了!Probe Tester其实分两部份,Probe(针压)是机械部份,有位置对准和芯片排测功能。可把芯片上各端口引出至后部的Tester,Tester基本上是个特别配套的计算机装置,经编写不同的测试程序便可测试不同的芯片。
?71.? 如何编写一个很好测试程序代码以达到较高的功能测试覆盖度?
答:应在芯片电路最初的设计及仿真阶段,就要规划好测试的方法,由于现今已经有很power的芯片设计和测试pattern工具,所以很快就能算出Test pattern coverage(测试覆盖率-电路logic的0/1toggle rate)是否合要求!至于测试MCU,应该是执行一些内建测试指令使所有电路都曾经toggle过即可,这和指令组合变化无关。
?72.? 如果封装对OTP产生了影响,导致芯片不能正常工作,而MCU的逻辑电路又是测试合格的,如何解决呢?
答:封装后,我们分三个步骤测试OTP。1、查空,看芯片内部ROM是否为空。2、写入一部分所需Code,验证是否ok。3、测试逻辑电路,一旦裸片被刮坏的话,静态电流就会变大。一旦这三个步骤测试OK,那么基本上OTP封装片就是合格的。
?73.? 在此以PIC16F87X为例:MCU处于sleep时,用WDT定时,如何使其在宽温度范围内工作定时相对一致,误差尽量小呢?
答:一般MCU处于sleep时,WDT(看门狗)是停止状态,用WDT的主要目的,是在程序运行当中,MCU受到外面杂讯干扰,导致程序运行乱掉或MCU当掉,此时就须WDT(一般WDT时钟来源是选用内部RC振荡)来自救及做复位动作,而当MCU处于sleep时,其MCU是处于省电模式状态,因主振停止所以程序不运行,此时就WDT可以停止动作(此模式WDT时钟来源是选用主晶振系统),如果MCU处于sleep时,又要WDT能继续动作,此时只有一个目的,就是用WDT的时间段来做定时工作(因程序停止运行,无法xxWDT计数器,故WDT计数一定会溢出),而在这个模式下因主振停止(因要省电)的WDT时钟来源只能选用内部RC振荡,所以RC振荡的频率会受工作温度及电压变动而产生飘移,所以要省电模式下不建议用WDT来做定时。
?如果要省电模式下做定时工作,有一个很好建议,可采用HOLTEK MCU双振荡系列,如HT49XX,HT47XX,HT48XX,HT46R6X等系列,其优点在省电模式下,其主振停止而保持第二振荡系统维持振荡,此振荡系统为RTC(Real Time Clock 32768Hz振荡系统),工作电流维持在2~3uA(工作电压3V)之间,又因是用32768晶振,不受工作温度及电压变动的影响,可准确做定时工作。? ??
?74.? 在开发一个需要长时间可靠运行的电子测量设备,有关单片机(DSP)系统的故障自诊断相关问题(包括主控制器,外围器件,如AD,RAM,ROM等)如何解决?
答:DSP是专门用在数字信号处理的晶片,与单片机相比DSP器件具有较高的集成度,而且具有更快的CPU,更大容量的记忆体,计算能力强大,运算速度快,能够满足系统的要求内置有串列传输速率发生器和FIFO缓冲器。提供高速,同步串口和标准非同步串口。有的片内集成了A/D和采样/保持电路,可提供PWM输出。DSP器件采用改进的哈佛结构,具有独立的程式和资料空间,允许同时存取程式和资料。内置高速的硬体乘法器,增强的多级流水线,使DSP器件具有高速的资料运算能力。DSP的计算能力虽然很强,但其事件管理能力较弱,而且直接支援的I/O口很少。为了方便地实现人机交互,采用DSP与单片机协同工作的方式:以单片机为主机,通过通讯介面对DSP实现控制;同时利用单片机较强的外围设备管理能力实现人机介面,显示等功能。主要工作流程是:弹簧的输入输出信号经过滤波电路进行调理后,由A/D转换器转换为数字信号,再进入DSP进行运算,得到的诊断结果通过通讯介面电路送入单片机,单片机将结果显示在液晶显示器上,并经过串口送入到其它应用介面。
?因为DSP电路完成数据采集及数字滤波,软件的设计主要包括DSP编程和单片机编程。DSP程式的主要任务是初始化, 管理DSP外围电路和完成,在故障自诊断方面,主控制器部份大都是利用内置的演算法完成故障诊断等任务,单片机程式包括键盘控制程式,液晶驱动显示程式,与DSP及其它机器通信的程式。其它部份的故障自诊断,可参考本板开头说明部份来处理等。
?75.? 在电路上有一个温控开关串联在供电回路,正常情况电阻很小,温度升高后,电阻增加。这时cpu的工作电压大概在3。1v左右,好象是工作在复位状态,液晶不断闪烁,想在软件中这样判断:如果有连续5次上电复位,且每次间隔不超过100ms,就关闭所有功能。但是这样的话,cpu会一直工作在复位状态,会不会有问题?
答:也就是说,电压会在3。1V左右波动,而CPU的{zd1}工作电压是在3。1V,所以会造成CPU一直复位。如果是这种情况,可能会造成CPU复位不正常。正常的上电复位是指电源电压从0V上升到VDD;掉电复位是指电源电压从VDD跌落到0V,后又恢复到VDD的过程;所以不管怎样,复位过程必须是电压从0V上升到VDD的过程。如果象所说的那样,电压从3。1V以上掉到3。1V以下,而又没有xx掉到0V,然后又上升,这样很容易造成CPU复位不xx而无法正常工作。
?一般的解决方法是采用低电压复位电路,可以采用三极管复位电路,或采用低电压复位IC,如HOLTEK的HT70xx系列就是很好的低电压复位IC,可以到以下网址查阅到相关的资料:?
?76.? 比如用400减50,在程序语句上如何利用SUBB实现呢?
答:MCS-51单片机的指令系统中的减法指令只有一组带借位的减法指令(SUBB),而没有不带借位的减法指令。若要进行不带借位的减法操作,则需要在减法之前先用指令对进位C清零,具体指令:CLR C ,然后再相减。在进行多字节减法时首先应进行低字节的不带进位的减法,具体做法是先 CLR C,再用SUBB,而以后的高字节相减则都需要使用带进位的减法,直接使用SUBB指令即可。
?77.? 单片机系统为了省电,经常要进入掉电(POWER DOWN)状态,此时单片机的I/O口的PIN应设置为何种状态能获得{zd1}功耗?
答:单片机I/O口可用作输入和输出状态。以HOLTEK一款最简单的I/O单片机HT48R05A-1为例,当作为输入时可设置成带上拉电阻的斯密特输入;作为输出时是CMOS输出。如果程序进入省电状态(HALT)时,首先,各个有用的I/O仍需输出一定值,以保证外部电路工作正常,同时请小心不要让外部电路保持长耗电状态(如长时间导通继电器);对于暂时不用的I/O口,为了节约功耗我们建议将I/O置为输出状态,并且输出为低。
?78.? 怎么样才能快速学会使用51系列和cygnal系列单片机?
答:建议购买一套ARM的开发学习板和仿真器(可以在网上查到适合自己的),结合教材在实践中学习ARM的基本开发方法。首先可以通过简单的程序编写熟悉ARM的指令集、体系结构、运行模式等基本原理,如果有一定的单片机知识基础,相信很快就能对此熟练掌握。接下来,因为32位ARM的应用大多会使用操作系统,所以此时可根据个人的计算机知识程度选择一个适合自己学习的嵌入式实时操作系统,多上机实作掌握嵌入式系统设计的基本方法,学习操作系统的应用程序的编程,并进一步掌握包含软硬件的基于ARM的系统应用开发。这一步需要具有高级语言的编程及操作系统知识,可能对非计算机专业的人员会有较大的难度,不过事在人为,相信只要有决心,难关总是可以被攻破的。另外,网上也有很多关于ARM开发的论坛,可以常上去下载相关的学习资料,请教高手,相互交流,相信会有所帮助。
?79.? 同样的功能实现,采用RISC和CISC内核的MCU,代码量哪个更大,即哪种需要更大的RAM以及ROM?
答:微处理随着微指令的复杂度可分为RISC及CISC这两类。下面先针对这两项做说明:
?一、复杂指令集电脑CISC(Complex Instruction Set Computer)
?CISC是一种为了便于编程和提高记忆体访问效率的晶片设计体系。早期的电脑使用组合语言编程,由于记忆体速度慢且价格昂贵,使得CISC体系得到了用武之地。在20世纪90年代中期之前,大多数的微处理器都采用CISC体系──包括Intel的80x86和Motorola的68K系列等。
?1.CISC体系的指令特征
?使用微代码。指令集可以直接在微代码记忆体(比主记忆体的速度快很多)里执行,新设计的处理器,只需增加较少的电晶体就可以执行同样的指令集,也可以很快地编写新的指令集程式。
?庞大的指令集:可以减少编程所需要的代码行数,减轻程式师的负担。高阶语言对应的指令集:包括双运算元格式、寄存器到寄存器、寄存器到记忆体以及记忆体到寄存器的指令。
?2.CISC体系的优缺点
?优点:能够有效缩短新指令的微代码设计时间,允许设计师实现CISC体系机器的向上相容。新的系统可以使用一个包含早期系统的指令超集合,也就可以使用较早电脑上使用的相同软体。另外微程式指令的格式与高阶语言相匹配,因而编译器并不一定要重新编写。
?缺点:指令集以及晶片的设计比上一代产品更复杂,不同的指令,需要不同的时钟周期来完成,执行较慢的指令,将影响整台机器的执行效率。
?二、精简指令集电脑RISC(Reduce Instruction Set Computer)
?RISC是为了提高处理器运行的速度而设计的晶片体系。它的关键技术在于流水线操作(Pipelining):在一个时钟周期里完成多条指令。而超流水线以及超标量技术已普遍在晶片设计中使用。RISC体系多用于非x86阵营高性能微处理器CPU,像HOLTEK MCU系列等。
?1.RISC体系的指令特征
?精简指令集:包含了简单、基本的指令,透过这些简单、基本的指令,就可以组合成复杂指令。
同样长度的指令:每条指令的长度都是相同的,可以在一个单独操作里完成。
单机器周期指令:大多数的指令都可以在一个机器周期里完成,并且允许处理器在同一时间内执行一系列的指令。
2.RISC体系的优缺点
?优点:在使用相同的晶片技术和相同运行时钟下,RISC系统的运行速度将是CISC的2~4倍。由于RISC处理器的指令集是精简的,它的记忆体管理单元、浮点单元等都能设计在同一块晶片上。RISC处理器比相对应的CISC处理器设计更简单,所需要的时间将变得更短,并可以比CISC处理器应用更多先进的技术, 开发更快的下一代处理器。
?缺点:多指令的操作使得程式开发者必须小心地选用合适的编译器,而且编写的代码量会变得非常大。另外就是RISC体系的处理器需要更快记忆体,这通常都集成于处理器内部,就是L1 Cache(一级缓存)。
?综合上面所述,若要再进一步比较CISC与RISC之差异,我们可以由以下几点来分析:
?1、指令的形成
CISC因指令复杂,故采微指令码控制单元的设计,而RISC的指令90%是由硬体直接完成,只有10%的指令是由软体以组合的方式完成,因此指令执行时间上RISC较短,但RISC所须ROM空间相对的比较大,至于RAM使用大小应该与程序的应用比较有关系。
?2、定址模式
CISC的需要较多的定址模式,而RISC只有少数的定址模式,因此CPU在计算记忆体有效位址时,CISC占用的汇流排周期较多。
?3、指令的执行
CISC指令的格式长短不一,执行时的周期次数也不统一,而RISC结构刚好相反,故适合采用管线处理架构的设计,进而可以达到平均一周期完成一指令的方向努力。显然的,在设计上RISC较CISC简单,同时因为CISC的执行步骤过多,闲置的单元电路等待时间增长,不利于平行处理的设计,所以就效能而言RISC较CISC还是站了上风,但RISC因指令精简化后造成应用程式码变大,需要较大的程式记忆体空间,且存在指令种类较多等等的缺点。
?80.? 如何设计出具有照像、存储、输出、视频同步。本线路可接监视器,用为监视之用;在不拍照时,图像是时实的,在拍照的时候,在监视器的图像会停在那,显示所照的相片。照下来的照片可存储起来,要查看的时候可以调用。如何才能做到? ??
答:针对数位相机一些技术层面说明:
?数位相机使用JPEG或MPEG-4影像压缩标准 ,其负责中枢的专用控制晶片组逐渐走向单晶片化,一般单晶片内含资料压缩与记忆体控制。若从整个系统的控制方式来看,影响数位相机质量的参数包含:镜头,曝光装置,观景窗,瞻前萤幕、影像储存,Gamma修正,彩色平衡与修正,储存装置与编辑软体等,主要分为两大控制部份:其一是负责I/O介面,JPEG影像处理,资料压缩与储存,其二是负责处理所有自动光学处理功能如自动光圈(Auto Iris,简称AI)、自动聚焦(Auto Focus,简称AF),自动曝光(Auto Exposure,简称AE)与白平衡(White Balance)控制,过去这两大部份的控制系使用两颗微控制器(MCU)分别处理,目前已渐由单颗MPU或DSP另加一颗微控制器组成所取代。
?经由光电转换元件CCD(或CMOS Sensor)将撷取到的物体所反射光的亮度、色彩与分布处理以后转换成数位信号,再将拍得图像存至数位相机的记忆体里。信号传递方式是类比R。G。B。信号自CCD转换成数位R。G。B。,整个过程中经信号放大、Gamma修正与白平衡修正才得以达成;数位R。G。B。资料再转换成亮度资料(Y)与两色差(Cr,Cb)。当影像资料进行压缩,压缩比若为1/4时图像资料所占的记忆容量就跟着降至1/4,例如记忆容量6Mbit的图像资料减至1。5Mbit,Y。Cr。Cb资料经再次取样重排后一个图框的数位资料记忆容量整个会降至3Mbit,其中Y占1。5Mbit, Cr、Cb两个合占1。5Mbit,整个转换过程不会影响垂直与水平的解析度,称为线的再次取样回复使用。
?再论CCD(Charged Coupled Device)中文译为「电子耦合元件」,它就像传统相机的底片一样,是感应光线的装置,可以将它想像成一颗颗微小的感应粒子,铺满在光学镜头后方,当光线与影像从镜头透过、投射到CCD表面时,CCD就会产生电流,将感应到的内容转换成数位资料储存起来。CCD画素数目越多、单一画素尺寸越大,收集到的影像就会越清晰。因此,尽管CCD数目并不是决定影像品质的{wy}重点,我们仍然可以把它当成相机等级的重要判准之一。
?播放处理系经由记忆体读出所撷取之数位信号资料,透过解压缩电路及内插法处理转成PC或TV需要之信号。曝光控制,则由CCD(或CMOS)驱动电路里的Timing Generator来负责。
?81.? Holtek和AT系列编程有何不同,现有AT系列程序如何转为Holtek?
答:从指令集来看,ATMEL的AVR系列是8位RISC型的单片机,共有118条指令,而HOLTEK是63条指令,要将AVR的汇编程序转为HOLTEK的汇编需要熟悉两者的汇编指令将AVR的程序转译成HOLTEK汇编,而不能直接在HOLTEK芯片上使用,如果程序是用C编写,则大部分应该是可以直接使用的,但数据定义以及寄存器的定义可能需要改变;另外在编程的过程还需要考虑两者硬体结构的差异对指令实现功能的影响,有时候可能会因为硬体的不同,需要对项目进行重新的规划。
?82.? Holtek和AT系列有无FLASH可电擦写的型号?
答:目前HOLTEK没有FLASH可电擦写的型号,可以使用OTP芯片的DICE或者开窗片对EPROM进行紫外线擦除,实现对芯片的多次编程。
?83.? 在一个由MCU的产品中,开发完成,批量生产时,需要测试。然而,测试员可能不能测试到软件的每一处。在写程序时,做一个专门的测试流程,在某种条件满足时(比如几个键盘的同时按下),进入测试程序。测试程序中用一些比较短的时间来工作。如何实现?
答:以HOLTEK IC生产厂商的角度来看,对于一个MCU成品,一旦它的外围器件连接OK,它的MCU芯片基本逻辑功能运行正常,此MCU成品基本上就是良品了。因为IC在出厂前,都经过了逻辑、烧写测试,所以发给客户的封装片都是合格的。客户生产时所产生的不良片,大多数是I/O遭到破坏造成的(例如ESD破坏、高电压破坏),如果IC的I/O逻辑功能运行正常就说明此IC可以运行任何程序,并不需要测试到软件的每一处才能保证MCU成品的良率。因此您的测试方法已经可以保证IC的良率了。
?84.? 有没有很好的办法来解决加密问题但是又不破坏MCU的方法?
答:单片机系统产品的加密和解密技术永远是一个矛盾的统一体,针对科研成果保护是每一个科研人员最关心的事情,目的不使自己的辛苦劳动付注东流。对其单片机加密方法一般有采用软体加密,硬体加密,软硬体综合加密,时间加密,错误引导加密,专利保护等措施。有矛就有盾,有盾就有矛,有矛、有盾,才促进矛、盾质量水平的提高。而加密只讲盾的运用,以下就简单叙述加密的方法:
?硬体加密:使他人不能读你的程式。
?高电压或镭射烧断某条引脚,使其读不到内部程式,用高电压会造成一些器件损坏,即把单片机资料汇流排的特定I/O{yj}性地破坏,解密者即使擦除了加密位,也无法读出片内程式的正确代码。此外还有破坏EA引脚的方法。
?重要 RAM 资料采用电池对RAM进行掉电资料保护。即先将一系列资料写入RAM并接上电池,然后将其余的晶片插上。这样,当单晶片微处理器系统运行后,CPU首先从RAM读出资料,这些资料可以是CPU执行程式的条件判别依据,也可以是CPU将要执行的程式。如果资料正确,整个系统正常运行。反之,系统不能运行。
汇流排乱置法。汇流排乱置法通常是将MCU和EPROM之间的资料线和位址线的顺序乱置。 软体加密:其目的是不让人读懂你的程式,不能修改程式,可以在程序重要资料区先用DES混码存放,但使用时须配合外面输入Decode码(金钥匙)来解编。或者是在无程式的空单元也加上程式机器码,{zh0}要加巧妙一点等。
?用真真假假方法加密:(1)擦除晶片标识。(2)DIP 封装改成 PLCC、TQFP、SOIC、BGA 等封装。
?85.? 在开发一个需要长时间可靠工作的控制系统(发电机系统),如何设计复位电路?
答:单片机复位可分为内部与外部事件复位。外部事件复位包括上电复位、RES复位和低电压复位。
?上电复位和RES复位是人为的正常复位,以保证程序计数器被清零且程序从头开始执行。要正常进行这两种复位动作,需要外接正确的RES复位电路,一般来说不同的单片机的复位电路稍有不同,单片机厂商都会提供标准的复位电路资料。以HOLTEK IC为例,我们提供的复位电路是RES脚接100K欧姆的电阻至VDD;RES脚再接10K电阻和0。1uF的电容至VSS。
?当电源电压受外部干扰,低于正常工作电压时,会造成程序功能运行不正常,严重的还可能造成单片机死机。此时发电机系统就会造成严重的后果,我们就需要用低电压复位来解决这个问题。通常我们可以用两个方法实现低电压复位:1、外加一个电压检测芯片(例如7033)加到RES脚上,当电源电压低于某个临界值时,电压检测芯片会给出一个低电平到RES脚是单片机复位,防止单片机死机。2、有些厂家的单片机内部会有一个低电压检测LVR的功能,例如HOLTEK单片机。当电源电压低于某一个临界值时,单片机会自动复位避免死机,外部不需要再连接任何检测电压的电路。
?除了外部电源不稳定会造成单片机复位,内部WDT溢出也会造成复位,即内部事件复位。对于需要长时间稳定工作的系统来说,看门狗是十分必要的,它可以避免程序跑飞造成的错误。
?当复位发生时,要保证复位后能与复位前的各个状态无缝的连接起来,就需要用软件来判定复位前程序执行到哪个程序段。以HOLTEK MCU为例,除了上电复位之外,通用寄存器复位前后的值不会发生变化。那么就可以设定一些寄存器记录程序当前运行在哪一个程序功能段。一旦发生复位,只需要读出那些寄存器的值就可以跳转到复位之前运行的程序功能段运行。另外HOLTE MCU内部有两个特殊标志位PD和TO,可以根据此两位的值来判定具体是什么原因造成的复位。
?86.? 从芯片封装及设计过程中增强芯片自身干扰能力的角度分析,有哪些好的抗干扰措施?封装过程中是否可以加屏蔽的技术,layout时可否采取措施?设计方面需要注意哪些问题?
答:一般在IC内部的抗干扰的处理方法,各家有各家的看家本领,例如在静电放电防护电路(ESD protection circuits)是积体电路上专门用来做静电放电防护之用,此静电放电防护电路提供了ESD电流路迳,以免ESD放电时电流流入IC内部电路而造成损伤。因ESD来自外界,所以ESD防护电路都是做在PAD的旁边。在输出PAD,其输出级中大尺寸的PMOS及NMOS元件本身便可当做ESD防护元件来用,但是其布局(layout)方式必须遵守Design Rules中有关ESD布局方面的规定。又例如传统的积体电路设计中,在电源、地的引出上通常将其安排在对称的两边。如左下角是地,右下角是电源。这使得电源杂讯穿过整个矽片。改进的技术将电源、地安排在两个相邻的引脚上,这样一方面降低了穿过整个矽片的电流,一方面使外部去耦电容在PCB设计上更容易安排,以降低系统杂讯。另一个在积体电路设计上降低杂讯的例子是驱动电路的设计。一些单片机提供若干个大电流的输出引脚,从几十毫安培到数百