本章将介绍μ’nSP™系列单片机的应用领域,具体讲述SPCE061A单片机在通讯、语音领域里的应用,并详细给出了有关系统的电路原理图、程序流程图以及程序代码,供读者参考。 μ’nSP™家族产品具有电源电压范围和工作速率范围较宽、集成度高、性能价格比高以及功耗低等特点,故其有非常广泛的应用领域。μ’nSP™家族系列产品,涵盖了非常广泛的应用。包括:发音与语音识别的微控制器(SPCE系列)、通信来电辩识应用的微控制器(SPT660x系列)、以及通用型微控制器等等,主要体现在以下几个方面: 用于数字信号处理 用于开发研制便携式移动终端 用于开发嵌入式计算机应用系统 用于数字信号处理1. 数字滤波器 (Digital Filter)数字滤波器是一种计算处理或算法。借助于此,可以将输入的一种数字信号或序列变换为另一种序列输出。数字滤波器已被广泛地应用于数字语音、数字图像处理以及模式识别和频谱分析。数字信号处理器(DSP,Digital Signal Processor)的作用是通过一系列数字来表示信号及其信息,并借助数字计算方法变换和处理这些信号。为了构成DSP,必须有一种部件能够快速地完成两个数值的乘法运算并将乘积累加于寄存器。“快速”意味着乘和累加(MAC,Multiply & ACcumulate)较高的运算速度。若以16位数值进行乘和累加,其结果应为32位。显然,μ’nSP™的硬件结构与其指令系统的结合足以构成DSP应用的硬件MAC单元,因而很适用于一些DSP方面的应用。
上传时间: 2014-01-26
上传用户:qb1993225
设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和 P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系列、Sunplus公司的 SPMC65系列、Microchip公司的PIC系列等,内部都设计了专门用于记录各种复位标志的状态寄存器。MC68HC08系列有一个复位状态寄存器,负责记录6种复位标志位:上电复位、引脚复位、看门狗复位、非法指令复位、非法地址复位和欠压复位。SPMC65系列有一个系统控制寄存器,负责记录5种复位标志位:上电复位、外部复位、看门狗复位、非法地址复位和欠压复位。51兼容的P89LPC900系列有一个复位源寄存器,负责记录6种复位标志位:欠压复位、上电复位、外部复位、看门狗复位、软件复位和UART收到间隔字符复位(主要作为进入ISP监控程序的途径之一)。就连初学者很常用的 AT89S51/52和P89C52X2,也在其电源控制寄存器PCON中增设了一个上电标志位POF。1、 复位标志位的设置方法传统的80C51单片机没有设计复位标志位的记录功能,这应该说是一种遗憾,那么能否通过一定的技术手段来弥补这个缺憾呢?这里给广大80C51单片机用户提供一种启示和引导。实现复位标志位的记录肯定需要一定的硬件电路支持,而这种电路的设计不存在固定模式。笔者利用一片MAX813L设计了一种支撑电路,如图1所示,仅供读者参考。
上传时间: 2013-10-21
上传用户:lhw888
子程序库的使用方法如下:1.将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺点是程序太长,大量无关子程序也包含在其中。 2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。MCS-51 浮点运算子程序库及其使用说明本浮点子程序库有三个不同层次的版本,以便适应不同的应用场合: 1.小型库(FQ51A.ASM):只包含浮点加、减、乘、除子程序。 2.中型库(FQ51B.ASM):在小型库的基础上再增加绝对值、倒数、比较、平方、开平方、 数制转换等子程序。 3.大型库(FQ51.ASM):包含本说明书中的全部子程序。 为便于读者使用本程序库,先将有关约定说明如下: 1.双字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数 据,地址小的单元存放高字节。如果[R0]=1234H,若(R0)=30H,则(30H)=12H,(31H)=34H。 2.二进制浮点操作数:用三个字节表示,第一个字节的最高位为数符,其余七位为 阶码(补码形式),第二字节为尾数的高字节,第三字节为尾数的低字节,尾数用双字节 纯小数(原码)来表示。
上传时间: 2013-10-15
上传用户:wmwai1314
计算机应用中,有时需处理的信息不是数字量,而是一些随时间连续变化的模拟量,甚至是一些非电量,如温度、压力、速度等。模拟量的存储处理困难。首先将非电的模拟信号变成与之对应的模拟电信号,这要通过各种传感器来完成。计算机可处理的信息均是数字量(电脉冲信号)1和0,必须把要处理的模拟电量转换成数字化的电信号,这需要模拟(Analog)与数字(Digital)转换电路。数字到模拟转换:(Digital to Analog Convert, D/A) D/A转换电路是模拟电路加上电子开关。D/A转换电路的核心是一个运算放大器。运算放大器的特性:(Operation Amplifier) K->无穷大, V和->0 传递函数:V0 = -Vi * R0/Ri Ii->0, I和=If梯形R-2R电阻网络D/A转换器Ki受一个8位二进制代码控制 某位为1,对应开关K倒向右边; 某位为0,对应开关K倒向左边。Ki不论倒向哪边,均为接地VA-VH 的电位为: VREF,1/2VREF,..1/128VREFVO= -VREF *(1/2K7+1/4K6+…+1/256K0)V0= -(0-255/256)VREF 8位D/A转换器DAC0830系列器件国家半导体公司(NS)产品,0830、0831、0832。R-2R梯形电阻网络D/A转换器,双缓冲结构。单电源、低功耗、电流建立时间1uS。与微计算机接口方便。8位D/A转换器DAC0830系列器件ILE: 输入锁存允许; WR1#: 加载IN REG; WR2#: 加载DAC REG; XFER#: IN REG传到DAC REG; Iout1,Iout2: 外接OA输入; Rfb: 反馈电阻接OA输出; VREF: 参考电源,控制输出电压变化范围。
标签: AD转换
上传时间: 2013-10-16
上传用户:lu2767
单片机原理及系统设计8×C552是Philips公司的8位高性能增强型单片机,是在MCS-51单片机基础上增加了A/D、D/A、捕捉输入/定时输出、I2C总线接口和监视定时器(Watchdog Timer)等功能,是目前世界上最新型的8位单片机之一。8×C552和MCS-51有相同的指令系统,并在其他功能上与MCS-51完全兼容。本书仍以MCS-51为主线组织教学内容,在MCS-51的组成原理、指令系统、汇编语言程序设计、系统扩张、中断系统和接口等方面保留了第1版的特点,同时也对8×C552的新增功能做了详细叙述和分析,并伴以应用实例。全书共分11章,每章末尾都附有一定数量习题与思考题。本书内容自成体系、结构紧凑、前后呼应、语言通俗,因而具有一定的先进性、系统性和实用性。第1章 微型计算机基础 1.1 微型计算机数制及其转换 1.1.1 微型计算机的数制 1.1.2 微型计算机数制间数的转换 1.2 微型计算机的二进制数运算 1.2.1 算术运算 1.2.2 逻辑运算 1.3 微型计算机码制和编码 1.3.1 微型计算机中数的表示方法 1.3.2 微型计算机的原码、反码和补码 1.3.3 微型计算机的二进制编码 1.4 微型计算机组成原理 1.4.1 微型计算机的基本结构 1.4.2 微型计算机的基本原理 1.4.3 微型计算机系统的组成 1.5 单片微型计算机概述 1.5.1 单片机的分类和发展 1.5.2 单片机的内部结构
上传时间: 2014-01-26
上传用户:xy@1314
单片机应用技术选编(3) 目录 第一章 单片机的综合应用技术1.1 8098单片机存储器的扩展技术1.2 87C196KC单片机的DMA功能1.3 MCS?96系列单片机高精度接口设计1.4 利用PC机的8096软件开发系统1.5 EPROM模拟器及其应用1.6 MCS?51智能反汇编软件的设计与实现1.7 MCS?51系列软件设计与调试中一个值得注意的问题1.8 PL/M语言在微机开发系统中的应用特性1.9 MCS?51单片机开发系统中的断点产生1.10 C语言实型数与单片机浮点数之间数据格式的转换1.11 微机控制系统初始化问题探讨1.12 MCS?51中断系统中的复位问题1.13 工业控制软件的编程原则与编程技巧1.14 CMOS微处理器的功耗特性及其功耗控制原理和应用1.15 基于PLL技术的A/D、D/A转换器的设计1.16 智能仪器监控程序的模块化设计1.17 用软件逻辑开关实现单片机的地址重叠使用1.18 8259A可编程中断控制器与8031单片机接口电路及编程1.19 NSC810及其在各种微处理机中的应用1.20 MC146818在使用中的几个问题1.21 交流伺服系统中采用8155兼作双口信箱存储器的双微机结构1.22 实用汉字库芯片的制作 第二章 新一代存储器及逻辑器件2.1 新一代非易失性记忆元件--闪烁存储器2.2 Flash存储器及应用2.3 随机静态存储器HM628128及应用2.4 非挥发性随机存储器NOVRAM2.5 ASIC的设计方法和设计工具2.6 GAL器件的编程方法及其应用2.7 第三代可编程逻辑器件--高密EPLD辑器件EPLDFPGA设计转换 第三章 数据采集、前向通道与测量技术 3.1 温度传感器通道接口技术 3.2 LM135系列精密温度传感器的原理和应用 3.3 仪表放大器AD626的应用 3.4 5G7650使用中应注意的问题 3.5 用集成运算放大器构成电荷放大器组件 3.6 普通光电耦合器的线性应用 3.7 高线性光耦合型隔离放大器的研制 3.8 一种隔离型16位单片机高精度模拟量接口3.9 单片16位A/D转换器AD7701及其与8031单片机的串行接口3.10 双积分型A/D转换器与MCS?51系列单片机接口的新方法3.11 8031单片机与AD574A/D转换器的最简接口3.12 8098单片机A/D转换接口及其程序设计3.13 提高A/D转换器分辨率的实用方案3.14 用CD4051提高8098单片机内10位A/D转换器分辨率的方法3.15 单片机实现16位高速积分式A/D转换器3.16 434位A/D转换器MAX133(134)的原理及应用3.17 AD574A应用中应注意的问题 3.18 CC14433使用中应注意的问题 3.19 高精度宽范围数据采集系统的温度补偿途径 3.20 缩短ICL7135A/D采样程序时间的一种方法 3.21 用单片机实现的数字式自动增益控制 3.22 自动量程转换电路 3.23 双积分型A/D的自动量程切换电路 3.24 常用双积分型A/D转换器自换程功能的扩展3.25 具有自动量程转换功能的单片机A/D接口3.26 混合型数据采集器SDM857的功能与应用3.27 高速数据采集系统的传输接口3.28 SJ2000方向鉴别位移脉宽频率检测多用途专用集成电路3.29 多路高速高精度F/D专用集成电路3.30 数控带通滤波器的实现及其典型应用 第四章 控制系统与后向通道接口技术4.1 模糊逻辑与模糊控制4.2 自动控制技术的新发展--模糊控制技术4.3 模糊控制表的确定原则4.4 变结构模糊控制系统的实验研究4.5 新型集成模糊数据相关器NLX1124.6 功率固态继电器的应用4.7 双向功率MOS固态继电器4.8 SSR小型固态继电器与PSSR功率参数固态继电器4.9 JGD型多功能固态继电器的原理和应用4.10 光电耦合器在晶闸管触发电路中的应用4.11 一种廉价的12位D/A转换器AD667及接口4.12 利用单片机构成高精度PWM式12位D/A4.13 三相高频PWM模块SLE45204.14 专用集成电路TCA785及其应用4.15 单片温度控制器LM3911的应用4.16 工业测控系统软件设计的若干问题研究 第五章 人机对话通道接口技术5.1 廉价实用的8×8键盘5.2 单片机遥控键盘接口5.3 对8279键盘显示接口的改进5.4 用单片机8031的七根I/O线实现对键盘与显示器的控制5.5 通用8位LED数码管驱动电路ICM7218B5.6 利用条图显示驱动器LM3914组成100段LED显示器的方法5.7 液晶显示器的多极驱动方式5.8 点阵式液晶显示屏的构造与应用5.9 点阵式液晶显示器图形程序设计5.10 DMF5001N点阵式液晶显示器和8098单片机的接口技术5.11 8098单片机与液晶显示控制器HD61830接口5.12 利用PL/M语言对点阵式液晶显示器进行汉字程序设计5.13 语音合成器TMS 5220的开发与应用5.14 制作T6668语音系统的一些技术问题5.15 单片机、单板机在屏显系统中的应用 第六章 多机通讯网络与遥控技术6.1 用双UART构成的可寻址遥测点装置--兼谈如何组成系统6.2 IBM?PC微机与8098单片机的多机通讯6.3 80C196单片机与IBM?PC机的串行通讯6.4 IBM?PC与MCS?51多机通讯的研究6.5 半双工方式传送的单片机多机通信接口电路及软件设计6.6 单片机与IBM/PC机通讯的新型接口及编程6.7 用光耦实现一点对多点的总线式通讯电路6.8 用EPROM作为通讯变换器实现多机通讯6.9 ICL232单电源双RS?232发送/接收器及其应用6.10 DTMF信号发送/接收电路芯片MT8880及应用6.11 通用红外线遥控系统6.12 8031单片机在遥控解码方面的应用 第七章 电源、电压变换及电源监视7.1 用于微机控制系统的高可靠性供电方法7.2 80C31单片机防掉电和抗干扰电源的设计7.3 可编程基准电压源7.4 电源电压监视器件M81953B7.5 检出电压可任意设定的电源电压监测器7.6 低压降(LDO?Low Drop?Out)稳压器7.7 LM317三端可调稳压器应用二例7.8 三端集成稳压器的扩流应用 第八章 可靠性与抗干扰技术8.1 数字电路的可靠性设计实践与体会8.2 单片机容错系统的设计与实现8.3 微机测控系统的接地、屏蔽和电源供给8.4 ATE的抗干扰及接地技术8.5 微处理器监控电路MAX690A/MAX692A8.6 电测仪表电路的实用抗干扰技术8.7 工业镀锌电阻炉温度控制机的抗干扰措施8.8 一种简单的抗干扰控制算法 ? 第九章 综合应用实例9.1 蔬菜灌溉相关参数的自动检测9.2 MH?214溶解氧测定仪9.3 COP840C单片机在液晶线控空调电脑控制器中的应用9.4 单片机在电饭煲中的应用9.5 用PIC单片机制作电扇自然风发生器 第十章 文章摘要 一、 单片机的综合应用技术1.1 摩托罗拉8位单片机的应用和开发1.2 NS公司的COP800系列8位单片机1.3 M68HC11与MCS?51单片机功能比较1.4 8098单片机8M存储空间的扩展技术1.5 80C196KC单片机的外部设备事件服务器1.6 一种多进程实时控制系统的软件设计1.7 开发单片机的结构化高级语言PL/M?961.8 应用软件开发中的菜单接口技术1.9 单片机用户系统EPROM中用户程序的剖析方法1.10 BJS?98硬件、软件典型实验1.11 FORTH语言系统的开发应用1.12 在Transputer系统上用并行C语言编程的特点1.13 一种软件扩展8031内部计数器简易方法1.14 MCS 51系列单片机功能测试方法研究1.15 用CD 4520B设计对称输出分频器的方法1.16 多路模拟开关CC 4051功能扩展方法1.17 条形码技术及其应用系统的设计与实现? 二、 新一代存储器及逻辑器件2.1 一种多功能存储器M6M 72561J2.2 串行E2PROM及其在智能仪器中的应用2.3 新型高性能的AT24C系列串行E2PROM2.4 2K~512K EPROM编程卡2.5 电子盘的设计与实现2.6 NS GAL器件的封装标签、类型代码和编程结构间的关系 三、数据采集、前向通道与测量技术3.1 仪器用精密运放CA3193的应用3.2 集成电压?电流转换器XTR100的应用3.3 瞬时浮点放大器及应用3.4 隔离放大器289J及其应用3.5 ICS?300系列新型加速度传感器3.6 一种实用的压力传感器接口电路3.7 霍尔传感器的应用3.8 一种对多个传感器进行调理的方法3.9 两线制压力变送器3.10 小信号双线变送器XTR101的使用3.11 两线长距离频率传输压力变送器的设计3.12 测温元件AD590及其应用3.13 热敏电阻应用动态3.14 一种组合式A/D、D/A转换器的设计3.15 一种复合式A/D转换器3.16 TLC549串行输出ADC及其应用3.17 提高A/D转换精度的方法--双通道A/D转换3.18 模数转换器ICL7135的0~3.9999V显示3.19 微型光耦合器3.20 一种高精度的分压器电路3.21 利用单片机软件作热电偶非线性补偿3.22 三线制RTD测量电路及应用中要注意的问题3.23 微伏信号高精度检测中极易被忽略的问题3.24 宽范围等分辨率精密测量法3.25 传感器在线校准系统3.26 一种高精度的热敏电阻测温电路3.27 超声波专用集成电路LM1812的原理与应用3.28 旋转变压器数字化检测及其在8098单片机控制伺服系统中的应用3.29 单片集成两端式感温电流源AD590在温度测控系统中的应用?3.30 数字示波器和单片机构成的自动测试系统3.31 霍尔效应式功率测量研究 四、 控制系统与后向通道接口技术4.1 模糊逻辑与模糊控制(实用模糊控制讲座之一)4.2 红绿灯模糊控制器(实用模糊控制讲座之二)4.3 国外模糊技术新产品4.4 交流串级调速双环模糊PI单片机控制系统4.5 时序控制专用集成电路LT156及其应用4.6 电池充电控制集成电路4.7 双向晶闸管4.8 双向可控硅的自触发电路及其应用4.9 微处理器晶闸管频率自适应触发器4.10 F18系列晶闸管模块介绍4.11 集成电路UAA4002的原理及应用4.12 IGBT及其驱动电路4.13 TWH8751应用集锦4.14 结构可变式计算机工业控制系统设计4.15 单片机控制的音响编辑器 五、 人机对话通道接口技术5.1 5×7点阵LED智能显示器的应用5.2 基于8031串行口的LED电子广告牌5.3 点阵液晶显示控制器与计算机的接口技术5.4 单片机控制可编程液晶显示系统5.5 大规模语言集成电路应用综述5.6 最新可编程语言集成电路MSSIO61的应用5.7 用PC打印机接口扩展并行接口 六、 多机系统、网络与遥控技术6.1 用8098单片机构成的分布式测温系统6.2 平衡接口EIA?422和EIA485设计指南6.3 I2C BUS及其系统设计6.4 摩托罗拉可寻址异步接受/发送器6.5 用5V供电的RS232C接口芯片6.6 四通道红外遥控器6.7 TA7333P和TA7657P的功能及应用 七、 电源、电压变换及电源监视7.1 单片机控制的可控硅三相电源调压稳压技术7.2 集成开关电源控制器MC34063的原理及应用7.3 LM299精密基准电压源7.4 集成过压保护器的应用7.5 3V供电的革命7.6 HMOS微机的超低电源电压运行技术 八、 可靠性与抗干扰设计8.1 浅谈舰船电磁兼容与可靠性 九、 综合应用实例9.1 8098单片机交流电气参数测试系统的设计和应用9.2 主轴回转误差补偿控制器9.3 FWK?A型大功率发射台微机控制系统9.4 高性能压控振荡型精密波形发生器ICL8038及应用9.5 单片机COP 840C在洗碗机中的应用
上传时间: 2013-11-10
上传用户:lijinchuan
4位八段数码管的十进制加计数仿真实验,程序采用汇编语言编写。此程序在仿真软件上与EDN-51实验板上均通过。仿真图中的数码管位驱动采用74HC04,如按EDN-51板上用想同的PNP三极管驱动在仿真软件上则无法正常显示。程序共分5块,STAR0为数据初始化,STAR2为计数子程序,STAR3为4位数码管动态显示子程序,STAR4为按键扫描子程序,STS00是延时子程序。由于EDN-51实验板上没装BCD译码器,所以编写程序比较烦琐。 程序如下: ORG 0000H LJMP STAR0 ;转程序 SRAR0ORG 0200H ;程序地址 0200HSTAR0: CLR 00 ;位 00 清 0 MOV P1,#0FFH ;#0FFH-->P1 MOV P2,#0FH ;#0FH-->P2 MOV P0,#0FFH ;#0FFH-->P0 MOV 30H,#00H ;#00H-->30H MOV 31H,#00H ;#00H-->30H MOV 32H,#00H ;#00H-->30H MOV 33H,#00H ;#00H-->30H LJMP STAR3 ;转程序 SRAR3STAR2: MOV A,#0AH ;#0AH-->A INC 30H ;30H+1 CJNE A,30H,STJE ;30H 与 A 比较,不等转移 STJE MOV 30H,#00H ;#00H-->30H INC 31H ;31H+1 CJNE A,31H,STJE ;31H 与 A 比较,不等转移 STJE MOV 31H,#00H ;#00H-->31H INC 32H ;32H+1 CJNE A,32H,STJE ;32H 与 A 比较,不等转移 STJE MOV 32H,#00H ;#00H-->32H INC 33H ;33H+1 CJNE A,33H,STJE ;33H 与 A 比较,不等转移 STJE MOV 33H,#00H ;#00H-->33H MOV 32H,#00H ;#00H-->32H MOV 31H,#00H ;#00H-->31H MOV 30H,#00H ;#00H-->30HSTJE: RET ;子程序调用返回STAR3: MOV R0,#30H ;#30H-->R0 MOV R6,#0F7H ;#0F7H-->R6SMG0: MOV P1,#0FFH ;#0FFH-->P1 MOV A,R6 ;R6-->A MOV P1,A ;A-->P1 RR A ;A向右移一位 MOV R6,A ;A-->R6 MOV A,@R0 ;@R0-->A ADD A,#04H ;#04H-->A MOVC A,@A+PC ;A+PC--> MOV P0,A ;A-->P0 AJMP SMG1 ;转程序 SMG1SDATA: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H SMG1: LCALL STAR4 ;转子程序 SRAR4 LCALL STS00 ;转子程序 STS00 INC R0 ;R0+1 CJNE R6,#07FH,SMG0 ;#07FH 与 R6 比较,不等转移 SMG0 AJMP STAR3 ;转程序 SRAR3STAR4: JNB P2.0,ST1 ;P2.0=0 转 ST1 CLR 00 ;位 00 清 0 SJMP ST3 ;转ST3ST1: JNB 00,ST2 ;位 00=0 转 ST2 SJMP ST3 ;转 ST3ST2: LCALL STAR2 ;调子程序 STAR2 SETB 00 ;位 00 置 1ST3: RET ;子程序调用返回ORG 0100H ;地址 0100HSTS00: MOV 60H,#003H ;#003H-->60H (211)DE001: MOV 61H,#0FFH ;#0FFH-->61H (255)DE002: DJNZ 61H,DE002 ;61H 减 1 不等于 0 转 DE002 DJNZ 60H,DE001 ;60H 减 1 不等于 0 转 DE001 RET ;子程序调用返回 END ;结束 上次的程序共有293句,经小组成员建议,本人经几天的研究写了下面的这个程序,现在的程序用了63句,精简了230句。功能没有减。如谁有更简练的程序,请发上来,大家一起学习。 4位八段数码管的十进制加计数仿真实验(含电路图和仿真文件)
上传时间: 2013-10-11
上传用户:sssl
九.输入/输出保护为了支持多任务,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
6位LED显示接口说明:P0.0---P0.7 通过7406 驱动LED的8个段;P2.0---P2.5 通过UN2003驱动6个LED 的公共端
上传时间: 2013-10-26
上传用户:VRMMO
基于CAN总线的智能寻位制造系统 智能寻位制造系统的组成网络化智能寻位制造系统的概念是将智能寻位,工艺规划# 加工信息生成# 加工设备控制等分布于制造系统中不同物理位置的独立单元! 借助实时控制网络集成为一有机整体! 从而实现单元间的高速信息交换! 并通过管理计算机中的动态调度软件! 协调整个系统的高效运行" 据此思路构成的网络化智能寻位制造系统的总体结构如图所示.
上传时间: 2013-11-13
上传用户:wdq1111