pic单片机机JP3什么意思,

单片机for(;;)什么意思_百度知道
单片机for(;;)什么意思
提问者采纳
延时,for 循环的语法:for(条件初始化;条件;条件改变){
需要循环执行的语句; }可见,for的结构中,不仅提供了的“条件”的位置,同时也提供了条件初始化,和条件改变的位置。这三者虽然在同一行上,但并不是依次连接地执行。条件初始化的表达式首先被执行(并且只被执行一次);然后程序检查条件是否成立,如果成立就执行循环体中的语句,否则直接结束循环。执行完一遍循环以后,程序执行“条件改变”语句。1到100整数累加的程序,改为for循环写,是最合适的了:int sum = 0;for( i=1; i &= 100;i++){
sum +=} 程序先执行条件初始化语句:i=1;然后立即判断条件 i &= 100 吗?显示,此时该条件成立;于是程序执行循环体内的语句,此时只有一句: sum +=然后,执行改变条件因子的语句: i++; 此时,i值变为 2;程序再次判断条件 i &= 100 ?,依然成立,于是开始第二遍循环……变量 i 可以初始化条件时才临时声明:for(int i = 1;i &= 100;i++) ……for 语句的复合结构,使得程序变得简捷。比如上面的例子中,原来 while或者do...while结构中,循环体内必须两句语句,现在只需一句(即:i++这一句被移到for的特定位置上),这样,我们可以去除花括号:for(int i=0;i &= 100;i++)
sum += 100;当然,如果在其它情况下,for的循环体内仍需有多行语句时,{}仍是不可避免的。事实上,就算现在这种情况,我也建议大家使用花括号。这样可以让程序的结构看上去更清晰。在本例中,如果非要讲究简捷,我们还可以将循环体内的那惟一的一行移到“条件改变”的位置:for(int i=1; i&=100;sum += i,i++);sum += i和i++之间用逗号分开。而在for后面的()行末,则直接跟上分号,表示for不必再执行其它的语句。考虑到后置++的特性(在完成表达式的求值后,才进行加1操作),也可以将sum += i和i++合为一句:for(int i=1;i&=100;sum += i++);以上讲了for语句极尽合并之技巧,以求一个简捷。反过来,for语句也可以向 while或do...while语句一样拆开写:int i = 1;for(; i &= 100;){
i++;}看,条件初始化语句被移出for的结构,而条件改变语句则被当成一行普通语句,直接加入到循环体内。而在相应的位置上,只留下分号,用于表示空语句(请注意这一行中有2个分号,分别在 i&=100前后):for (; i &= 100;)如上行所示,for循环结构中的“条件初始”和“条件的改变”表达式都被省略,在这种情况下for和while或do...while循环完全一样。比如求1~100累加和: int i=1,sum=0; for(;i&=100;){
i++;} int i=1,sum=0; while(i&=100){
i++;}下面分析几个实例:(用于分析的实例不提供上机的完整代码,请同学们自行创建空白工程,然后加入需要代码,确保每个实例都可运行,这是初学者逐步熟练的必经之路……信不信由你。打开CB吧)。题一:用for循环在屏幕上逐行输出数字:1~200。分析:这需要一个变量,其值从1变到200,并且每变一次新值,就用 cout 语句在屏幕上输出其值。答案:for(int i=1;i&=200;i++)
cout && i &&由于循环中执行的动作只有一句,所以我们省略了{}。题二:6能被1、2、3、6整除,这些数称为6的因子,请循环列出36的所有因子。分析:因子?忘了吗?求36的因子,就是求1~36中哪些整数可以整除36。我们学过 % 操作符,它用于求两数相除的余数。所以整除不整除,只要看余数是否为0即可。答案:for(int i=1;i&=36;i++){
if(36 % i == 0)
//余数为0,说明整除
cout && i && & &; //多输出一个空格,用于做两数之间的间隔}如果运行程序,得到结果应是:1 2 3 4 6 9 12 18 36
其他类似问题
单片机的相关知识
其他4条回答
就是while(1)一直循环
void main(){
//初始化等操作
}}for(;;)是构成一个死循环,让程序一直在里面执行。如果没有的话单片机main函数执行完后又会从主函数开始执行,比如初始化会再一次处理,相当于执行一次程序就会复位一次。
死循环的意思,for代码块里的内容一直运行相当于while(1)
循环等待,一般是配合中断使用,等待中断
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机破解_百度百科
特色百科用户权威合作手机百科
收藏 查看&单片机破解本词条缺少名片图,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有定位或者加密字节,以保护片内程序。如果在时定位被使能(锁定),就无法用普通直接读取单片机内的程序,这就叫单片机加密。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫单片机破解。外文名MCU别&&&&名分&&&&类破解的一般过程
单片机破解又叫,,IC解密,但是这严格说来这几种称呼都不科学,但已经成了习惯叫法,我们把CPLD解密,DSP解密都习惯称为单片机破解。单片机只是能装载程序芯片的其中一个类。能程序并能加密的芯片还有DSP,CPLD,PLD,AVR,ARM等。也有专门设计有用于专业加密的芯片或厂家代码工作等,该类芯片业能实现防止电子产品复制的目的。该技术通常使用处理器并利用协议、或这些算法中的来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除定位后,停止下一步擦除片内数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用读出片内程序。
目前在其他加密方法的基础上,可以研究出一些设备,配合一定的软件,来做软件攻击。
近期国内出现了了一种51单片机破解设备(成都一位高手搞出来的),这种解密器主要针对SyncMos. Winbond,在生产工艺上的漏洞,利用某些定位插字节,通过一定的方法查找芯片中是否有连续空位,也就是说查找芯片中连续的FF FF字节,插入的字节能够执行把片内的程序送到片外的指令,然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了。该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。
目前RF可以直接读出老的型号的加密MCU中的程序,就是采用这个原理。该技术使用异常工作条件来使处理器出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止保护电路工作或强制处理器执行错误操作。时钟瞬态跳变也许会复位保护电路而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些处理器中影响单条指令的解码和执行。该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。
为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的单片机不会被物理损坏。在某些场合非侵入型攻击是特别危险的,这是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。
大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。因此,对单片机的攻击往往从侵入型的反向工程开始,积累的经验有助于开发更加廉价和快速的非侵入型攻击技术。侵入型攻击的第一步是揭去芯片封装(简称“开盖”有时候称“开封”,英文为“DECAP”,decapsulation)。有两种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金属连线。第二种是只移掉硅核上面的塑料封装。第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便,完全家庭中操作。
芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接 (这就可能造成解密失败)。
接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,并浸泡。
最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸片覆盖芯片以保护不被紫外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的就可直接读出的内容。
对于使用了防护层来保护EEPROM单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微技术来读取内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从连到电路其它部分的。由于某种原因,芯片锁定位在编程模式下并不锁定对的访问。利用这一缺陷将放在数据线的上面就能读到所有想要的数据。在编程模式下,重启读过程并连接到另外的数据线上就可以读出程序和数据中的所有信息。
还有一种可能的攻击手段是借助显微镜和激光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它电路的某一根信号线(或切割掉整个加密电路)或连接1~3根金线(通常称FIB:focused ion beam),就能禁止整个保护功能,这样,使用简单的就能直接读出程序存储器的内容。
虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。
目前国内比较有名的单片机破解公司有沪生电子,余洋电子,星辰单片机,恒丰单片机和龙人科技等。任何一款单片机从理论上讲,攻击者均可利用足够的投资和时间使用以上方法来攻破。这是系统设计者应该始终牢记的基本原则。因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。我们根据沪生电子的解密实践提出下面建议:
(1)在选定前,要充分调研,了解单片机破解技术的新进展,包括哪些单片机是已经确认可以破解的。尽量不选用已可破解或同系列、同型号的芯片选择采用新工艺、新结构、上市时间较短的单片机,如可以使用ATMEGA88/ATMEGA88V,这种国内目前破解的费用一需要6K左右,另外目前相对难解密的有ST12系列,DSPPIC等;其他也可以和CPLD结合加密,这样解密费用很高,解密一般的CPLD也要1万左右。
(2)尽量不要选用MCS51系列单片机,因为该单片机在国内的普及程度最高,被研究得也最透。
(3)产品的原创者,一般具有产量大的特点,所以可选用比较生僻、偏冷门的单片机来加大仿冒者采购的难度,选用一些生僻的单片机,比如ATTINY2313,AT89C51RD2,AT89C51RC2,motorola单片机等比较难解密的芯片,目前国内会开发使用熟悉motorola单片机的人很少,所以破解的费用也相当高,从3000~3万左右。
(4)在设计成本许可的条件下,应选用具有硬件自毁功能的智能卡芯片,以有效对付物理攻击;另外程序设计的时候,加入时间到计时功能,比如使用到1年,自动停止所有功能的运行,这样会增加破解者的成本。
(5)如果条件许可,可采用两片不同型号单片机互为备份,相互验证,从而增加破解成本。
(6)打磨掉芯片型号等信息或者重新印上其它的型号,以假乱真(注意,反面有LOGO的也要抹掉,很多芯片,解密者可以从反面判断出型号,比如51,WINBOND,MDT等)。
(7)可以利用单片机未公开,未被利用的标志位或单元,作为软件标志位。
(8)利用MCS-51中A5指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令,A5功能是二字节空操作指令加密方法在A5后加一个二字节或三字节,因为所有反汇编软件都不会反汇编A5指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序。
(9)你应在程序区写上你的大名单位开发时间及仿制必究的说法,以备获得法律保护;另外写上你的大名的时候,可以是随机的,也就是说,采用某种算法,外部不同条件下,你的名字不同,比如wwwhusooncom1011、wwwhusooncn1012等,这样比较难反汇编修改。
(10)采用高档的,烧断内部的部分管脚,还可以采用自制的设备烧断金线,这个目前国内几乎不能解密,即使解密,也需要上万的费用,需要多个母片。
(11)采用保密硅胶(环氧树脂灌封胶)封住整个电路板,PCB上多一些没有用途的焊盘,在硅胶中还可以掺杂一些没有用途的元件,同时把MCU周围电路的电子元件尽量抹掉型号。
(12)对SyncMos,Winbond单片机,将把要的文件转成HEX文件,这样烧录到芯片内部的程序空位自动添00,如果你习惯BIN文件,也可以用把空白区域中的FF改成00,这样一般解密器也就找不到芯片中的空位,也就无法执行以后的解密操作。
当然,要想从根本上防止单片机被解密,那是不可能的,加密技术不断发展,也不断发展,现在不管哪个单片机,只要有人肯出钱去做,基本都可以做出来,只不过代价高低和周期长短的问题,者还可以从法律的途径对自己的开发作出保护(比如专利)。
新手上路我有疑问投诉建议参考资料 查看51单片机什么意思FOR_百度知道
51单片机什么意思FOR
for(i=0;i&4;i++)
提问者采纳
一个循环语句,
I=0是初值,I&4是结束条件,I++,就是I+1的意思,每次循环执行一次
留个QQ可以吗
他i++是自动不断+1是吗
其他类似问题
51单片机的相关知识
按默认排序
其他2条回答
和C语言中for语句一样,楼主不会没学过C吧
您可能关注的推广回答者:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁单片机原理_百度百科
特色百科用户权威合作手机百科
收藏 查看&单片机原理本词条缺少信息栏,补充相关内容使词条更完整,还能快速升级,赶紧来吧!
它是一种在线式实时控制,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机(比如家用PC)的主要区别。
单片机到底是什么呢?就是一个电脑,只不过是微型的,:它内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。排烟罩VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。
单片机是靠程序工作的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于单片机对成本是敏感的,所以目前占统治地位的还是最低级(近几年,C语言也开始广泛被应用),它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。 单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和拿到家用PC上来运行,家用PC也是承受不了的。
目前最常用的单片机为MCS-51,是由美国INTEL公司(生产CPU的英特尔)生产的,89C51是这几年在我国非常流行的单片机,它是由美国开发生产的,其内核兼容MCS-51单片机。
单片微型计算机简称单片机,是典型的嵌入式(Microcontroller Unit),
单片机芯片
常用英文字母的缩写MCU表示单片机,单片机又称,它不是完成某一个逻辑功能的,而是把一个到一个芯片上。单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,只缺少了I/O设备。概括的讲:一块就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用是了解计算机原理与结构的最佳选择。它最早是被用在工业控制领域。
由于在工业控制领域的广泛应用,单片机由内仅有CPU的专用发展而来。最早的设计理念是通过将大量外围设备和集成在一个中,使更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的8080是最早按照这种思想设计出的,当时的都是8位或4位的。其中最成功的是的8031,此后在8031上发展出了系列系统。因为简单可靠而性能不错获得了很大的好评。尽管2000年以后ARM已经发展出了32位的超过300M的高端,直到目前基于8031的还在广泛的使用。在很多方面单片机比专用更适合应用于,因此它得到了广泛的应用。事实上是世界上数量最多,随着单片机家族的发展壮大,单片机和专用处理器的发展便分道扬镳。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有。手机、、、家用电器、电子玩具、以及鼠标等电脑配件中都配有1-2部。 汽车上一般配备40多部,复杂的上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
单片机是指芯片本身,而单片机系统是为实现某一个控制应用需要由用户设计的,是一个围绕单片机芯片而组建的计算机应用系统,这是单片机应用系统。单片机开发系统是指单片机开发调试的工具。单片机自问世以来,性能不断提高和完善,其资源又能满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、价格低廉等特点,正在逐步取代现有的多片微机应用系统。单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行。作为计算机发展的一个重要分支领域,根据目前发展情况,从不同角度单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。这是按单片机适用范围来区分的。例如,80C51是通用型单片机,它不是为某种专用途设计的;专用型单片机是针对一类产品甚至某一个产品设计生产的,例如为了满足电子体温计的要求,在片内集成ADC接口等功能的温度测量控制。这是按单片机是否提供来区分的。总线型单片机单片机普遍设置有并行地址总线、 数据总线、控制总线,这些用以扩展并行外围器件都可通过与单片机连接,另外,许多单片机已把所需要的外围器件及集成一片内,因此在许多情况下可以不要并行,大大减省封装成本和体积,这类单片机称为非总线型单片机。这是按照单片机大致应用的领域进行区分的。一般而言,工控型寻址范围大,运算能力强;用于家电的单片机多为专用型,通常是小封装、低价格,外围器件和集成度高。 显然,上述分类并不是惟一的和严格的。例如,80C51类单片机既是通用型又是总线型,还可以作工控用。诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统。基于这一系统的系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位,但因为性价比不理想并未得到很广泛的应用。90年代后随着大发展,技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位Soc单片机已经超过300MHz,性能直追90年代中期的专用,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。
当代系统已经不再只在环境下开发和使用,大量专用的被广泛应用在全系列的单片机上。而在作为和手机核心处理的高端甚至可以直接使用专用的Windows和。早期阶段
SCM即(Single Chip Microcomputer)阶段,主要是寻求最佳的单片形态的最佳。“创新模式”获得成功,奠定了SCM与完全不同的发展道路。在开创独立发展道路上,Intel公司功不可没。
MCU即(Micro Controller Unit)阶段,主要的技术发展方向是:不断扩展满足嵌入式应用时,对象系统要求的各种外围与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、厂家。从这一角度来看,Intel逐渐淡出MCU的发展也有其客观因素。在发展MCU方面,最著名的厂家当数Philips公司。
Philips公司以其在应用方面的巨大优势,将MCS-51从单片微型计算机迅速发展到。因此,当我们回顾发展道路时,不要忘记Intel和Philips的历史功绩。
SoC(System on Chip)式的独立发展之路,向MCU阶段发展的重要因素,就是寻求应用系统在上的最大化解决,因此,专用的发展自然形成了SoC化趋势。随着、IC设计、EDA工具的发展,基于SoC的应用系统设计会有较大的发展。因此,对的理解可以从单片微型计算机、延伸到单片应用系统。1971年研制出世界上第一个4位的微;Intel公司的研制成功世界上第一块4位微处理器Intel 4004,标志着第一代微处理器问世,微处理器和时代从此开始。因发明微,被《经济学家》杂志列为“二战以来最有影响力的7位科学家”之一。
1971年11月,Intel推出MCS-4(包括4001 ROM、4002 RAM芯片、4003芯片和4004微)其中4004(下图)包含2300个,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。
1972年4月,等人开发出第一个8位微Intel 8008。由于8008采用的是P沟道MOS微,因此仍属第一代微处理器。
1973年公司研制出8位的微年8月,等人研制出8位微处理器Intel 8080,以N沟道取代了P沟道,第二代微处理器就此诞生。
2MHz的8080运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(Million Instructions Per Second )。
1975年4月,MITS发布第一个通用型Altair 8800,售价375美元,带有1KB存储器。这是世界上第一台微型计算机。
1976年公司研制出MCS-48系列8位的,这也是单片机的问世。
Zilog公司于1976年开发的Z80微,广泛用于和工业自动控制设备。当时,Zilog、Motorola和Intel在微领域三足鼎立。
20世纪80年代初,Intel公司在MCS-48系列的基础上,推出了MCS-51系列8位高档单片机。MCS-51系列无论是片内RAM,I/O口功能,系统扩展方面都有了很大的提高。1、主流包括CPU、4KB的ROM、128 B容量的RAM、 2个16位定时/、4个8位、全双工串口行口、ADC/DAC、SPI、I2C、ISP、IAP。
2、系统结构简单,使用方便,实现模块化;
3、可靠性高,可工作到10^6 ~10^7小时无故障;
4、处理功能强,速度快。
5、低电压,低功耗,便于生产便携式产品
6、控制功能强
7、环境适应能力强。1.运算器
运算器由运算部件——算术逻辑单元(Arithmetic & Logical Unit,简称ALU)、累加器和寄存器等几部分组成。ALU的作用是把传来的数据进行算术或逻辑运算,输入来源为两个8位数据,分别来自累加器和数据寄存器。ALU能完成对这两个数据进行加、减、与、或、比较大小等操作,最后将结果存入累加器。例如,两个数6和7相加,在相加之前,操作数6放在累加器中,7放在数据寄存器中,当执行加法指令时,ALU即把两个数相加并把结果13存入累加器,取代累加器原来的内容6。
运算器有两个功能:
(1) 执行各种算术运算。
(2) 执行各种逻辑运算,并进行逻辑测试,如零值测试或两个值的比较。
运算器所执行全部操作都是由控制器发出的控制信号来指挥的,并且,一个算术操作产生一个运算结果,一个逻辑操作产生一个判决。
控制器由程序计数器、指令寄存器、指令译码器、时序发生器和操作控制器等组成,是发布命令的“决策机构”,即协调和指挥整个微机系统的操作。其主要功能有:
(1) 从内存中取出一条指令,并指出下一条指令在内存中的位置。
(2) 对指令进行译码和测试,并产生相应的操作控制信号,以便于执行规定的动作。
(3) 指挥并控制CPU、内存和输入输出设备之间数据流动的方向。
微处理器内通过内部总线把ALU、计数器、寄存器和控制部分互联,并通过外部总线与外部的存储器、输入输出接口电路联接。外部总线又称为系统总线,分为数据总线DB、地址总线AB和控制总线CB。通过输入输出接口电路,实现与各种外围设备连接。
3.主要寄存器
(1)累加器A
图1-2 单片机组成框图
累加器A是微处理器中使用最频繁的寄存器。在算术和逻辑运算时它有双功能:运算前,用于保存一个操作数;运算后,用于保存所得的和、差或逻辑运算结果。
(2)数据寄存器DR
数据寄存器通过数据总线向存储器和输入/输出设备送(写)或取(读)数据的暂存单元。它可以保存一条正在译码的指令,也可以保存正在送往存储器中存储的一个数据字节等等。
(3)指令寄存器IR和指令译码器ID
指令包括操作码和操作数。
指令寄存器是用来保存当前正在执行的一条指令。当执行一条指令时,先把它从内存中取到数据寄存器中,然后再传送到指令寄存器。当系统执行给定的指令时,必须对操作码进行译码,以确定所要求的操作,指令译码器就是负责这项工作的。其中,指令寄存器中操作码字段的输出就是指令译码器的输入。
(4)程序计数器PC
PC用于确定下一条指令的地址,以保证程序能够连续地执行下去,因此通常又被称为指令地址计数器。在程序开始执行前必须将程序的第一条指令的内存单元地址(即程序的首地址)送入PC,使它总是指向下一条要执行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存当前CPU所要访问的内存单元或I/O设备的地址。由于内存与CPU之间存在着速度上的差异,所以必须使用地址寄存器来保持地址信息,直到内存读/写操作完成为止。
显然,当CPU向存储器存数据、CPU从内存取数据和CPU从内存读出指令时,都要用到地址寄存器和数据寄存器。同样,如果把外围设备的地址作为内存地址单元来看的话,那么当CPU和外围设备交换信息时,也需要用到地址寄存器和数据寄存器。目前渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能,民用豪华轿车的安全保障系统,、、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的,可实现诸如电压、电流、、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或更加强大。
例如精密的测量设备(电压表、,,各种分析仪)。单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种,与计算机联网构成二级控制系统等。现在的家用电器广泛采用了控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他视频器材、再到量设备和等。现代的普遍具备,可以很方便地与计算机进行数据通信,为在计算机网络和间的应用提供了极好的物质条件,从手机,电话机、小型、楼宇自动通信呼叫系统、列车、再到日常工作中随处可见的移动电话,集群移动通信,对讲机等。在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。某些专用设计用于实现特定功能,从而在各种中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成,看似简单的功能,微缩在纯电子中(有别于的原理),就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于ROM),由读出,转化为模拟音乐电信号(类似于声卡)。
在大型中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能、GPS导航系统、、制动系统、胎压检测等。
此外,在工商、金融、科研、教育、电力、通信、物流和国防航空航天等领域都有着十分广泛的用途。基础理论知识包括、数字电路和C语言知识。和数字电路属于抽象学科,要把它学好还得费点精神。在你学习之前,觉得和数字电路基础不好的话,不要急着学习单片机,应该先回顾所学过的模拟电路和数字电路知识,为学习单片机加强基础。否则,你的学习之路不仅会很艰难和漫长,还可能半途而废。笔者始终认为,扎实的电子技术基础是学好的关键,直接影响单片机学习入门的快慢。有些同学觉得很难,越学越复杂,最后学不下去了。有的同学看书时似乎明白了,可是动起手来却一塌糊涂,究其原因就是电子技术基础没有打好,首先被表面知识给困惑了。
单片机属于,其概念、术语、硬件结构和原理都源自数字电路,如果数字电路基础扎实,对复杂的单片机硬件结构和原理就能容易理解,就能轻松地迈开学习的第一步,自信心也会树立起来。相反,基础不好,这个看不懂那个也弄不明白,越学问题越多,越学越没有信心。如果你觉得很难,那就应该先放下单片机教材,去重温数字,搞清楚、寄存器、门电路、COMS电路、时序逻辑和、进制转换等理论知识。理解了这些知识之后再去看看的结构和原理,我想你会大彻大悟,信心倍增。
是电子技术最基础的学科,她让你知道什么是电阻、、电感、、、、放大器等等以及它们的工作原理和在电路中的作用,这是学习电子技术必须掌握的基础知识。一般是先学习再去学习数字电路。扎实的基础不仅让你容易看懂别人设计的电路,而且让你的设计的电路更可靠,提高产品质量。
的学习离不开编程,在所有的程序设计中C语言运用的最为广泛。C语言知识并不难,没有任何编程基础的人都可以学,在我看来,初中生、高中生、中专生、大学生都能学会。当然,数学基础好、逻辑思维好的人学起来相对轻松一些。C语言需要掌握的知识就那么3个条件判断语句、3个、3个跳转语句和1个开关语句。别小看这10个语句,用他们组合形成的逻辑要多复杂有多复杂。学习时要一条语句一条语句的学,学一条活用一条,全部学过用过这些关键语句后,相信你的C基础建立了。
当基础打好以后,你会感觉到不再难学了,而且越学越起劲。当乖乖的依照你的逻辑思维和算法去执行指令,实现预期控制效果的时候,成就感会让你信心十足、夜以续日、废寝忘食的投入到单片机的世界里。可以这么说,扎实的电子技术基础和C语言基础能增强学习信心,较快掌握单片机技术。这是真正学习的过程,既让人兴奋又让人疲惫,既让人无奈又让人不服,既让人孤独又让人充实,既让人气愤又让人欣慰,既有失落感又有成就感。其中的酸甜苦辣只有学过的人深有体会。思想上要有刻苦学习的决心,硬件上要有一套完整的学习开发工具,软件上要注重理论和实践相结合。
1.有刻苦学习的决心
首先,明确学习目的。先认真回答两个问题:我学来做什么?需要多长时间把它学会?这是你学的动力。没有动力,我想你坚持不了多久。其次,端正学习心态。学习过程是枯燥乏味、孤独寂寞的过程。要知道,学习知识没有捷径,只有循序渐进,脚踏实地,一步一个脚印,才能学到真功夫。再次,要多动脑勤动手。的学习具有很强的实践性,是一门很注重实际动手操作的技术学科。不动手实践你是学不会的。最后,虚心交流。在学习过程中每个人都会遇到无数不能解决的问题,需要你向有经验的过来人虚心求教,否则,一味的自己埋头摸索会走许多弯路,浪费很多时间。
2.有一套完整的学习开发工具
学习是需要成本的。必须有一台电脑、一块(如果开发板不能直接下载程序代码的话还得需要一个器)、一套视频教程、一本单片机教材和一本C语言教材。电脑是用来编写和,并将程序代码下载到单片机上;用来运行单片机程序,验证实际效果;视频教程就是手把手教你单片机开发环境的使用、单片机编程和调试。对于初学者来说,视频教程必须看,要不然,哪怕把教材看了几遍,还是不知道如何下手,尤其是院校里的单片机教材,学了之后,面对真正的单片机时可能还是束手无策;单片机教材和C语言教材是理论学习资料,备忘备查。不要为了节约成本不用而光用Protur软件仿真调试,这和纸上谈兵没什么区别。
3. 要注重理论和实践相结合
C语言编程理论知识并不深奥,光看书不动手也能明白。但在实际的时候就没那么简单了。一个程序的形成不仅需要有C语言知识,更多需要融入你个人的思路和算法。编程思路和算法决定一个程序的优劣,是编程的大问题,只有在实际动手编写的时候才会有深切的感悟。一个程序能否按照你的意愿正常运行就要看你的思路和算法是否正确、合理。如果程序不正常则要反复调试(检查、修改思路和算法),直到成功。这个过程耗时、费脑、疲精神,意志不坚强者往往被绊倒在这里半途而废。
学习编写程序应该按照以下过程学习,效果会更好。看到例程题目先试着构思自己的编程思路,然后再看教材或视频教程里的代码,研究人家的编程思路,注意与自己思路的差异;接下来就照搬人家的思路亲自动手编写这个程序,领会其中每一条语句的作用;对有疑问的地方试着按照自己的思路修改程序,比较程序运行效果,领会其中的奥妙。每一个例程都坚持按照这个过程学习,你很快会找到编程的感觉,取其精华去其糟粕,久而久之会形成你独特的编程思想。当然,刚开始,看别人的程序源代码就像看天书一样,只要硬着头皮看,看到不懂的关键字和语句就翻书查阅、对照。只要能坚持下来,学习收获会事半功倍。在实践过程中不仅要学会别人的例程,还要在别人的程序上改进和拓展,让程序产生更强大的功能。同时,还要懂得通过查阅数据手册(DATASHEET)里有关芯片命令和数据的来核对别人例程的可靠性,如果你觉得例程不可靠就把它修改过来,成为是你自己的程序。不仅如此,自己应该经常找些项目来做,以巩固所学的知识和积累更多的经验。当编写自己的程序信手拈来、阅读别人的程序能够发现问题的时候,说明你的水平相当不错了。接下来就应该研究硬件了。硬件设计包括原理设计和PCB板设计。学习做硬件要比学习做软件麻烦,成本更高,周期更长。但是,学习的最终目的是做产品开发----软件和硬件相结合形成完整的控制系统。所以,做硬件也是学习技术的一个必学内容。
原理设计涉及到各种的应用,而这些芯片外围电路的设计、典型应用电路和与的连接等在芯片数据手册(DATASHEET)都能找到答案,前提是要看得懂全英文的数据手册。否则,照搬别人的设计永远落在别人的后面,你做的产品就没有创意。电子技术领域的第一手资料(DATASHEET)都是英文,从第一手资料里你所获得的知识可能是在教科书、网络文档和课外读物等所没有的知识。虽然有些资料也都是在DATASHEET的基础上撰写的,但内容不全面,甚至存在翻译上的遗漏和错误。当然,阅读DATASHEET需要具备一定的英文阅读能力,这也是阻碍学习者晋级的绊脚石。良好的英文阅读能力能让你在技术知识的海洋里自由遨游。
做PCB板就比较简单了。只要懂得使用Protel软件或 AltimDesigner软件就没问题了。但要想做的板子布局美观、布线合理还得费一番功夫了。
娴熟的C语言编程、会使用Protel软件或 AltimDesigner软件设计PCB板和具备一定的英文阅读能力,你就是一个遇强则强的单片机高手了。在提高抗干扰能力的同时,软件抗干扰以其设计灵活、节省硬件资源、可靠性好越来越受到重视。下面以MCS-51系统为例,对微机抗干扰方法进行研究。在工程实践中,软件抗干扰研究的内容主要是:一、消除模拟输入信号的噪声(如);二、程序运行混乱时使程序重入正轨的方法。本文针对后者提出了几种有效的软件抗干扰方法。
CPU取指令过程是先取,再取。当PC受干扰出现错误,程序便脱离正常轨道“乱飞”,当乱飞到某双字节指令,若取指令时刻落在上,误将操作数当做,程序将出错。若“飞” 到了三字节指令,出错机率更大。
在关键地方人为插入一些单字节指令,或将有效单字节指令重写称为指令冗余。通常是在双字节指令和三字节指令后插入两个字节以上的NOP。这样即使乱飞程序飞到上,由于空操作指令NOP的存在,避免了后面的指令被当作操作数执行,程序自动纳入正轨。
此外,对系统流向起重要作用的指令如RET、 RETI、LCALL、LJMP、JC等指令之前插入两条NOP,也可将乱飞程序纳入正轨,确保这些重要指令的执行。
所谓拦截,是指将乱飞的程序引向指定位置,再进行出错处理。通常用软件陷阱来拦截乱飞的程序。因此先要合理设计陷阱,其次要将陷阱安排在适当的位置。
(1 )的设计
当乱飞程序进入非程序区,冗余指令便无法起作用。通过,拦截乱飞程序,将其引向指定位置,再进行出错处理。是指用来将捕获的乱飞程序引向复位入口地址0000H的指令。通常在EPROM中非程序区填入以下指令作为:
(2 ) 陷阱的安排
最后一条应填入020000,当乱飞程序落到此区,即可自动入轨。在区各模块之间的空余单元也可填入。当使用的中断因干扰而开放时,在对应的中设置,能及时捕获错误的中断。如某应用系统虽未用到外部中断1,外部中断1的中断服务程序可为如下形式:
NOPNOPRETI返回指令可用“RETI”,也可用“LJMP 0000H”。如果故障诊断程序与系统自恢复程序的设计可靠、 完善,用“LJMP 0000H”作返回指令可直接进入故障诊断程序,尽早地处理故障并恢复程序的运行。
考虑到程序的容量,一般1K空间有2-3个就可以进行有效拦截。
软件“”技术
若失控的程序进入“死循环”,通常采用“”技术使程序脱离“死循环”。通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。
“”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏控制字,关闭中断。则系统无法定时“”,硬件失效。而软件可有效地解决这类问题。
笔者在实际应用中,采用环形中断监视系统。用定时器T0监视定时器T1,用定时器T1监视主程序,主程序监视定时器T0。采用这种环形结构的软件“”具有良好的抗干扰性能,大大提高了系统可靠性。对于需经常使用T1定时器进行的测控系统,则定时器T1不能进行中断,可改由串口中断进行监控(如果用的是MCS-52系列,也可用T2代替T1进行监视)。这种软件“”监视原理是:在主程序、T0、T1中断服务程序中各设一运行观测变量,假设为MWatch、T0Watch 、T1Watch,主程序每循环一次,MWatch加1,同样T0、T1中断服务程序执行一次,T0Watch、 T1Watch加1。在T0中断服务程序中通过检测T1Watch的变化情况判定T1运行是否正常,在T1中断服务程序中检测MWatch的变化情况判定主程序是否正常运行,在主程序中通过检测T0Watch的变化情况判别T0是否正常工作。若检测到某观测变量变化不正常,比如应当加1而未加1,则转到出错处理程序作排除故障处理。当然,对主程序最大循环周期、定时器T0和T1定时周期应予以全盘合理考虑。限于篇幅不赘述。系统因干扰复位或掉电后复位均属非正常复位,应进行故障诊断并能自动恢复非正常复位前的状态。
非正常复位的识别
程序的执行总是从0000H开始,导致程序从 0000H开始执行有四种可能:一、系统开机上电复位;二、软件故障复位;三、超时未硬件复位; 四、任务正在执行中掉电后来电复位。四种情况中除第一种情况外均属非正常复位,需加以识别。
(1 )硬件复位与软件复位的识别
此处硬件复位指开机复位与复位,硬件复位对寄存器有影响,如复位后PC=0000H, SP=07H,PSW=00H等。而软件复位则对SP、无影响。故对于微机测控系统,当程序正常运行时,将SP设置地址大于07H,或者将PSW的第5位用户标志位在系统正常运行时设为1。那么系统复位时只需检测PSW.5标志位或SP值便可判此是否硬件复位。
由于硬件复位时片内RAM状态是随机的,而软件复位片内RAM则可保持复位前状态,因此可选取片内某一个或两个单元作为上电标志。设40H用来做上电标志,上电标志字为78H,若系统复位后40H单元内容不等于78H,则认为是硬件复位,否则认为是软件复位,转向出错处理。若用两个单元作上电标志,则这种判别方法的可靠性更高。
(2 )开机复位与故障复位的识别
开机复位与故障复位因同属硬件复位, 所以要想予以正确识别,一般要借助非易失性RAM或者EEROM。当系统正常运行时,设置一可掉电保护的观测单元。当系统正常运行时,在定时的中使该观测单元保持正常值(设为 AAH),而在主程中将该单元清零,因观测单元掉电可保护,则开机时通过检测该单元是否为正常值可判断是否复位。
(3 )正常开机复位与非正常开机复位的识别
识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位,对于过程控制系统尤为重要。如某以时间为控制标准的测控系统,完成一次测控任务需1小时。在已执行测控50分钟的情况下,系统电压异常引起复位,此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗。因此可通过一监测单元对当前系统的运行状态、系统时间予以监控,将控制过程分解为若干步或若干时间段,每执行完一步或每运行一个时间段则对监测单元置为关机允许值,不同的任务或任务的不同阶段有不同的值,若系统正在进行测控任务或正在执某时间段,则将监测单元置为非正常关机值。那么系统复位后可据此单元判系统原来的运行状态,并跳到出错处理程序中恢复系统原运行状态。
非正常复位后系统自恢复运行的程序设计
对顺序要求严格的一些过程控制系统,系统非正常复位否,一般都要求从失控的那一个模块或任务恢复运行。所以测控系统要作好重要、参数的备份,如系统运行状态、系统的进程值、当前输入、输出的值,当前时钟值、观测单元值等,这些数据既要定时备份,同时若有修改也应立即予以备份。
当在已判别出系统非正常复位的情况下,先要恢复一些必要的系统数据,如显示模块的初始化、片外扩展的初始化等。其次再对测控系统的系统状态、运行参数等予以恢复,包括显示界面等的恢复。之后再把复位前的任务、参数、运行时间等恢复, 再进入系统运行状态。
应当说明的是,真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份,并加以数据可靠性检查,以保证恢复的数据的可靠性。
其次,对多任务、测控系统,数据的恢复需考虑恢复的次序问题。
系统基本初始化是指对、显示、输入输出方式等进行初始化,要注意输入输出的初始化不应造成误动作。而复位前任务的初始化是指任务的、运行时间等。
对于软件抗干扰的一些其它常用方法如、RAM数据保护与纠错等,限于篇幅,本文未作讨论。在工程实践中通常都是几种抗干扰方法并用,互相补充 完善,才能取得较好的抗干扰效果。从根本上来说,硬件抗干扰是主动的,而软件是抗干扰是被动的。细致周到地分析干扰源,硬件与软件抗干扰相结合,完善系统监控程序,设计一稳定可靠的系统是完全可行的。本段仅针对硬件设计人员和人员,为了便于对硬件的理解要有一定的汇编语言基础。我们知道,一个总是由通过电线连接而成的,在中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。器件的数据线也就被称为,器件所有的控制线被称为。在内部或者及其它器件中有,这些存储单元要被分配,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为。这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。换言之,地址、指令也都是数据。指令:由的设计者规定的一种数字,它与我们常用的有着严格的一一对应关系,不可以由的开发者更改。地址:是寻找内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。数据:这是由微处理机处理的对象,在各种不同的应用中各不相同,一般而言,被处理的数据可能有这么几种情况:
1.地址(如MOV DPTR,1000H),即地址1000H送入。
2.方式字或控制字(如MOV TMOD,#3),3即是控制字。
3.常数(如MOV TH0,#10H)10H即定时常数。
4.实际输出值(如P1口接彩灯,要灯全亮,则执行指令:MOV P1,#0FFH,要灯全暗,则执行指令:MOV P1,#00H)这里0FFH和00H都是实际输出值。又如用于LED的,也是实际输出的值。
理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。如P3.6、P3.7分别是WR、RD信号,当微处理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。你完全可以在指令中按排一条SETB P3.7的指令,并且当执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。在通电复位后内的(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即SP,每当执一次时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOV SP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四区,经常要被使用,这会造成数据的混乱。不同作者编写程序时,初始化也不完全相同,这是作者的习惯问题。当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下者不会把它当成普通内存用了。这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。然后用(如EDIT、CCED等)编写软件,编写好后,用对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。运行正确后,就可以写片(将程序固化在EPROM中)。在被编译后,生成了扩展名为HEX的目标文件,一般能够识别这种格式的文件,只要将此文件调入即可写片。在此,为使大家对整个过程有个认识,举一例说明:STC单片机
公司的主要是基于内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强.
PIC单片机:
是公司的产品,其突出的特点是体积小,功耗低,,抗干扰性好,可靠性高,有较强的模拟接口,代码保密性好,大部分有其兼容的FLASH的芯片.
EMC单片机:
是义隆公司的产品,有很大一部分与PIC 8位兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差.
ATMEL单片机(51单片机):
公司的8位有AT89、AT90两个系列,AT89系列是8位Flash单片机,与系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫.
PHLIPIS 51LPC系列单片机(51单片机):
公司的是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求.
HOLTEK单片机:
台湾盛扬半导体的,价格便宜,种类较多,但抗干扰较差,适用于消费类产品.
TI公司单片机(51单片机):
提供了TMS370和MSP430两大系列通用.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合
松翰单片机(SONIX):
是台湾松翰公司的单片,大多为8位机,有一部分与PIC 8位兼容,价格便宜,分频可选项较多,有PMW ADC 内振 内部杂讯滤波。缺点RAM空间过小,抗干扰较好。
三星单片机:
三星单片机有KS51和KS57系列4位单片机,KS86和KS88系列8位单片机,KS17系列16位单片机和KS32系列32位单片机,三星还为ARM公司生产ARM单片机,常见的S344b0等.三星单片机为OTP型ISP在片编程功能。
凌阳单片机:
中国台湾凌阳科技股份有限公司(Sunplus Technology CO. LTD)至力于8位和16位机的开发。SPMC65系列单片机是凌阳主推产品,采用8位SPMC65 CPU 内核,并围绕这个通用的CPU内核,形成了不同的片内资源的一系列产品。在系列芯片中相同的片内硬件功能模块具有相同的资源特点;不同型号的芯片只是对片内资源进行删减.其最大的特点就是超强抗干扰. 广泛应用于家用电器、工业控制、仪器仪表、安防报警、计算机外围等领域。SPMC75 系列单片机内核采用凌阳科技自主知识产权的μ' nSP(Microcontroller and Signal Processor)16位微处理器SPMC75 系列单片机集成了多种功能模块:多功能 I/O 口、串行口、 ADC 、定时计数器等常硬件模块,以及能产生电机驱动波形的 PWM 发生器、多功能的捕获比较模块、 BLDC 电机驱动专用位置侦测接口、两相增量编码器接口等特殊硬设,主要用于变频马达驱动控制。 SPMC75 系列单片机具有很强的抗干扰能力,广泛应用于变频家电、变频器、工业控制等控制领域。
华帮单片机:
华帮单片机属于8051类单片机,它们的W78系列与标准的8051兼容,W77系列为增强型51,对8051的时序做了改进.同样时钟下速度快了不少。在4位机上华帮有921系列,带LCD驱动的741系列。在32位机方面,华帮使用了惠普公司PA-RISC单片机技术,生产低位32位RISC单片机。
SST 单片机:
美国SST公司推出的SST89系列单片机为标准的51系列单片机,包括SST89E/V52RD2,SST89E/V54RD2,SST89E/V58RD2,SST89E/V554RC,SST89E/V564RD等。它与8052系列单片机兼容。提供系统在线编程(ISP功能)。内部flash擦写次数1万次以上,程序保存时间可达100年。
还有很多优秀的单片机生产企业这里没有收集,每个企业都有自己的特点,大家根据需要选择单片机,在完全实现功能的前提下追求低价位,当然并不是这样最好,实际中选择单片机跟开发者的应用习惯和开发经验是密不可分的。目前,攻击主要有四种技术,分别是:
(1)软件攻击
该技术通常使用通信接口并利用协议、或这些算法中的来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMEL AT89C 系列的攻击。攻击者利用了该系列擦除操作时序设计上的漏洞,使用自编程序在擦除定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。
(2) 电子探测攻击
该技术通常以高时间分辨率来监控在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的和数学统计方法分析和检测这些变化,即可获取中的特定关键信息。
(3)过错产生技术
该技术使用异常工作条件来使出错,然后提供额外的访问来进行攻击。使用最广泛的过错产生攻击手段包括电压冲击和时钟冲击。低电压和高电压攻击可用来禁止工作或强制执行错误操作。时钟瞬态跳变也许会复位保护而不会破坏受保护信息。电源和时钟瞬态跳变可以在某些中影响单条指令的解码和执行。
(4)探针技术
该技术是直接暴露内部连线,然后观察、操控、干扰以达到攻击目的。为了方便起见,人们将以上四种攻击技术分成两类,一类是侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。所有的微探针技术都属于侵入型攻击。另外三种方法属于非侵入型攻击,被攻击的不会被物理损坏。在某些场合非侵入型攻击是特别危险的,但是因为非侵入型攻击所需设备通常可以自制和升级,因此非常廉价。
大部分非侵入型攻击需要攻击者具备良好的知识和软件知识。与之相反,侵入型的探针攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。科研成果保护是每一个科研人员最关心的事情,加密方法有,,软硬件综合加密,时间加密,错误引导加密,专利保护等措施有矛就有盾,有盾就有矛,有矛有盾,才促进矛盾质量水平的提高加密只讲盾,也希望网友提供更新的加密思路,现先讲一个软件加密:利用MCS-51 中A5 指令加密,其实世界上所有资料,包括英文资料都没有讲这条指令,其实这是很好的加密指令A5 功能是二字节空操作指令加密方法在A5 后加一个二字节或三字节,因为所有反汇编软件都不会反汇编A5 指令,造成正常程序反汇编乱套,执行程序无问题仿制者就不能改变你的源程序。
:就是掩模产品中的不合格产品,内部有ROM,可以把 当 来用,再扩展外部程序器,然后调用8031 内部当然你所选的同批8031的首地址及所需用的中断入口均应转到外部程序区。
用高电压或激光烧断某条,使其读不到,用高电压会造成一些器件损坏重要RAM 数据采用电池(大,街机采用的办法)保护,拔出数据失去机器不能起动,或能初始化,但不能运行。
用真假方法加密
把8X52,标成8X51 单片机,并用到后128B的RAM 等方法,把AT90S8252 当AT89C52,初始化后中并用到EEPROM 内容,你再去联想吧!
用激光(或丝印)打上其它标识如有的引脚兼容,有的又不是同一种单片机,可张冠李戴,只能意会了,这要求你知识面广一点 。
用最新出厂编号的,如2000 年后的AT89C 就难解密,或新的单片机品种,如AVR 单片机。
DIP 封装改成PLCC,TQFP,SOIC,BGA等封装,如果量大可以做定制ASIC,或软封装,用不需外晶振的工作(如AVR 单片机中的AT90S1200),使用更复杂的单片机,FPGA+AVR+SRAM=AT40K系列。
与只是为叙说方便而分开来讲,其实它们是分不开的,互相支撑,互相依存的软件加密:其目的是不让人读懂你的程序,不能修改程序,你可以………….....
利用未公开,未被利用的标志位或单元,作为软件标志位,如8031/有一个用户标志位,PSW.1 位,是可以利用的程序入口地址不要用整地址,如:XX00H,XXX0H,可用整地址-1,或-2,而在整地址处加二字节或三字节,在无程序的空单元也加上程序,最好要加巧妙一点用大容量,用市场上不能仿真的芯片,如内部程序为64KB 或大于64KB 的器件,如:AVR 单片机中ATmega103 的Flash 程序存储器为128KBAT89S8252/中有EEPROM,关键数据存放在EEPROM 中,或程序初始化时把密码写到EEPROM 中,程序执行时再查密码正确与否,尽量不让人家读懂程序。关于加密,讲到这里,就算抛砖引玉。一、单片机与嵌入式系统概述:包括嵌入式系统概念、单片机的特点、应用领域和发展趋势、市场主流单片机性能比较与选型、常用51核单片机介绍、业内通用嵌入式系统开发方法和流程、开发板及相关开发工具的介绍和使用等;
二、51单片机架构及基本资源的使用:包括单片机工作原理介绍、51单片机架构介绍、单片机最小系统介绍、51单片机基本资源如并口、中断、时钟与复位、串口等的熟练使用等;
三、单片机基本资源扩展设计:包括存储器扩展设计、可编程和不可编程I/O接口扩展设计、I2C总线的模拟设计等;
四、输入输出设备的设计:包括独立式按键和矩阵键盘的各种输入方法、数码管及液晶显示器的接口设计、蜂鸣器的设计;
五、输入通道和输出通道的设计:包括一定模拟和数字信号量的输入、频率量的输入方法、A/D转换原理与器件选型及其与单片机的接口设计、数字与模拟量的输出方法、功率驱动相关知识、D/A转换原理与器件选型及其与单片机的接口设计等;
六、单片机软硬件设计和调试经验:各种软件开发和设计技巧、调试经验等;
七、开发环境和开发工具介绍:Keil uVision2集成开发环境的使用与软调试等;
八、软硬件系统集成和调试方法,技术文档的编写规范单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
1.在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪)。
2.在工业控制中的应用
用单片机可以构成形式多样的控制系统、。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
3.在家用电器中的应用
可以这样说,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
4.在和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,,无线电对讲机等。
5.单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
新手上路我有疑问投诉建议参考资料 查看

我要回帖

更多关于 单片机 的文章

 

随机推荐