6.1 存储器概述1、存储器定义 在微机系统中凡能存储程序和数据的部件统称为存储器。2、存储器分类 微机系统中的存储器分为内存和外存两类。3、内存储器的组成 微机系统中的存储器由半导体存储器芯片组成。 单片机内部有存储器,当单片机内部的存储器不够用时,可以外扩存储器。外扩的存储器就是由半导体存储器芯片组成的。 当用半导体存储器芯片组成内存时必须满足个要求:①每个存储单元一定要有8个位。②存储单元的个数满足系统要求。注意:内存的容量是指它所含存储单元的个数(每个存储单元一定要有8个位,可以存储8位二进制信息)。6.2 半导体存储器由于集成工艺水平的限制,一个半导体存储器芯片上所集成的单元个数和每个单元的位数有限,用它构成内存时必须满足:内存容量和一个存储单元有8个位的要求,因此内存常常由多个半导体存储器芯片构成。 半导体存储器芯片的存储容量是指其上所含的基本存储电路的个数,用单元个数×位数表示。掌握:① 已知内存容量和半导体存储器芯片的容量,求用半导体存储器芯片构成内存时需要的芯片个数。② 内存的容量=末地址—首地址+1 半导体存储器芯片分成ROM和RAM两类。6.2.1 ROM芯片6.2.2 RAM芯片6.3 MCS-51单片机存储器扩展 在微机系统中存储器是必不可少。MCS51系列单片机内部的存储器不够用时需要外扩半导体存储器芯片,外扩的半导体存储器芯片与MCS51系列单片机通过三总线交换信息。二者连接时必须考虑如下问题:1.二者地址线、数据线、控制线的连接。2.工作速度的匹配。CPU在取指令和存储器读或写操作时,是有固定时序的,用户要根据这些来确定对存储器存取速度的要求,或在存储器已经确定的情况下,考虑是否需要Tw周期,以及如何实现。3.片选信号的产生。目前生产的存储器芯片,单片的容量仍然是有限的,通常总是要由许多片才能组成一个存储器,这里就有一个如何产生片选信号的问题。4.CPU的驱动能力 。在设计CPU芯片时,一般考虑其输出线的直流负载能力,为带一个TTL负载。现在的存储器一般都为MOS电路,直流负载很小,主要的负载是电容负载,故在小型系统中,CPU是可以直接与存储器相连的,而较大的系统中,若CPU的负载能力不能满足要求,可以(就要考虑CPU能否带得动,需要时就要加上缓冲器,)由缓冲器的输出再带负载。6.3.1 ROM芯片的扩展6.3.2 RAM芯片的扩展
标签: 存储器接口
上传时间: 2013-11-22
上传用户:moerwang
单片机原理与应用教程采用教、学、做相结合的模,以理论为基础、着眼应用,系统详尽地介绍了单片机应用技术所需的基本知识和技能。全书共分9章,包括MCS-51系列单片机的硬件结构、工作原理、指令系统、接口技术、串行通信、中断系统、语言程序设计及各功能部件的组成和应用等。通过学习这些内容,可对MCS-51系列单片机有一个总体的概念和认识,并在掌握基本硬件的基础上用软件实现其功能。 第1章 MCS-51单片机系统结构1.1 单片机概述1.2 MCS-51单片机结构简介1.3 并行I/O接口1.4 单片机的复位电路与时钟电路1.5 单片机的工作方式1.6 构建MCS-51型单片机的最小系统本章小结习题第2章 MCS-51指令系统与程序设计2.1 概述2.2 寻址方式2.3 指令系统2.4 汇编程序设计本章小结 习题第3章 单片机的定时与中断系统3.1 定时器/计数器3.2 中断系统3.3 单片机中断与定时器/计数器的应用训练本章小结习题第4章 串行通信技术4.1 串行通信概念4.2 MCS-51串行通信接口4.3 串行口的扩展应用4.4 串行通信的应用本章小结习题第5章 单片机的系统扩展技术5.1 程序存储器的扩展5.2 数据存储器的扩展5.3 TTL芯片扩展I/O并行接口的应用训练5.4 Intel系列可编程序接口芯片5.5 8155/8156可编程I/O接口应用训练5.6 8253/8254可编程定时器/计数器的应用训练……第6章 单片机接口实用技术及应用第7章 单片机开发系统第8章 单片机应和系统的设计方法第9章 单片机高级语言C51的应用
上传时间: 2013-10-28
上传用户:tzrdcaabb
单片机模糊模糊控制是目前在控制领域所采用的三种智能控制方法中最具实际意义的方法。模糊控制的采用解决了大量过去人们无法解决的问题,并且在工业控制、家用电器和各个领域已取得了令人触目的成效。本书是一本系统地介绍模糊控制的理论、技术、方法和应用的著作;内容包括模糊控制基础、模糊控制器、模糊控制系统、模糊控制系统的稳定性、模糊控制系统的开发软件,用单片微型机实现模糊控制的技术和方法,模糊控制在家用电器和工业上应用的实际例子;反映了模糊控制目前的水平。 单片机模糊模糊控制目录 : 第一章 模糊逻辑、神经网络集成电路的发展 1.1 模糊逻辑及其集成电路的发展1.1.1 模糊逻辑的诞生和发展1.1.2 模糊集成电路的发展进程1.2 神经网络及其集成电路的发展1.2.1 神经网络的形成历史1.2.2 神经网络集成电路的发展1.3 模糊逻辑和神经网络的结合1.3.1 模糊逻辑和神经网络结合的意义1.3.2 模糊逻辑和神经网络结合的前景第二章 模糊逻辑及其理论基础 2.1 模糊集合与隶属函数2.1.1 模糊集合概念2.1.2 隶属函数2.1.3 分解定理与扩张定理2.1.4 模糊数2.2 模糊关系、模糊矩阵与模糊变换2.2.1 模糊关系2.2.2 模糊矩阵2.2.3 模糊变换2.3模糊逻辑和函数2.3.1模糊命题2.3.2模糊逻辑2.3.3模糊逻辑函数2.4模糊语言2.4.1 语言及语言的模糊性2.4.2 模糊语言2.4.3 语法规则和算子2.4.4 模糊条件语句2.5 模糊推理2.5.1 模糊推理的CRI法2.5.2 模糊推理的TVR法2.5.3 模糊推理的直接法2.5.4 模糊推理的精确值法2.5.5 模糊推理的强度转移法第三章 模糊控制基础 3.1 模糊控制的系统结构3.2 精确量的模糊化3.2.1 语言变量的分档3.2.2 语言变量值的表示方法3.2.3 精确量转换成模糊量3.3 模糊量的精确化3.3.1 最大隶属度法3.3.2 中位数法3.3.3 重心法3.4 模糊控制规则及控制算法3.4.1 模糊控制规则的格式3.4.2 模糊控制规则的生成3.4.3 模糊控制规则的优化3.4.4 模糊控制算法3.5 模糊控制的神经网络方法3.5.1 神经元和神经网络3.5.2 神经网络的分布存储和容错性3.5.3 神经网络的学习算法3.5.4 神经网络实现的模糊控制3.5.5 神经网络构造隶属函数3.5.6 神经网络存储控制规则3.5.7 神经网络实现模糊化、反模糊化第四章 模糊控制器 4.1 模糊控制器结构4.2 模糊控制器设计4.2.1 常规模糊控制器设计4.2.2 变结构模糊控制器设计4.2.3 自组织模糊控制器设计4.2.4 自适应模糊控制器设计4.3 模糊控制器的数学模型4.3.1 常规模糊控制器的数学模型4.3.2 模糊控制器数学模型的建立第五章 模糊控制系统 5.1 模糊系统的辨识和建模5.1.1 模糊系统辨识的数学基础5.1.2 基于模糊关系方程的模糊模型辨识5.1.3 基于语言控制规则的模糊模型辨识5.2 模糊控制系统的设计5.2.1 模糊控制系统的一般设计过程5.2.2 模糊控制系统的典型设计5.3 模糊控制系统的稳定性5.3.1 稳定性分析的Lyapunov直接法5.3.2 语言规则描述的模糊控制系统的稳定性5.3.3 关系方程描述的模糊控制系统的稳定性第六章 数字单片机与模糊控制6.1 数字单片机MC68HC705P96.1.1 MC68HC705P9单片机性能概论6.1.2 MC68HC705P9单片机基本结构6.1.3 MC68HC705P9指令系统6.2 数字单片机模糊控制方式6.2.1 数字单片机与模糊控制关系6.2.2 数字单片机模糊控制方式第七章 模糊单片机与模糊控制7.1 模糊单片机NLX2307.1.1 模糊单片机NLX230性能概况7.1.2 NLX230的结构及引脚7.1.3 NLX230的模糊推理方式7.1.4 NLX230的内部寄存器7.1.5 NLX230的操作及接口技术7.2 NLX230开发系统7.3 NLX230应用例子第八章 模糊控制的开发软件8.1 模糊推理机原理8.2 模糊推理机的算法8.3 模糊推理机结构和清单8.4 模糊逻辑知识基发生器8.5 模糊推理开发环境8.5.1 FIDE的工作条件8.5.2 FIDE的结构8.5.3 FIDE的工作过程第九章 模糊控制在家用电器中的应用9.1 模糊控制的电冰箱9.1.1 电冰箱模糊控制系统结构9.1.2 模糊控制规则和模糊量9.1.3 控制系统的电路结构9.1.4 控制规则的自调整9.2 模糊控制的电饭锅9.2.1 煮饭的工艺过程曲线9.2.2 模糊控制的逻辑结构9.2.3 模糊量和模糊推理9.2.4 控制软件框图9.3 模糊控制的微波炉9.3.1 控制电路的结构框图9.3.2 微波炉的模糊量与推理9.3.3 微波炉控制电路结构原理9.3.4 控制软件原理及框图9.4 模糊控制的洗衣机9.4.1 模糊洗衣机控制系统逻辑结构9.4.2 模糊洗衣机的模糊推理9.4.3 洗衣机物理量检测方法9.4.4 布质和布量的模糊推理第十章 模糊控制在工程上的应用10.1 模糊参数自适应PID控制器10.1.1 自校正PID控制器10.1.2 模糊参数自适应PID控制系统结构10.1.3 模糊控制规则的产生10.1.4 模糊推理机理及运行结果10.2 恒温炉模糊控制10.2.1 恒温炉模糊控制的系统结构10.2.2 模糊控制器及控制规则的形成10.2.3 模糊控制器的校正10.3 感应电机模糊矢量控制10.3.1 模糊矢量控制系统结构10.3.2 矢量控制的基本原理10.3.3 模糊电阻观测器10.3.4 模糊控制器及运行
上传时间: 2014-12-28
上传用户:semi1981
AVR高速嵌入式单片机原理与应用(修订版)详细介绍ATMEL公司开发的AVR高速嵌入式单片机的结构;讲述AVR单片机的开发工具和集成开发环境(IDE),包括Studio调试工具、AVR单片机汇编器和单片机串行下载编程;学习指令系统时,每条指令均有实例,边学习边调试,使学习者看得见指令流向及操作结果,真正理解每条指令的功能及使用注意事项;介绍AVR系列多种单片机功能特点、实用程序设计及应用实例;作为提高篇,讲述简单易学、适用AVR单片机的高级语言BASCOMAVR及ICC AVR C编译器。 AVR高速嵌入式单片机原理与应用(修订版) 目录 第一章ATMEL单片机简介1.1ATMEL公司产品的特点11.2AT90系列单片机简介21.3AT91M系列单片机简介2第二章AVR单片机系统结构2.1AVR单片机总体结构42.2AVR单片机中央处理器CPU62.2.1结构概述72.2.2通用寄存器堆92.2.3X、Y、Z寄存器92.2.4ALU运算逻辑单元92.3AVR单片机存储器组织102.3.1可下载的Flash程序存储器102.3.2内部和外部的SRAM数据存储器102.3.3EEPROM数据存储器112.3.4存储器访问和指令执行时序112.3.5I/O存储器132.4AVR单片机系统复位162.4.1复位源172.4.2加电复位182.4.3外部复位192.4.4看门狗复位192.5AVR单片机中断系统202.5.1中断处理202.5.2外部中断232.5.3中断应答时间232.5.4MCU控制寄存器 MCUCR232.6AVR单片机的省电方式242.6.1休眠状态242.6.2空闲模式242.6.3掉电模式252.7AVR单片机定时器/计数器252.7.1定时器/计数器预定比例器252.7.28位定时器/计数器0252.7.316位定时器/计数器1272.7.4看门狗定时器332.8AVR单片机EEPROM读/写访问342.9AVR单片机串行接口352.9.1同步串行接口 SPI352.9.2通用串行接口 UART402.10AVR单片机模拟比较器452.10.1模拟比较器452.10.2模拟比较器控制和状态寄存器ACSR462.11AVR单片机I/O端口472.11.1端口A472.11.2端口 B482.11.3端口 C542.11.4端口 D552.12AVR单片机存储器编程612.12.1编程存储器锁定位612.12.2熔断位612.12.3芯片代码612.12.4编程 Flash和 EEPROM612.12.5并行编程622.12.6串行下载662.12.7可编程特性67第三章AVR单片机开发工具3.1AVR实时在线仿真器ICE200693.2JTAG ICE仿真器693.3AVR嵌入式单片机开发下载实验器SL?AVR703.4AVR集成开发环境(IDE)753.4.1AVR Assembler编译器753.4.2AVR Studio773.4.3AVR Prog783.5SL?AVR系列组态开发实验系统793.6SL?AVR*.ASM源文件说明81第四章AVR单片机指令系统4.1指令格式844.1.1汇编指令844.1.2汇编器伪指令844.1.3表达式874.2寻址方式894.3数据操作和指令类型924.3.1数据操作924.3.2指令类型924.3.3指令集名词924.4算术和逻辑指令934.4.1加法指令934.4.2减法指令974.4.3乘法指令1014.4.4取反码指令1014.4.5取补指令1024.4.6比较指令1034.4.7逻辑与指令1054.4.8逻辑或指令1074.4.9逻辑异或指令1104.5转移指令1114.5.1无条件转移指令1114.5.2条件转移指令1144.6数据传送指令1354.6.1直接数据传送指令1354.6.2间接数据传送指令1374.6.3从程序存储器直接取数据指令1444.6.4I/O口数据传送指令1454.6.5堆栈操作指令1464.7位指令和位测试指令1474.7.1带进位逻辑操作指令1474.7.2位变量传送指令1514.7.3位变量修改指令1524.7.4其它指令1614.8新增指令(新器件)1624.8.1EICALL-- 延长间接调用子程序1624.8.2EIJMP--扩展间接跳转1634.8.3ELPM--扩展装载程序存储器1644.8.4ESPM--扩展存储程序存储器1644.8.5FMUL--小数乘法1664.8.6FMULS--有符号数乘法1664.8.7FMULSU--有符号小数和无符号小数乘法1674.8.8MOVW--拷贝寄存器字1684.8.9MULS--有符号数乘法1694.8.10MULSU--有符号数与无符号数乘法1694.8.11SPM--存储程序存储器170 第五章AVR单片机AT90系列5.1AT90S12001725.1.1特点1725.1.2描述1735.1.3引脚配置1745.1.4结构纵览1755.2AT90S23131835.2.1特点1835.2.2描述1845.2.3引脚配置1855.3ATmega8/8L1855.3.1特点1865.3.2描述1875.3.3引脚配置1895.3.4开发实验工具1905.4AT90S2333/44331915.4.1特点1915.4.2描述1925.4.3引脚配置1945.5AT90S4414/85151955.5.1特点1955.5.2AT90S4414和AT90S8515的比较1965.5.3引脚配置1965.6AT90S4434/85351975.6.1特点1975.6.2描述1985.6.3AT90S4434和AT90S8535的比较1985.6.4引脚配置2005.6.5AVR RISC结构2015.6.6定时器/计数器2125.6.7看门狗定时器 2175.6.8EEPROM读/写2175.6.9串行外设接口SPI2175.6.10通用串行接口UART2175.6.11模拟比较器 2175.6.12模数转换器2185.6.13I/O端口2235.7ATmega83/1632285.7.1特点2285.7.2描述2295.7.3ATmega83与ATmega163的比较2315.7.4引脚配置2315.8ATtiny10/11/122325.8.1特点2325.8.2描述2335.8.3引脚配置2355.9ATtiny15/L2375.9.1特点2375.9.2描述2375.9.3引脚配置2395 .10ATmega128/128L2395.10.1特点2405.10.2描述2415.10.3引脚配置2435.10.4开发实验工具2455.11ATmega1612465.11.1特点2465.11.2描述2475.11.3引脚配置2475.12AVR单片机替代MCS51单片机249第六章实用程序设计6.1程序设计方法2506.1.1程序设计步骤2506.1.2程序设计技术2506.2应用程序举例2516.2.1内部寄存器和位定义文件2516.2.2访问内部 EEPROM2546.2.3数据块传送2546.2.4乘法和除法运算应用一2556.2.5乘法和除法运算应用二2556.2.616位运算2556.2.7BCD运算2556.2.8冒泡分类算法2556.2.9设置和使用模拟比较器2556.2.10半双工中断方式UART应用一2556.2.11半双工中断方式UART应用二2566.2.128位精度A/D转换器2566.2.13装载程序存储器2566.2.14安装和使用相同模拟比较器2566.2.15CRC程序存储的检查2566.2.164×4键区休眠触发方式2576.2.17多工法驱动LED和4×4键区扫描2576.2.18I2C总线2576.2.19I2C工作2586.2.20SPI软件2586.2.21验证SLAVR实验器及AT90S1200的口功能12596.2.22验证SLAVR实验器及AT90S1200的口功能22596.2.23验证SLAVR实验器及具有DIP40封装的口功能第七章AVR单片机的应用7.1通用延时子程序2607.2简单I/O口输出实验2667.2.1SLAVR721.ASM 2667.2.2SLAVR722.ASM2677.2.3SLAVR723.ASM2687.2.4SLAVR724.ASM2707.2.5SLAVR725.ASM2717.2.6SLAVR726.ASM2727.2.7SLAVR727.ASM2737.3综合程序2747.3.1LED/LCD/键盘扫描综合程序2747.3.2LED键盘扫描综合程序2757.3.3在LED上实现字符8的循环移位显示程序2757.3.4电脑放音机2777.3.5键盘扫描程序2857.3.6十进制计数显示2867.3.7廉价的A/D转换器2897.3.8高精度廉价的A/D转换器2947.3.9星星灯2977.3.10按钮猜数程序2987.3.11汉字的输入3047.4复杂实用程序3067.4.110位A/D转换3067.4.2步进电机控制程序3097.4.3测脉冲宽度3127.4.4LCD显示8字循环3187.4.5LED电脑时钟3247.4.6测频率3307.4.7测转速3327.4.8AT90S8535的A/D转换334第八章BASCOMAVR的应用8.1基于高级语言BASCOMAVR的单片机开发平台3408.2BASCOMAVR软件平台的安装与使用3418.3AVR I/O口的应用3458.3.1LED发光二极管的控制3458.3.2简易手控广告灯3468.3.3简易电脑音乐放音机3478.4LCD显示器3498.4.1标准LCD显示器的应用3498.4.2简单游戏机--按钮猜数3518.5串口通信UART3528.5.1AVR系统与PC的简易通信3538.5.2PC控制的简易广告灯3548.6单总线接口和温度计3568.7I2C总线接口和简易IC卡读写器359第九章ICC AVR C编译器的使用9.1ICC AVR的概述3659.1.1介绍ImageCraft的ICC AVR3659.1.2ICC AVR中的文件类型及其扩展名3659.1.3附注和扩充3669.2ImageCraft的ICC AVR编译器安装3679.2.1安装SETUP.EXE程序3679.2.2对安装完成的软件进行注册3679.3ICC AVR导游3689.3.1起步3689.3.2C程序的剖析3699.4ICC AVR的IDE环境3709.4.1编译一个单独的文件3709.4.2创建一个新的工程3709.4.3工程管理3719.4.4编辑窗口3719.4.5应用构筑向导3719.4.6状态窗口3719.4.7终端仿真3719.5C库函数与启动文件3729.5.1启动文件3729.5.2常用库函数3729.5.3字符类型库3739.5.4浮点运算库3749.5.5标准输入/输出库3759.5.6标准库和内存分配函数3769.5.7字符串函数3779.5.8变量参数函数3799.5.9堆栈检查函数3799.6AVR硬件访问的编程3809.6.1访问AVR的底层硬件3809.6.2位操作3809.6.3程序存储器和常量数据3819.6.4字符串3829.6.5堆栈3839.6.6在线汇编3839.6.7I/O寄存器3849.6.8绝对内存地址3849.6.9C任务3859.6.10中断操作3869.6.11访问UART3879.6.12访问EEPROM3879.6.13访问SPI3889.6.14相对转移/调用的地址范围3889.6.15C的运行结构3889.6.16汇编界面和调用规则3899.6.17函数返回非整型值3909.6.18程序和数据区的使用3909.6.19编程区域3919.6.20调试3919.7应用举例*3929.7.1读/写口3929.7.2延时函数3929.7.3读/写EEPROM3929.7.4AVR的PB口变速移位3939.7.5音符声程序3939.7.68字循环移位显示程序3949.7.7锯齿波程序3959.7.8正三角波程序3969.7.9梯形波程序396附录1AT89系列单片机简介398附录2AT94K系列现场可编程系统标准集成电路401附录3指令集综合404附录4AVR单片机选型表408参 考 文 献412
上传时间: 2013-11-08
上传用户:xcy122677
mcs-51单片机应用教程以MCS-51系列单片机为主线,从实用的角度出发,通过介绍大量单片机技能训练实例和应用实例,指导读者学习和使用单片机。《MCS-51单片机应用教程》分为基础篇和应用篇两大部分。基础篇讲述单片机的基础知识,包括单片机原理与结构、指令系统、定时与中断、串行通信等。应用篇包括单片机的基础训练和应用实例两部分。《MCS-51单片机应用教程》各章节由浅入深,前后呼应,使读者能够在理解掌握单片机原理的基础上,很快学会单片机的使用。 MCS-51单片机应用教程 目录 第1篇 基础篇 第1章 MCS-51单片机系统结构 1.1 概述 1.2 单片机的内部结构 1.3 单片机的存储器结构 1.4 单片机并行I/O口 1.5 单片机的复位电路 1.6 单片机的时钟与时序 第2章 单片机的指令系统 2.1 指令系统概述 2.2 寻址方式 2.3 指令功能介绍 第3章 单片机的中断系统与定时器/计数器 3.1 中断系统 3.2 单片机的定时器/计数器 3.3 外部中断源的扩展 第4章 单片机的串行通信 4.1 串行通信的概念 4.2 MCS-51串行口的结构及工作方式 4.3 串行通信的应用 第2篇 应用篇 第5章 单片机实用开发步骤 5.1 单片机应用系统设计的一般流程 5.2 单片机汇编程序的编辑方法 5.3 源程序的编译
上传时间: 2013-11-12
上传用户:qingdou
随着单片机性能不断提高而价格却不断下降, 单片机控制在越来越多的领域得以应用。按照传统的模式, 在整个项目开发过程中, 先根据控制系统要求设计原理图, PCB 电路图绘制, 电路板制作, 元器件的焊接, 然后进行软件编程, 通过仿真器对系统硬件和软件调试, 最后将调试成功的程序固化到单片机中。这一过程中的主要问题是, 应用程序需要在硬件完成的情况下才能进行调试。虽然有的软件可以进行模拟调试, 但是对于一些复杂的程序如人机交互程序, 在没有硬件的时候, 没有界面的真实感, 给调试带来困难。在软硬件的配合中如需要修改硬件, 要重新制板, 在时间和投入上带来很大的麻烦。纵观整个过程, 无论是从硬件成本上, 还是从调试周期上, 传统开发模式的效率有待提高。能否只使用一种开发工具兼顾仿真, 调试, 制板, 以及最大限度的软件模拟来作为单片机的开发平台, 用它取代编程器、仿真器、成品前的硬件测试等工作是广大单片机开发者的梦想。 PROTEUS 软件介绍为了更加直观具体地说明Proteus 软件的实用价值, 本文以一具体的TAXI 的计价器和计时器电路板的设计过程为例。其电路板要实现的功能是:㈠计时功能(相当于时钟);㈡里程计价功能:两公里以内价格为4 元, 以后每一公里加0.7 元, 不足一公里取整(如10.3 公里取11 公里);㈢通过键盘输入里程, 模拟计算里程费, 实现Y= (X- 2)*0.7+4 的简单计算。基于上述功能, 选用ATMEL 公司生产的通用芯片AT89C51 单片机构成应用系统。AT89C51 是内含8 位4K 程序存储器, 128B 数据存储器, 2 个定时器/计数器的通用芯片。系统开发环境采用ProteusISIS 6。2.1 计价器模拟系统硬件构成系统主要由一个AT89C51 单片机、74LS373、74LS240、矩阵键盘、4 位7 段数码管等组成。通用AT89C51 单片机芯片作为整个电路的核心部分、74LS373 作为LED 段选控制、74LS240四路反相器则为4 位共阴极7 段数码管提供位选通信号、矩阵键盘输入控制信号。
上传时间: 2013-11-09
上传用户:木子叶1
九.输入/输出保护为了支持多任务,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
Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践详细介绍了KeilCx51V7.机C语言编译器和全新Windows集成开发环境μVision2的强大功能和具体使用方法。全面介绍了最新版本Cx51编译器新增加的控制命令,给出了全部Cx51运行库函数及其应用范例,对KeilCx51软件包中各种应用工具,如BL51/Lx51连接定位器、A51/Ax51宏汇编器、LIB51库管理程序以及OH51符号转换程序等都作了详细介绍,还介绍了单片机实时多任务操作系统RTX51及其子集RTX51TINY的具体功能与应用方法。μVision2已经将调试器功能集成于其中,用户可以在单一环境下完成从源程序编写、编译、连接定位一直到目标文件的仿真调试等全部工作,书中详细介绍了μVision2各种功能和应用,包括软件模拟调试和硬件目标板实时在线仿真。第1章 851单片机与KeilCx51基础 1.1 851单片机的存储器组织结构 1.2 KeilCx51开发工具 1.3 Cx51简单编程与调试第2章 Cx51程序设计基础 2.1 标识符与关键字 2.2 Cx51程序设计的基本语法 2.2.1 数据类型 2.2.2 常量 2.2.3 变量及其存储模式 2.2.4 用typedef重新定义数据类型 2.2.5 运算符与表达式 2.3 Cx51程序的基本语句 2.3.1 表达式语句 2.3.2 复合语句 2.3.3 条件语句 2.3.4 开关语句 2.3.5 循环语句 2.3.6 返回语句第3章 函数 3.1 函数的定义; 3.2 函数的调用 3.2.1 函数的调用形式 3.2.2 对被调用函数的说明 3.2.3 函数的参数和函数的返回值 3.2.4 实际参数的传递方式 3.3 函数的递归调用与再入函数
上传时间: 2014-01-16
上传用户:edisonfather
C8051F040/1/2/3/4/5/6/7混合信号ISP FLASH 微控制器数 据 手 册 C8051F04x 系列器件是完全集成的混合信号片上系统型MCU,具有64 个数字I/O 引脚(C8051F040/2/4/6)或32 个数字I/O 引脚(C8051F041/3/5/7),片内集成了一个CAN2.0B 控制器。下面列出了一些主要特性;有关某一产品的具体特性参见表1.1。 高速、流水线结构的8051 兼容的CIP-51 内核(可达25MIPS) 控制器局域网(CAN2.0B)控制器,具有32 个消息对象,每个消息对象有其自己的标识 全速、非侵入式的在系统调试接口(片内) 真正12 位(C8051F040/1)或10 位(C8051F042/3/4/5/6/7)、100 ksps 的ADC,带PGA 和8 通道模拟多路开关 允许高电压差分放大器输入到12/10 位ADC(60V 峰-峰值),增益可编程 真正8 位500 ksps 的ADC,带PGA 和8 通道模拟多路开关(C8051F040/1/2/3) 两个12 位DAC,具有可编程数据更新方式(C8051F040/1/2/3) 64KB(C8051F040/1/2/3/4/5)或32KB(C8051F046/7)可在系统编程的FLASH 存储器 4352(4K+256)字节的片内RAM 可寻址64KB 地址空间的外部数据存储器接口 硬件实现的SPI、SMBus/ I2C 和两个UART 串行接口 5 个通用的16 位定时器 具有6 个捕捉/比较模块的可编程计数器/定时器阵列 片内看门狗定时器、VDD 监视器和温度传感器具有片内VDD 监视器、看门狗定时器和时钟振荡器的C8051F04x 系列器件是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使能/禁止和配置。FLASH 存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051 固件。片内JTAG 调试电路允许使用安装在最终应用系统上的产品MCU 进行非侵入式(不占用片内资源)、全速、在系统调试。该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。在使用JTAG 调试时,所有的模拟和数字外设都可全功能运行。每个MCU 都可在工业温度范围(-45℃到+85℃)工作,工作电压为2.7 ~ 3.6V。端口I/O、/RST和JTAG 引脚都容许5V 的输入信号电压。C8051F040/2/4/6 为100 脚TQFP 封装(见图1.1 和图1.3的框图)。C8051F041/3/5/7 为64 脚TQFP 封装(见图1.2 和图1.4 的框图)。
上传时间: 2013-10-24
上传用户:hwl453472107
第1章 单片机系统概述1.1 AVR系列单片机的特点1.2 AT90系列单片机简介第2章 AT90LS8535单片机的基础知识2.1 AT90LS8535单片机的总体结构2.1.1 AT90LS8535单片机的中央处理器2.1.2 AT90LS8535单片机的存储器组织2.1.3 AT90LS8535单片机的I/O接口2.1.4 AT90LS8535单片机的内部资源2.1.5 AT90LS8535单片机的时钟电路2.1.6 AT90LS8535单片机的系统复位2.1.7 AT90LS8535单片机的节电方式2.1.8 AT90LS8535单片机的芯片引脚2.2 AT90LS8535单片机的指令系统2.2.1 汇编指令格式2.2.2 寻址方式2.2.3 伪指令2.2.4 指令类型及数据操作方式2.3 应用程序设计2.3.1 程序设计方法2.3.2 应用程序举例第3章 AT90LS8535单片机的C编程3.1 支持高级语言编程的AVR系列单片机3.2 AVR的C编译器3.3 ICC AVR介绍3.3.1 安装ICC AVR3.3.2 设置ICC AVR3.4 用ICC AVR编写应用程序3.5 下载程序文件第4章 数据类型、运算符和表达式4.1 ICC AVR支持的数据类型4.2 常量与变量4.2.1 常量4.2.2 变量4.3 AT90LS8535的存储空间4.4 算术和赋值运算4.4.1 算术运算符和算术表达式4.4.2 赋值运算符和赋值表达式4.5 逻辑运算4.6 关系运算4.7 位操作4.7.1 位逻辑运算4.7.2 移位运算4.8 逗号运算第5章 控制流5.1 C语言的结构化程序设计5.1.1 顺序结构5.1.2 选择结构5.1.3 循环结构5.2 选择语句5.2.1 if语句5.2.2 switch分支5.2.3 选择语句的嵌套5.3 循环语句5.3.1 while语句5.3.2 do…while语句5.3.3 for语句5.3.4 循环语句嵌套5.3.5 break语句和continue语句第6章 函数6.1 函数的定义6.1.1 函数的定义的一般形式6.1.2 函数的参数6.1.3 函数的值6.2 函数的调用6.2.1 函数的一般调用6.2.2 函数的递归调用6.2.3 函数的嵌套使用6.3 变量的类型及其存储方式6.3.1 局部变量6.3.2 局部变量的存储方式6.3.3 全局变量6.3.4 全局变量的存储方式6.4 内部函数和外部函数6.4.1 内部函数6.4.2 外部函数第7章 指针第8章 结构体和共用体第9章 AT90LS8535的内部资源第10章 AT90LS8535的人机接口编程第11章 AT90LS8535的外围扩展第12章 AT90LS8535的通信编程第13章 系统设计中的程序处理方法
上传时间: 2013-10-31
上传用户:smthxt