摘要:介绍了一套以89C52单片机为核心,联合编码器和推拉电磁铁实现探测头自动更换的系统。以超声波作为检测信号源,采用探测头与探测头夹具配合以适应不同直径的回转体工件的检测要求,同时解决了传统检测控制系统中探测头更换与高精度定位的矛盾。
上传时间: 2013-12-24
上传用户:Pzj
摘要:为了解决信号采集系统的同步串行通讯问题,在理解AVR 单片机SPI接口的通讯原 理和方法的基础上,分析了AVR 单片机SPI接口的工作过程,设计了AVR单片机和串行A/ D转换器的同步串行通讯接口,并用程序描述了SPI接口通讯的过程,实现了AVR单片机 通过SPI接口与串行A/D转换器之间的数据通讯。最后,用实验和数据分析验证了设计方 案的可行性。 关键词:SPI接口;AVR单片机;串行A/D
上传时间: 2013-10-31
上传用户:lilei900512
针对51单片机系统中常用的A/D转换器价格高、精度低的缺点,介绍TI公司的16 位的带有I2C串行接口的A/D转换器ADS1110的工作原理,给出ADS1110与AT89C51单片机系统的接口电路和软件设计。实践证明,ADS1110具有高性价比和实用性。 Abstract: According to the disadvantages of high expense and low accuracy of the general A/D converter used in MCS51 microchip system,the principle and working process of a high accuracy 16-bit A/D conversion ADS1110 which has I2C bus and belongs to TI Company are proposed here as well as the interface of ADS1110 to AT89C51 and software list.It is proved to be high performance index and practicability.
上传时间: 2013-11-21
上传用户:gyq
介绍了CAN总线和P87C591单片机的特点,给出了基于P87C591单片机的信号采集节点的软、硬件设计,指出了硬件电路设计中应注意的问题,在软件设计中重点介绍了节点初始化、报文发送和报文接收等子程序。 Abstract: The features of CAN Bus and the microcontroller P87C591 are introduced, and the design of hardware circuit and soft configuration of the signals collection node based on P87C591 are presented. The problems in designing hardware circuit are discussed.Initialization subprogram, transmiting subprogram and receiving subprogram are emphasized in soft configuration.
上传时间: 2013-11-03
上传用户:BIBI
SOC与单片机应用技术的发展:本文讨论SOC和单片机应用技术的发展;介绍SOC的基本技术特点和应用概念;分析作为IP家庭重要成员的单片机在SOC应用设计中的特点。通过讨论指出以嵌入技术为基础,单片机再次成为现代电子应用技术的核心之一,为SOC应用技术提供了坚实的基础。 关键字:SOC;单片机;嵌入式系统 引言 现场电子技术应用中包含了硬件(HW)、硬件加软件(HW+SW)、固件(FW)3个层次。这3个层次也可以说是现代电子技术应用的3人发展阶段。自1997年以来,电子技术应用又增加了一个新的层次??片上系统(SOC)层次。SOC技术概念和应用技术层次的出现,标志着现代电子技术应用进入了SOC阶段。 从各个发展阶段看,自HW+SW阶段开始,电子技术应用就与单片机紧密地联系在一起。在FW阶段,作为固件系统的重要核心技术,单片机又以嵌入式技术为基础,再次成为现代电子应用技术的核心技术之一,并为SOC应用技术提供了紧实的基础。 SOC为各种应用提供了一个新的实现技术。这种新的电子系统实现技术促使工业界在近3年中发生了巨大的变化,为信息技术的应用提供坚实的基础,因此,完全可以称之为SOC革命。同时,SOC也为单片机技术提供了更广阔的应用领域,使单片机应用技术发生了革命性的变化。
上传时间: 2013-10-31
上传用户:qb1993225
九.输入/输出保护为了支持多任务,80386不仅要有效地实现任务隔离,而且还要有效地控制各任务的输入/输出,避免输入/输出冲突。本文将介绍输入输出保护。 这里下载本文源代码。 <一>输入/输出保护80386采用I/O特权级IPOL和I/O许可位图的方法来控制输入/输出,实现输入/输出保护。 1.I/O敏感指令输入输出特权级(I/O Privilege Level)规定了可以执行所有与I/O相关的指令和访问I/O空间中所有地址的最外层特权级。IOPL的值在如下图所示的标志寄存器中。 标 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O许可位图规定了I/O空间中的哪些地址可以由在任何特权级执行的程序所访问。I/O许可位图在任务状态段TSS中。 I/O敏感指令 指令 功能 保护方式下的执行条件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 设置EFLAGS中的IF位 CPL<=IOPL IN 从I/O地址读出数据 CPL<=IOPL或I/O位图许可 INS 从I/O地址读出字符串 CPL<=IOPL或I/O位图许可 OUT 向I/O地址写数据 CPL<=IOPL或I/O位图许可 OUTS 向I/O地址写字符串 CPL<=IOPL或I/O位图许可 上表所列指令称为I/O敏感指令,由于这些指令与I/O有关,并且只有在满足所列条件时才可以执行,所以把它们称为I/O敏感指令。从表中可见,当前特权级不在I/O特权级外层时,可以正常执行所列的全部I/O敏感指令;当特权级在I/O特权级外层时,执行CLI和STI指令将引起通用保护异常,而其它四条指令是否能够被执行要根据访问的I/O地址及I/O许可位图情况而定(在下面论述),如果条件不满足而执行,那么将引起出错码为0的通用保护异常。 由于每个任务使用各自的EFLAGS值和拥有自己的TSS,所以每个任务可以有不同的IOPL,并且可以定义不同的I/O许可位图。注意,这些I/O敏感指令在实模式下总是可执行的。 2.I/O许可位图如果只用IOPL限制I/O指令的执行是很不方便的,不能满足实际要求需要。因为这样做会使得在特权级3执行的应用程序要么可访问所有I/O地址,要么不可访问所有I/O地址。实际需要与此刚好相反,只允许任务甲的应用程序访问部分I/O地址,只允许任务乙的应用程序访问另一部分I/O地址,以避免任务甲和任务乙在访问I/O地址时发生冲突,从而避免任务甲和任务乙使用使用独享设备时发生冲突。 因此,在IOPL的基础上又采用了I/O许可位图。I/O许可位图由二进制位串组成。位串中的每一位依次对应一个I/O地址,位串的第0位对应I/O地址0,位串的第n位对应I/O地址n。如果位串中的第位为0,那么对应的I/O地址m可以由在任何特权级执行的程序访问;否则对应的I/O地址m只能由在IOPL特权级或更内层特权级执行的程序访问。如果在I/O外层特权级执行的程序访问位串中位值为1的位所对应的I/O地址,那么将引起通用保护异常。 I/O地址空间按字节进行编址。一条I/O指令最多可涉及四个I/O地址。在需要根据I/O位图决定是否可访问I/O地址的情况下,当一条I/O指令涉及多个I/O地址时,只有这多个I/O地址所对应的I/O许可位图中的位都为0时,该I/O指令才能被正常执行,如果对应位中任一位为1,就会引起通用保护异常。 80386支持的I/O地址空间大小是64K,所以构成I/O许可位图的二进制位串最大长度是64K个位,即位图的有效部分最大为8K字节。一个任务实际需要使用的I/O许可位图大小通常要远小于这个数目。 当前任务使用的I/O许可位图存储在当前任务TSS中低端的64K字节内。I/O许可位图总以字节为单位存储,所以位串所含的位数总被认为是8的倍数。从前文中所述的TSS格式可见,TSS内偏移66H的字确定I/O许可位图的开始偏移。由于I/O许可位图最长可达8K字节,所以开始偏移应小于56K,但必须大于等于104,因为TSS中前104字节为TSS的固定格式,用于保存任务的状态。 1.I/O访问许可检查细节保护模式下处理器在执行I/O指令时进行许可检查的细节如下所示。 (1)若CPL<=IOPL,则直接转步骤(8);(2)取得I/O位图开始偏移;(3)计算I/O地址对应位所在字节在I/O许可位图内的偏移;(4)计算位偏移以形成屏蔽码值,即计算I/O地址对应位在字节中的第几位;(5)把字节偏移加上位图开始偏移,再加1,所得值与TSS界限比较,若越界,则产生出错码为0的通用保护故障;(6)若不越界,则从位图中读对应字节及下一个字节;(7)把读出的两个字节与屏蔽码进行与运算,若结果不为0表示检查未通过,则产生出错码为0的通用保护故障;(8)进行I/O访问。设某一任务的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;对应I/O端口00H—3FH DB 10000000B ;对应I/O端口40H—47H DB 01100000B ;对用I/O端口48H—4FH DB 8182 DUP(0ffH) ;对应I/O端口50H—0FFFFH DB 0FFH ;位图结束字节TSSLen = $TSSSEG ENDS 再假设IOPL=1,CPL=3。那么如下I/O指令有些能正常执行,有些会引起通用保护异常: in al,21h ;(1)正常执行 in al,47h ;(2)引起异常 out 20h,al ;(3)正常实行 out 4eh,al ;(4)引起异常 in al,20h ;(5)正常执行 out 20h,eax ;(6)正常执行 out 4ch,ax ;(7)引起异常 in ax,46h ;(8)引起异常 in eax,42h ;(9)正常执行 由上述I/O许可检查的细节可见,不论是否必要,当进行许可位检查时,80386总是从I/O许可位图中读取两个字节。目的是为了尽快地执行I/O许可检查。一方面,常常要读取I/O许可位图的两个字节。例如,上面的第(8)条指令要对I/O位图中的两个位进行检查,其低位是某个字节的最高位,高位是下一个字节的最低位。可见即使只要检查两个位,也可能需要读取两个字节。另一方面,最多检查四个连续的位,即最多也只需读取两个字节。所以每次要读取两个字节。这也是在判别是否越界时再加1的原因。为此,为了避免在读取I/O许可位图的最高字节时产生越界,必须在I/O许可位图的最后填加一个全1的字节,即0FFH。此全1的字节应填加在最后一个位图字节之后,TSS界限范围之前,即让填加的全1字节在TSS界限之内。 I/O许可位图开始偏移加8K所得的值与TSS界限值二者中较小的值决定I/O许可位图的末端。当TSS的界限大于I/O许可位图开始偏移加8K时,I/O许可位图的有效部分就有8K字节,I/O许可检查全部根据全部根据该位图进行。当TSS的界限不大于I/O许可位图开始偏移加8K时,I/O许可位图有效部分就不到8K字节,于是对较小I/O地址访问的许可检查根据位图进行,而对较大I/O地址访问的许可检查总被认为不可访问而引起通用保护故障。因为这时会发生字节越界而引起通用保护异常,所以在这种情况下,可认为不足的I/O许可位图的高端部分全为1。利用这个特点,可大大节约TSS中I/O许可位图占用的存储单元,也就大大减小了TSS段的长度。 <二>重要标志保护输入输出的保护与存储在标志寄存器EFLAGS中的IOPL密切相关,显然不能允许随便地改变IOPL,否则就不能有效地实现输入输出保护。类似地,对EFLAGS中的IF位也必须加以保护,否则CLI和STI作为敏感指令对待是无意义的。此外,EFLAGS中的VM位决定着处理器是否按虚拟8086方式工作。 80386对EFLAGS中的这三个字段的处理比较特殊,只有在较高特权级执行的程序才能执行IRET、POPF、CLI和STI等指令改变它们。下表列出了不同特权级下对这三个字段的处理情况。 不同特权级对标志寄存器特殊字段的处理 特权级 VM标志字段 IOPL标志字段 IF标志字段 CPL=0 可变(初POPF指令外) 可变 可变 0 不变 不变 可变 CPL>IOPL 不变 不变 不变 从表中可见,只有在特权级0执行的程序才可以修改IOPL位及VM位;只能由相对于IOPL同级或更内层特权级执行的程序才可以修改IF位。与CLI和STI指令不同,在特权级不满足上述条件的情况下,当执行POPF指令和IRET指令时,如果试图修改这些字段中的任何一个字段,并不引起异常,但试图要修改的字段也未被修改,也不给出任何特别的信息。此外,指令POPF总不能改变VM位,而PUSHF指令所压入的标志中的VM位总为0。 <三>演示输入输出保护的实例(实例九)下面给出一个用于演示输入输出保护的实例。演示内容包括:I/O许可位图的作用、I/O敏感指令引起的异常和特权指令引起的异常;使用段间调用指令CALL通过任务门调用任务,实现任务嵌套。 1.演示步骤实例演示的内容比较丰富,具体演示步骤如下:(1)在实模式下做必要准备后,切换到保护模式;(2)进入保护模式的临时代码段后,把演示任务的TSS段描述符装入TR,并设置演示任务的堆栈;(3)进入演示代码段,演示代码段的特权级是0;(4)通过任务门调用测试任务1。测试任务1能够顺利进行;(5)通过任务门调用测试任务2。测试任务2演示由于违反I/O许可位图规定而导致通用保护异常;(6)通过任务门调用测试任务3。测试任务3演示I/O敏感指令如何引起通用保护异常;(7)通过任务门调用测试任务4。测试任务4演示特权指令如何引起通用保护异常;(8)从演示代码转临时代码,准备返回实模式;(9)返回实模式,并作结束处理。
上传时间: 2013-12-11
上传用户:nunnzhy
文章针对基板材料的介电常数与介电损耗的关系加以论述,并对它们与外部环境的关系做出相应的阐述,使得在PCB的制造中对各种基板材料进行合理正确的评估和使用。
上传时间: 2013-11-13
上传用户:royzhangsz
本书用大量的篇幅讲述了与计算机原理相关的条种编码方法,并通过数字逻辑电路(包括逻辑与开关,逻辑门电路与触发器,二进制加法器等)以及存储器、微处理器的形式、组织及发展阐述了编码的实现。此外,本书还涉及到计算机系统、操作系统、编程语言等的产生及发展,甚至对计算机图形化的相关技术也给了一个全面的描述。阅读本书,相信您会从它图文并茂的编排组织,通俗风趣的语言文字、简练丰富的背景知识中体会到作者超凡的智慧和深邃的学问。本书定会带你去畅游计算机内部世界并和你共同去探索编码的奥秘。本书适合各种技术背景的人阅读,并可作为高等院校计算机或非计算机专业的教材使用
上传时间: 2014-01-16
上传用户:1109003457
每个RFC 3261信息头有一个相应的存取标识. 但是,许多信息头拥有同样的形式。 例如。To和From的信息头都是由显示名和一个URI组成。 To和From信息头用来管理与处理NameAddr实例的. 这个类管理每个信息头类型来负责 解析信息头文本,倘若存储和存取在信息的生存期间,和序列化信息头值为翻译的文本。 下面的表显示了reSIP当前支持的每个RFC信息头的reSIP类型。 reSIP类型是一个SIP信息的信息头调用存取标识作为它的参数的返回类型。
上传时间: 2015-03-20
上传用户:BIBI
函数由一句或多句代码组成,可以实现某个特定的功能。使用函数可以使代码更加易读、易懂,加快编程速度及减少重复代码。过程与函数类似,过程与函数最重要的区别在于,过程没有返回值,而函数能有返回值。 在Delphi 7.0中,已为我们定义好了非常多的函数,大致分类有6种:数据类型转换函数、字符串、数组操作函数、文件、磁盘操作函数、内存、指针操作函数、数学运算函数、日期函数。
上传时间: 2014-01-21
上传用户:gououo