pspice编程技术
学习pspice的入门资料,很适合初学者。EDA工具应用丛书Spice/ PSpice绵程技术高燕梅房蔓楠编A995B9電子工業出版Publishing House of Electronics industry北京· BEIJIⅠNG内容简介在众多的计算机辅助设计(CAD〕工具软件中,pie程序是精度最高、最受欢迎的软件丁具许多EDA系统软件的电路模我都分都是用ice序来完成的。本书系统讲述spie/ PSpice編程技术,并提供大量的编程仿良实例。全书分为7章1第1章介绍Spie程序的功能和特点;第2章和第3章分别介绍 PSpice Is版和wnws版的编程电路图绘制电路分析及波形处理方法;第4章介绍元器件的spce模型及参数;第5章介绍各种spre数学宏模型和系统宏模型;第6章绘出常用电路的仿真实例;第7章讲述运行 Spice序时可能出现的不收敛现象以及克服不收敛问题的方法本书可作为大中专院校电子类专业的教材或实验考书,也可供屯了系统设计、开发人员和电路设计爱好者参考a未经许叮,个得以任何方式复制或抄袋本书之部分或全内容。版权所有,侵权必究图书在版编目【CP}数据Spic:e/FSpice编釋技术/高燕悔房蔓楠编著.—北京:电子工业出版社,2002.6(EDA|县应用丛书sN7553691RI.S…〗.①高…②房…Ⅲ.电子电路一计算机辅助设计一应用软件, pice/Pspice-程序设计tY. TNI02屮国版本图书馆CP数据核字(2002)第035519号责任編辑:张来盛印刷:北京大宇星印圳出版发行:电了工业出版社htp://ww.phei. Com.cn引京市海淀区万寿路173信箱邮编100035经销:各地新华书店于本:787×10921/16印张:1925字数:4928千字版次:2002年6月第1版2002年6月第1次印刷印数:6000册定价:2800元凡购买旦子L业出版社的至书,如有缺损问题请向购买书店调换。若书店售缺请与本社发行部联系联系电话:(C0)68279077臃着计箅机技术的飞速发展,计算杋辅助设计(CA门)技术已成为屯路设计工程师不吁缺少的有力工具。国内外电子线路CA软件的相继推出与版本更新,使CA技术的应用渗透到电子线路与系统设计的各个领域,如电路图的绘制、模拟电路仿真、逻辑电路分析、优化设计、印刷电路版的布线等。CAD技术的发展使得电子线路设计的速度、质量和精度得以保证在众多的CAD工具软件中,Spce程序是精度最高最受欢迎的软件T具,许多EDA系统软件的电路模拟部分是应用 Spice程序来完成的。Ppie是Spce程序应用在P!上的程序,它的主要算法与 pire相同。由于 PSpice A/程序集成了模拟与数字电路的仿真运算法,它不仅订以仿真单一的模拟电路或数字电路,而H可以有效、完善地仿真模拟和数字混合电路。经过多年的改版, PSpice AD以其强大的功能炇高度的集成性而成为现今最受欢理的电路仿真软件。 PSpice程序已被另一家在FDA领哦的大公司 OCAD并购,更名为 OrAD PSpice A/D,版本升级为v。根据多件来对 Spice程序的学习和讲究我们认为,然pice程序不断升级,各种版本的编辑窗口变化多端而豆新功能不断发展,令初学者眼花缭乱,但如果能首先掌握Spie程序的基本编程语言,即 pice pos版的編程方法,了解Spi程序的基木计算方法和常用模型,就掌握了pice程序的真谛,任何版本的pice程序都能轻松驾驭。基于这一点,衣编群本书时,我们以 PSpice的0s版为例,详细讲解 Spice的基本编程语言,由浅入深,求消晰易懂。这是本书与其他Psce程序书籍不同的重要特点,希望读者在使用木书时会有深刻体径杯书内容分为7章。第1章概要介绍$pe序的功能和特点;第2章详细介绍PpieDOS版的编程方法和各种分析功能对各种元器件及电路给出了编程示例使得初学者很容易掌握;第3章洋细介绍 ISpice Windows版应用轶件的电路图绘制和电路分析、数据波形处理方法;第4章详细介绍二极管丑r晶体管、MOS场效应管等器件的模型电路及参数,并有详尽的图形公式讲解;第5章介绍应用 PSpice程序编程功能实现的各种数学宏模型和系统宏模型,这些宏模型可以内置于电路系统中,代替部分电路模块的功能或作为测试源,乜可以代替不需设计的屯路部介,使得电系统的分析测试简化,精度提髙;第6章给出·些常用电路的仿真实例;第7章介绍运行spie程序时可能出现的不收敛现象和克服不收敛问题的方法本书的主要特点(1)适用于初学者。本书对DO版的ppie程序作了详细约介绍,给出了各种电路的编程举例;对 Windows版 PSpice程序的各种菜单命令给出了详细的说明,使初学者能很快学会绘制电路图的方法,并应用各种指令进行分析,打印输出结果。(2)适用干木科、专科学牛和电路设计爱好者。学优布学会应用spic程序后,可以随时方使地利用 Spice软件检查作业,完成电路设计编程和课程设计任务如果他们对电路的基木理论不清楚,就不会有正确的运算步骤也不能从程序中得到正确的解答,这时学生就需要修改稆序。这种反复运算的过程是教会学生本理论的有效方法。电路教学实践表明,孜科书中的与颞没钌作一的题,最好的解答往社是越出常规的。理论学习好的学生,往往不一定能解决实际的工程问题,从而不能话应激烈的市场竞争的需要。实际的工程问题必狐通过反复设计实践来解决。应用 spice程进行设计,能够培养学竺的创造性思绁。(3)Spie序是实验师的好帮手。粗通计算机技术的教帅可以通过本迅速地掌握ice编程技术将其应川于实验教学,既可以鼓助学牛进行创造性的实验活动,可以桰助学生加深理解理论分析的步骤和结果。在应用实际元器件和仪表进行实验时,由于元器件、设备和时间的限制,学生只能徹一些确定的实验:而应用spce教件进行设计,学生可以进行多种电路实验,将多种设计方案输入计算机,用 Spice软件调测设计电路,比较改进设计结果些实际也路的成功设计,可以更加激发同学们的创造热情,迅速提高他们的电路设计能力(4)为1程技术人员提供了详尽的模型资料和有效的宏模型。读者在设计电路时,可根楞设计需要选定模型参数,在调测屯电路时可以通过修改模型参数来得到最设计结果。由于编著者水平有限加之吋问仓促;书中难免有不妥之处,敬请读者批评指正:。编著者202年1月目录第1章论…(l)第2章 PSpice DOS版编程…看司即甲4p■即甲p甲唱自即看■口口申d『p自11■■督會血血血11■2.概述111……………,……………………(4)版 PSpice的组成2.]2 PSpice的装与运行翻山酯■口鲁鲁■一口即……………(5)2.2屯路描述…………(5)221电路描述语句自■中中■山2.2.2分柝指令格式………2.2.3输出指令格式中·中·P…(10)2.24简单程序举例…………(10)2.3元器件描述………(11)23.1元件描述语付………23.2器件描述语句……………………………………………………………………(20)2.3.3屯源描述语句■■L■昌L山昌山▲(49)4分析指令(55)4.1直流分忻指令……■■卜■P■鲁■自曾血自自血自血自■自血■■血■■血自鲁自■血b曲會血………(55242交流分析指令(57)24.3噪声分析指令57)244膦态分析指令………………亠郾·■·▲·↓↓↓↓中·dpc+■鲁■q(582.4.5傅里叶分析■■■58)2.5输出指令■日「■■■早,■■『卩q卜■↓■4晋b量b………(59)2.s.1数据打印评句……………………(59)2.5.2文本绘图语句…………………f6l2.5.3图形后处理程序(62)2.5.4打印宽枣话何62)2.6其他功能描述语句P·14昌山如■+--中『甲中即『『日『日4d『‘(63)2.0.1任选唤培句4聊ψψ■中φPp中p白pq◆F(63)26,2结束语句……(64)2.6.3包含话句………………………(64)2.7子电路与库函数日申曾·曾平4甲·個■■冒PPPP■宁■4■b■個自自■鲁血自鲁d咖·■卩聊即p聊(64)2.7.l器件模型语句 MODEL〔65)2.7.2库函数调用语句UIB65)2..3子电路调用语句SHKT…………s…………*(66)28数字电路模拟■■■■冒P冒4bb■凸山……………………(6)8.1概述662.8.2数字电路器件………………678.3数宁信号游72)2.8,4数电路的 P=pice分析·督■■『■冒?冒■會4會■1■■■■‘‘■t76第3章 PSpice Windows版编程833.1概述(833.2绘制电路原理图■■冒冒冒■1冒冒■■■『■冒■■■曾■■■■■■■833.2.1打开 Schematics程序项3.22绘图窗计的址能建84)3.2.3绘图常用命令顶853.3电路分析司口■■■◆■●■血曲(92)3.3.1打开Fps耙序项鲁血■923.3.2 PSpic:e常用角令项…923.4杳看输出波形…………………………………(933.4.1打开Prb程序项(933.42Pmhe窗冂的功能键…(3343Prhe常用命令项■■■■■■P■血l自自■L自·_甲■唱司·■■……………(953.5建立元件库……9?3.5.L打开Pats程予项……;………3.52元件库窗口的功能键冒士14■+■b93.5.3Pars常用命仝项……甲甲郾·!···』■▲--rT……(99)3,6激励源编辑器……(1033.6.1打开激励源绢辑窗口,……s"…""………(1033.6.2激源编辑窗口的功能键(104)激动源编器常用命令项3.7设汁举例卜:4幽■山■■■▲甲曾番甲晋P晋量青↓dd画晶1103.7.谩计一个数字电路……(LlO3.7.2温度分析实例………■音鲁白中中P中甲甲P『TPP■個◆自冒t(1I537.3噪声分析实例…(1203.7.4傅甲叶分析实例…;;…7.5多数分析实例………………(124)3.7.6 Mante Carlo分析与性能分析…………………(127)37.7最荣悟况分析;q■■T■■■■(l3第4章Spce元件模型与模型参数…………………(1344. I Spice二极管模刑■冒■1■■中1344.1.Ⅰ大注人电流的-极管静态DC模型(]364.1.2极管信号模型…■■■■■■■I38极管的温度模型1384.2双极型晶体管模型和参数提取……(1394.2.上BT模型慨述∴……………………"…(l39)4.2.2lrs-M钏l模型…(14l)4.2.3 Gummel-Pon模型p:4日由·亠‘(1454.3MGS场效应管(MOET)模型参数和提取(150)4.3.1 MOSFET的Sice一级静态镆型(150)4.3.2 MOSFET_·级静态模型·(1524.3.3M0SFET_级静态模型·A.·.日.B4L日.BB昌吾4↓bh如昌4吾山聶如亠↓4亠(154)4.3.4 MOSFET Spice棋型的比较■1■‘』中中中中中中中山十啬4鲁山平『■+一(155)44结型场效应晶体管(JFFT)模型和参数提取………………………………(157)4.4]N沟道JFF静态模型…■血■函■幽血………(158)4.4.2JEY大信号模型(159)4.5砷化镓金属≯导体场效应晶体管( GaAs mesfet)模型1自中……(160)4.6数字器件模型(161)4.6.l逻辑门电路………………………………**……(1614.6.2融漫平卩■甲P甲↓甲罾↓晋甲■■!甲青罾晉甲■■『卜鲁昏■晋}■_■■d晋d矗啬(16446.3可编程逻辑器件(PLA……(167)4.6.4数字UO接口子电路……………………………;……"(]70)4.6.57400系列TT和CMOS模型库(173)4.66CM84000系列模型库(184)4.6.7数字器件型举例………r…………………(187)第5章Spce数学宏横型(192)5.1数学功能宏模型……………………………………………………(192)5.L.电压加法器太模型T平■■『冒■■■■■■■■昌…(192)5.1.2电压乘法器宏模型…■甲qF『冒PP■曾………s…s……s………:(193)5.1.3电生除状器宏模型(195)5L4电压平方室模型(196)5..5理想变压宏模型h■甲甲普平罾甲甲■p■■b▲pt(197)5.L.6电压求平主根宏模型………………(198)5..7三角波/弦波转换器(20)5..8电压柑移电路(202)5l.9电压积分器宏模型看号『冒晋■■血dq·号司鲁■■■唱自血◆血■■自■■■p甲聊要L4↓(204)s.上,10电压徽分宏模型…;(206)5.].1电压绝对连宏模型…■■■矗■bt(207)5.].12电压峰值深测器宏模型LL山L山(2105.1.13频率乘法………………∴…(2lt)s.1.14频率除法据……(213)5.1.15频率加法据减法器……(215)5.].16相泣探测器(217)5.1.17传输线宏嫫型…号P■甲↓【■冒h219)5.1.18施密特触发器宏模型……;………………………………………(220)5.1.19电压取样一保持电路宏模型4■郾司郾■4L晶………………………(223)5.].2咏冲宽变调制器宏模芈…………(2245.1.21电压填度调制器宏模型……(226)5.L.22电压对数放大器宏模型■■■(228)5.1,23N次根提取电路宏模型…(229)5.1.24拉氏变换宏模型…………………(232)5.2系统方程去模型…(232)52.]微分方程纤的积分型模拟法……………………………(232)5.2.2微分方程组的微分型模拟法………(236)5.23网络函数的Sice电路模型…(238)53非线性器件的Srie模型…………………,…………(246)5.3.1传感器件的Sice瞬念分析…:(246)5.3.2负值电慼和电容的Spie宏模型T?冒■T冒P250533运算放大器的Spe宏模型…………………(252第6章常用电路编程实刨…………………………………………………………(259)第7章 Spice的收斂问题(290)7.1什么是收敛问题鱼山d山血d血血dp血■■p甲1甲4·甲"qP+P290)7.2如何解决收敛问题……bdd■d…(290)7.2.]解次不收敛问题的思路……(290)7,2.2解决不收敛问题的可行力法…………(291)7.2-3解袂不收问题的条件参数和指令…(2927.3常见的错误信息…………甲甲司罪郾甲【即着L着4■■d·4画斗香山4·…(293)參考文献………………………(299)
- 2020-12-09下载
- 积分:1
一天入门STM32
一天入门STM32 pdfC秉火《零死角玩转STM32》一F1系列时钟源To T钟电路FR和RAMROM定时/计数5系统总线又CPU并行Io口串行Io口中断系统P0p1P2 P3 TXD RXD I。I:图151系统结构框图我们说的51一般是指51系列的单片机,型号有很多,常见的有STC89C51、AT89S51,其中国内用的最多的是STC89C51/2,下面我们就以STC89C51来讲解,并以51简称。内核51由一个IP核和片上外设组成,IP核就是上图中的CPU,片上外设就是上图中的:时钟电路、SFR和RAM、ROM、定时/计数器、并行IO口、串行IO口、中断系统。IP核跟外设之间由系统总线连接,且是8bit的,速度有限51内核是上个世纪70年代 intel公司设计的,速度只有12M,外设是IC丿商(STC)在内核的基础上添加的,不同的IC厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里 intel属于PP核厂商,STC属于IC厂商。我们后面要讲的STM32世样,ARM属于P核厂商,ARM给ST授权,ST公司在 Cortex-M3内核的基础上设计出STM32单片机。外设我们在学习51的时候,关于内核部分接触的比较少,使用的最多的是片上外设,我们在编程的时候操作的也就是这些外设。第3页共53页C秉火《零死角玩转STM32》一F1系列编程的时候操作的寄存器位于SFR和RAM这个部分,其中SFR(特殊功能寄存器)占有128字节(实际上只用了26个字节,只有26个寄存器,其他都属于保留区),RAM占有128字节,我们在程序中定义的变量就是放在RAM中。其中SFR和RAM在地址上是重合的,都是在80-FF这个地址区间,但在物理区间上是分开的,所以51的RAM是有256个字节编写好的程序是烧写到ROM区。剩下的外设都是我们非常熟悉的IO口,串∏、定时器、中断这几个外设STM32系统结构STM32系统结构框图接PashDCodeCortexM3SystemSFAMDMATDMAFSMCSDIO通道1套通道2AHB系线线桥接2桥接1APB 1APB2复位和时钟通道7控制DC2PIOD PWR SP1129DMA请求ADCsGFIOE BKPUSART1 GPioF bxCAN WDGSPlGPOG USETIM1RICExTIt2C2TIM2DMA212C1TIEUARTS TIM5GPc日UART& TIM4AHTa通道1USaRT TIM2通通通5AA请求图2STM32系统结构框图内核在系统结构上,STM32和51都属于单片机,都是由内核和片上外设组成。只是STM32使用的 Cortex-M3内核比51复杂得多,优秀得多,支持的外设也比51多得多,同时总线宽度也上升到32bit,无论速度、功耗、外设都强与51。第4页共53页C秉火《零死角玩转STM32》一F1系列从结构框图上看,对比5内核只有一种总线,取指和取数共用。 Cortex-M3内部有若干个总线接∏,以使CM3能同时取址和访内(访问内存),它们是:指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即 FLASH外设)的访问,分别是 I-Code总线和 D-Code总线。I-Code用于取指, D-Code用于查表等操作,它们按最佳执行速度进行优化。系统总线( System)用J访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片夕扩展设备,以及系统级存储区的部分空间。私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。还有一个MDA总线,从字面上看,DMA是 data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据般运工,这个在51里面是没有的外设从结构框图上看,STM32比51的外设多得多,51有的串口、定时器、O口等外设STM32都有。STM32还多了很多特色外设:如FSMC、SDIO、SPI、2C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这三条总线上。小结从内核和外设这两大方面米比较,SIM32之于51就是一个升级版的单片机。它适应市场,引流淛流,在中低端的微控制器中流光溢彩。12学习方法的区别学习51用寄存器,学习STM32用库。以前我们在学习51的时候,用的是寄存器编程的方法,想要实现什么效果,直接往寄存器里面赋值,优点是直观,简单粗暴,知道自己具体干了啥,心里踏实直接操作寄存器之所以在51上可行,究其原因,我想有两点:1、51主频不高,资源有限,必须注重程序执行的效率,只能直接操作寄存器。关键的地方还得用汇编,不适合用同件库。第5页共53页C秉火《零死角玩转STM32》一F1系列要知道当初我们学习51单片机的时候用的还是汇编,连现在的C编程都不是,就更别说什么斥函数编程2、51功能简单,寄存器不多。以国内普及最广的STC89C52为例,寄存器仝部加起来不到30个。按照功能区分来记的话,可以把每个寄存器背的滚瓜烂熟,并且寄存器每一位的功能都可以记得住,在编程的时候做到了然于胸。现在从51过度到STM32的学习,很多人还是喜欢沿用51的学习方法。接受不了库,在学习库的时候陷入迷糊之中,来回几个月下来,都不知道到底有没学会STM32,因为在这一路的学习中都是在调用库函数,压根就没有操作过寄存器,心里面很不踏实。其实大家在调用库函数的时候心中难道就没有疑问,库的底层是怎么实现的?难道就没有勇气对庥的底层探究竟。可最后当我们丌始跟踪斥函数底层的时候,看到·堆的宏定义、结构体、指针、各种的文件包含,而且注释全部都是荚文的,是不是乂心生忌惮。鉴于此,我想用两个原因来总结下很多初学者畏惧库不愿意用库的原因。1、C语言知识点的欠缺库在实现寄存器映像时使用的宏定义,强制类型转换,在定义寄存器时使用的结构体,在外设初始化函数时使用的指针,在组织头文件时使用的条件编译等C语言知识,在大学课程中很少涉及,大多数老师也基本是不讲。在一些简单的51单片机编程中又很少会用到这些知识。学单片机,做嵌入式开发其实80%的工作都跟C语言编程相关,剩下的20%的匚作就是阅读各种数据手册,熟悉各和硬件外设。所以掌握这些基本的C语言知识,是嵌入式学习中一道迈不过去的坎,STM32的库则给」我们一次提升C的机会凡是可以从书本中找到的,相信我们基本都可以学会,很多初学者并不是不够聪明或者勤奋,只是缺少方向性的指导罢了。对于这欠缺的知识点我们稍微花点时间就可以掌握,剩下的就是不断地实践词试。这里我为大家推荐·本C语言的书籍《C和指针》。2、程序架构设计思想的欠缺这个比较难搞,很多C语言学习得挺好好的人,也比较难掌握。还好我们遇到了SIM32的库,这给了我们一个学习和提升C语言绝佳的机会。库的整个架构是如何搭建起来的,代码上是如何如何一步一步写出来的:从寄存器映像开始,到寄存器的封装,然后到函数的编写,到每个外设函数对应的驱动文件,这里面涉及到了大量的条件编译,文件包含的思想,对应刚写过几行51单片机的初学者来说简直就是噩梦。但是,如果你把这系列的关系弄明自了,那么对库的整个架构也了解的差不多了,以后你就不用嚷嚷着说要操作奇存器了。如果你一开始不喜欢用库,对库开发很忌惮,那么请自问:是不是我的C语学得不够好。库是一种全新的学习方法,是一种河流,我更把它看做是与C语言的又一次历练和提升。是否用库,只差你一个闪亮的回眸第6页共53页C秉火《零死角玩转STM32》一F1系列1.3用寄存器点亮LED为了顺利过渡到库开发,在STM32编程的开始,我们对照51点亮一个LED的方法,给大家演示一下STM32如何用操作寄存器的方法点亮一个IFD,然后再慢慢讲解到底什么是库,让大家知道库跟寄存器的关系1.3.1用51点亮一个LED在用STM32点亮一个LED之前,我们先来复习下用5如何点亮一个LED。硬件上我们假设51单片札的P0口的第0位接了一个LED,负逻辑亮。如果我们要点亮这个LED,代码上我们会这么写1P0=0XFF;//总线操作点亮FD这时侯我们就把LED点亮了,如果要关掉LED,则是:1P0=0xFF;//总线操作关闭二ED这里面我们用的是总线操作的方法,即是对P0口的8个1O同时操作,但起作用的只是P0^0除了这种总线操作的方法,我们还学习过位操作,利用51编译器的关键字sbit,我们可以定义个位变量1sbit工E0^0那么LED=0;就点亮了LED,LED=1;就关闭了LED。为了让程序看起来见名知义,我们定义两个宏:1 #define on 02 define OfF 1点亮和关闭LED的代码就变成了:1 LED//位操作点亮IED2 LED= OFF//位操作关闭LD稍微整理下代码,整体的效果就是:1//假设51单片机的P0~0口接TFD,负逻辑点亮3 #define ON 04 definc Ofe 16 sbit lEd poo8 void main(void)第7页共53页C秉火《零死角玩转STM32》一F1系列9{10PO OXFE;/总线操作点亮0=0XE彐//总线操作关闭LED13工ED=ON;//位操作点亮LED14LED=OF彐;/位操作关闭LED15」上血总线和位操作的的方法,学过51的朋友是非常熟悉的,也很容易理解。那么我们再说一下大家容易忽略的几个知识点。什么是寄存器在点亮LED的时候,我们都是用操作寄存器的方法来实现的,那大家是否想过,这个寄存器到底是什么?为什么我们可以直接操作P0口?解答上面的问题之前,我们先简单介绍下51单片机的主要组成部分,这对我们学习其他单片机也有好处。我们以国内的STC89C51为例,该单片机主要由51内核、外设IP、和总线这三人部分组成。内核是由 Intel公司生产的,外设P就是STC公司在内核的基础上添加的诸如定时器、串口、IO凵等这些东西,总线就是用米连接內核和外设的接凵单元。 Intel在这里属于IP核设计公司,STC属」I设计公司。世界上能设计IP核的公司屈指可数。我们非常熟悉的ARM公司就属于IP核设计公司,ARM给其他公司授权,其他IC公司就在ARM内核上设计出各具特色的MCU,我们后面要学习的STM32就是属于一中基于ARM内核的MCU。寄存器则是内置于各个IP外设中,是一种用于配置外设功能的存储器,就是一种内存,并且有想对应的地址。学过C语言我们就知道,要操作这些内存就可以使用C语言中的指针,通过寻址的方式来操作这些具有特殊功能的内存一寄存器。比如P0口对应的地址是0X80,那么我们要修改0X80这个地址对应的内存的内容的话,按照常理可以这样操作1*(+0X80)=0XEE;点亮LED可当我们编译的吋候,编译器会报错,在51里面只能通过SFR和SBIT这两个关键字来实现寄存器映像,不能直接操作寄存器对应的地址,这是51相较于STM32不同的地万51单片机的这些寄存器位于地址80H~HFH中,对应着128个地址,但不是每个地址都是有效的,51系列的单片机有21个,52系列的则有26个,其他的都是保留区第8页共53页C秉火《零死角玩转STM32》一F1系列表2AT89c52SFR映象及复位状态OFBDEFHDFOHo00000DFTHOE8H0D000000DETH00000003DOTHOC8H0000000)XXXXXXODDCFHx00000037HEDAFH0粪0H11111111DATHSCON98H00000002SBUF9FHP1111111197HTCON88H0000000)TMODTLOTL100000000000000000000000000000000000BFHSPDPHPCON80H1DPLco111OXXX0000图351寄存器映射2.寄存器映射实际上我们在编程的吋侯并不是通过指针来操作奇存器的,而是直接给PO、Pl这些端口寄存器赋值。那么这些外设资源是如何与地址建立一一对应的关系(寄存器映射定义),这得益与51特有的两个关键字:SFR和sbit,其但单片机没有,只能用其他的方式来实现寄存器映射。这两个关健字帮我们实现了所有寄存器的定义,所以我们才可以像操作普通变量一个米操作寄存器。其实我们一开始提到的点亮LED的代码,全貌应该是这样的:1 sfr pocx80;//寄存器定义2P0=0ⅩFE;/总线操作点亮LED为了方便起见,我们可以扣奇存器映射全部写好封装在个头文件里面,不用每用个寄存器就定义一次。其实这方面的工作不用我们做,我们在编程的时候都会在开始的地方添加一个头文件1 include 第9页共53页C秉火《零死角玩转STM32》一F1系列这个头文件已经实现了全部寄存器的定义,该文件是kei自带,在安装目录:KeiC5IINC可以找到。这个文件实现了字节寄存器和位寄存器的定义2 REG514 Header file for generic 80C51 and 80C31 microcontroller5 Copyright (c)-988-2002 Keil ELektronik GIbH and Kei- Software, Inc6 All rights reserved.9 +ifdef REG5- H10#define RFG5. H1112/* BYTF, Reci ster *13sfr0=x80;1456PEE2×90sfrCaO;13BO17 sfr PSWRDO18 sfr AccCeO:901strBsExFO;12222x8-;3 sIr PCoN24 sr icon Cx8825 sfr TMOD Cx89:sfr TloxiA2222367890sfr TCx8Bfr TCx8Cifr Ti18D831 sfr t2×B832 sfr sLHHEPCB9833 sfr sbuf993436/* BIT Register37/+PSW*/38 sbit CYOxD39 sbit ACOxD640 sbit Fo41 sbit rs0xD4;43 sbit ov44 sbit P=0×D0;4546/*TCON*/47 sbit TF0x8F;48 sbit TR0x8E;49 sbit TFo0x8D:50 sbit mro0x8C51 sbit IE-= 0x8B;53 sbit Ieo0x894 shit tto08856/+IE57 sbit eA0×AF58 sbit fs0×AC59 sbit er0×AB;60 sbit EX0×AA61 sbit ero0x90×A8第10页共53页
- 2020-12-08下载
- 积分:1