一、实验目的 1. 学会选择变压器、整流二极管、滤波电容及集成稳 压 器来设计直流稳压电源。 2. 掌握直流稳压电源的主要性能参数及测试方法。 二、实验原理 电子设备一般都需要直流电源供电。这些直流电 除了少数直接利用干电池和直流发电机外,大多数是 采用把交流电(市电)转变为直流电的直流稳压电源。 直流稳压电源由电源变压器T、整流、滤波和稳压电路四部分组成,其原理框图如图1 所示。电网供给的交流电压u1(220V,50Hz) 经电源变压器降压后,得到符合电路需要的交流电压u2,然后由整流电路变换成方向不变、大小随时间变化的脉动电压u3,再用滤波器滤去其交流分量,就可得到比较平直的直流电压uI。但这样的直流输出电压,还会随交流电网电压的波动或负载的变动而变化。在对直流供电要求较高的场合,还需要使用稳压电路,以保证输出直流电压更加稳定。 1、串联型稳压电源的基本原理 图2是由分立元件组成的串联型稳压电源的电路图。其整流部分为单相桥式整流、电容滤波电路。稳压部分为串联型稳压电路,它由调整元件(晶体管V1);比较放大器V2、R7;取样电路R1、R2、RP,基准电压VD、R3和过流保护电路V3管及电阻R4、R5、R6等组成。整个稳压电路是一个具有电压串联负反馈的闭环系统,其稳压过程为:当电网电压波动或负载变动引起输出直流电压发生变化时,取样电路取出输出电压的一部分送入比较放大器,并与基准电压进行比较,产生的误差信号经T2放大后送至调整管V1的基极,使调整管改变其管压降,以补偿输出电压的变化,从而达到稳定输出电压的目的。 2、集成稳压器 能够完成稳压功能的集成稳压器种类很多,根据调整管工作在线性放大区还是工作在开关状态,将其分为线性集成稳压器和开关集成稳压器。线性集成稳压器中,由于三端式稳压器只有三个引出端子,性能稳定、价格低廉等优点,因而得到广泛的应用。三端式稳压器有两种,一种输出电压是固定的,称为固定输出三端稳压器,另一种输出电压是可调的,称为可调三端稳压器。图 4是常用的三端稳压器示意图。
标签: 直流稳压电源
上传时间: 2013-11-27
上传用户:qazxsw
以下的电路为使用市电AC120V的电力经由电容降低电压及小电阻来限制电流以供应LED 的电力。当交流电经过电容后并未提供直流电力,利用一个小的二极体和LED 并联,提供一个路径给负半波的电压而且可以限制反向电压流经LED,另外也可使用右图利用第二个LED 替代二极管,或是直接安装一个三色的双向LED,其中使用的电阻为1K/0.5W,当电容充电时发生150mA 突波,这时电阻可以在1 毫秒内将电流限制在30mA 以内,这个0.47U 的电容在LED 以20mA,60HZ 半波供电时(或是10MA 平均值)约产生5600 奥姆的电抗,或是10MA平均值,电容越大能够提供的电流就越大,电容一定要使用无极性的而且耐压要200V 以上。
上传时间: 2013-11-09
上传用户:yph853211
工频变压器在被大家称为低频变压器,以示与开关电源用高频变压器有区别。工频变压器在过去传统的电源中大量使用,而这些电源的稳定方式又是采用线性调节的,所以那些传统的电源又被称为线性电源工频变压器的原理非常简单,理论上推导出相关计算式也不复杂,所以大家形成了看法:太简单了,就那三、四个计算公式,没什么可研究的。设计时只要根据那些简单的公式,立马成功。掌握了电压高了拆掉几圈,电压低了加几圈,空载电流大了,适当增加初级圈数,也觉的低工频变压器的非常简单。我认为上面的认识既有可取之处,也有值得研究的地方。可取之处:根据计算式或自己打样,可以很快就得出结果,解决了问题;加上有六七年以上得实际工作经验,可说是在某单位得心应手,鹤立鸡群。值得研究的地方是:你是否了解自己设计出的产品性能?设计合理吗?设计优化过吗?经济性如何?过去电源变压器的设计由电子部牵头组织专家学者成立变压器工作组,编写典型计算免费发放各单位,作为计算依据,每个单位都有自己的变压器设计人员,由于有了参数表的存在,各厂设计出来的变压器各参数基本一致,连圈数和线径都可能一一模一样。验收的规则也是统一到变压器总技术条件上来。改革开放以后国营企业的变压器设计人员,除极少数外,下海的不多。典型计算资料本不可多得,要按失密论处。加上典型计算是原苏联的一套铁心规格与现行得EI铁心片规格不符,无参照价值。目前基本上是采用师傅带徒第的方式带出来一大批变压器工程人员。。与过去不同现有的工程技术人员大都是自己打样,由于工频变压器市场广泛,小单子很多。而这些单子很多是从关系接来的。不十分计较价格,因此理论水平一般,实际经验丰富的工程技术人员大有人在。从设计角度来看师师傅带徒第的方式带出来一大批变压器工程人员,他门的设计风格各不相同。
上传时间: 2013-10-17
上传用户:dudu1210004
单片机终结者出品 第1课:新建一个*.DDB,新建一个SCH文件,并且添加画SCH要用到的零件库>> 第2课:利用添加好的零件库,进行画第一个可以自动布线的原理图>> 课后补充:SCH中一些必须要避免的错误! 图片教程的第2天: 学会从SCH到PCB的转变,并且进行自动布线 第一课:建立一个PCB文件,并且添加自动布线所必需的封装库 第二课:把前面的SCH文件变成PCB板 第三课: 对PCB进行自动布线 图片教程的第3天: 学会自己做SCH零件。说明:SCH零件库用来画图和自动布线 第一课:做一个SCH里面常要用到的电阻零件 图片教程的第4天: 学会自己做PCB零件封装 第一课:做一个属于自己的PCB零件封装 课后补充:PCB中一些必须要避免的错误! 布线方面的高级设置:自动布线和手动布线方面的高级设置问题 图片教程的第5天: 一些高级的常用技巧 一、SCH中的一些常用技巧 SCH的一些高级设置和常用技巧 二、PCB的一些高级设置和常用技巧 在PCB中,如何校验和查看PCB单个的网络连接情况 在PCB中给PCB补泪滴的具体操作 在PCB中给PCB做覆铜的具体操作 在PCB中如何打印出中空的焊盘(这个功能对于热转印制板比较有用) 在PCB中如何找到我们要找的封装 如何在PCB文件中加上漂亮的汉字 附件:PROTEL99SE 安装 License 5天(每天20分钟),你就可以搞定PROTEL99SE的常规操作。
上传时间: 2013-10-18
上传用户:jjq719719
c语言编程软件vc6.0使用教程,附件包含二个教程文件,VC++6.0培训教程完整版及VC6.0介绍。 Visual C++ 6.0,简称VC或者VC6.0,是微软的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了 Visual C++.NET(Visual C++7.0),但它的应用有很大的局限性,只适用于Windows 2000、Windows XP和Windows NT4.0。所以实际中,更多的是以Visual C++6.0为平台。 vc6.0使用你首先要打开VC6.0界面,一般用得较多的是Win32控制台应用程序(源程序,扩展名.cpp), 步骤是:(先工程—后文件—编译—连接---运行) 1,建立一个工程,“文件”——“新建”,出现下面界面:选择“Win32 Console Application”(控制台应用程序,左边倒数第三个),命名工程名称,选择保存位置。 点击“确定”,进入下一步,看到如下提示界面: 建立一个空工程,对应其他需要的你一可以建立别的工程;点击“完成”,之后 显示你创建的工程的信息。 2,再在有一个的工程的条件下,我们再建立一个源文件; “文件”——“新建”(快捷键Ctri+N),出现: 建立源文件,选择“C++ Source ”,一般都是建立这种文件的(适用在当文件中适用)如果要建立头文件的话,选择“C/C++ Header File”,(适用在多文件工程中使用)命名,文件名称,点击“确定”,之后: 进入编辑区,在主界面编写代码:如下编写完之后呢: 可以按编译按钮 调试程序,看看有没有错误,有的话改正,没有的话就可以再按连接按钮 检查连接(多文件工程时常用,检查文件间是否正常连接),最后,点运行按钮 ,就可以运行了。 如果是您有代码如:cpp文件,或 .h 文件,想添加都VC6.0里来测试的话,可以这样做: 首先,要理解一下 文件扩展名为:cpp和.h 文件扩张名是.h,代表的是头文件,一般是书写一些函数原型,以及一些在整个程序中常用到的结构体,频繁使用的函数说明,定义等等; 文件扩张名为,cpp的,是C++中的源文件,也是最常用到的文件,每建立一个工程都要至少一个源文件(至少要有一个函数入口——主函数main() ),包含了核心代码; 建立与运行说明:(以VC 6.0编译器为例,其他编译器类似) 首先,打开VC 6.0编译环境; 在菜单栏——文件(的下拉菜单中选择“新建”),在弹出的选择窗口中,选择 Win32 Console Application(控制台应用程序) ,在填写工程名称,选择一个程序保存路径, 点击“完成”,查看工程信息。 在点击“确定”,就建立一个简单的工程了。 再点击左边的工程信息右下角的“FileView”选项; 可以看到你新建的工程,再双击你新建的工程名 可以查看工程的信息。 在双击工程文件,在这里是 777.files,可以看到该工程的包含的文件。 其中,Source Files 为包含所有工程的源文件 Header Files 为包含所有工程的头文件 在源文件选项“Source Files ”,右键单击中的“添加目录到工程”,添加你要打开的扩展名为 .cpp的源文件。在头文件选项“ Header Files”,右键单击中的“添加目录到工程”,添加你要打开的扩展名为 . h的头文件。添加完你所有的头文件和源文件之后,检查一下是否添加完毕,之后就可以编译了。 其中第一个按钮 为编译按钮,可以找出工程的错误信息,有错误修改,没错误就可以跳到连接 ,编译右边的按钮 ,即第三个按钮(多文件工程一定要连接,查看文件是否准确相连接) 当编译,连接都没有错误时,可以按运行按钮 ,即可以运行了。 相关资料:vc6.0中文绿色版下载
上传时间: 2013-10-30
上传用户:tianjinfan
DSP的使用正呈爆炸式发展。OFDM、GPS相关器、FFT、FIR滤波器或H.264之类计算密集型算法在从移动电话到汽车的各种应用中都很常见。设计人员实现DSP有三种选择:他们可以使用DSP处理器、FPGA或掩膜ASIC。ASIC具有最高的吞吐量、最低的功耗和最低的成本,但其极大的NRE和较长研制周期使其对许多设计而言并不适用。定制ASIC的研制周期可达一年之久,比最终产品的使用寿命都长。FPGA已占居较大的市场份额,因为其能提供比DSP处理器更好的吞吐量,而且没有ASIC的极大NRE和较长研制周期。 因此,常常将基于ARM的MCU和FPGA结合使用来实现这些设计,其中FPGA实现设计的DSP部分。然而,FPGA也有其自身的不足--最突出的是功耗很高(静态功耗接近2W),且性能比ASIC慢。FPGA时钟用于逻辑执行时通常限制为50MHz,而ASIC可以400MHz或更高频率执行逻辑。其他缺点还包括在IP载入基于SRAM的FPGA时安全性还不够理想,成本也较高。尽管FPGA成本已迅速降低,但价格通常在10,000片左右就不再下降,因此仍比较昂贵。 新型可定制Atmel处理器(CAP)MCU具有的门密度、单元成本、性能和功耗接近基于单元的ASIC,而NRE较低且开发时间较快。与基于ARM的非可定制标准产品MCU一样,不需要单独的ARM许可。 可定制MCU利用新型金属可编程单元结构(MPCF)ASIC技术,其门密度介于170K门/mm2与210K门/mm2之间,与基于单元的ASIC相当。例如,实现D触发器(DFF)的MPCF单元与标准的单元DFF都使用130nm的工艺,所用面积差不多相同。
上传时间: 2013-10-29
上传用户:xymbian
终于结束了晦涩枯燥的第三章,我自己也长吁了一口气,现在我真的是非常同情那些教专业基础课或者工程数学的老师,这里真诚的说一声:“辛苦你们了”。这一章要轻松不少,相信就算是刚走出校门的雏鸟,多少都有一定的C语言基础,大学好象都要过一个计算机等级考试,所以C语言自然是逃不了。你不要指望我给你讲述C语言原理和指令这类基础知识,我更不会给你讲述C++那些面对对象编程的高级编程方法,这一章讲述的内容都是C语言在单片机上应用会遇到的一些有意思的现象,让你知道C在单片机上是怎么工作的。当然也会告诉你一些C的经验技巧,这些对提升你的单片机程序能力还是有一定作用的。
上传时间: 2013-11-20
上传用户:zhanditian
AVR单片机技术原理 AVR单片机介绍 单片机又称单片微控制器,它是把一个计算机系统集成到一个芯片上,概括的讲:一块芯片就成了一台计算机。单片机技术是计算机技术的一个分支,是简易机器人的核心元件。 1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术, 共同研发出RISC精简指令集的高速8位单片机,简称AVR。[编辑本段]AVR单片机的优势特征 单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。单片机种类很多,在简易机器人制作和创新中,为什么选用AVR单片机呢? 一、简便易学,费用低廉 首先,对于非专业人员来说,选择AVR单片机的最主要原因,是进入AVR单片机开发的门槛非常低,只要会操作电脑就可以学习AVR单片机的开发。单片机初学者只需一条ISP下载线,把编辑、调试通过的软件程序直接在线写入AVR单片机,即可以开发AVR单片机系列中的各种封装的器件。AVR单片机因此在业界号称“一线打天下”。 其次,AVR单片机便于升级。AVR程序写入是直接在电路板上进行程序修改、烧录等操作,这样便于产品升级。 再次,AVR单片机费用低廉。学习AVR单片机可使用ISP在线下载编程方式(即把PC机上编译好的程序写到单片机的程序存储器中),不需购买仿真器、编程器、擦抹器和芯片适配器等,即可进行所有AVR单片机的开发应用,这可节省很多开发费用。程序存储器擦写可达10000次以上,不会产生报废品。 二、高速、低耗、保密 首先,AVR单片机是高速嵌入式单片机: 1、AVR单片机具有预取指令功能,即在执行一条指令时,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。 2、多累加器型,数据处理速度快。AVR单片机具有32个通用工作寄存器,相当于有32条立交桥,可以快速通行。 3、中断响应速度快。AVR单片机有多个固定中断向量入口地址,可快速响应中断。 其次,AVR单片机耗能低。对于典型功耗情况,WDT关闭时为100nA,更适用于电池供电的应用设备。有的器件最低1.8 V即可工作。 再次,AVR单片机保密性能好。它具有不可破解的位加密锁Lock Bit技术,保密位单元深藏于芯片内部,无法用电子显微镜看到。 三、I/O口功能强,具有A/D转换等电路 1. AVR单片机的I/O口是真正的I/O口,能正确反映I/O口输入/输出的真实情况。工业级产品,具有大电流(灌电流)10~40 mA,可直接驱动可控硅SCR或继电器,节省了外围驱动器件。 2. AVR单片机内带模拟比较器,I/O口可用作A/D转换,可组成廉价的A/D转换器。ATmega48/8/16等器件具有8路10位A/D。 3. 部分AVR单片机可组成零外设元件单片机系统,使该类单片机无外加元器件即可工作,简单方便,成本又低。 4. AVR单片机可重设启动复位,以提高单片机工作的可靠性。有看门狗定时器实行安全保护,可防止程序走乱(飞),提高了产品的抗干扰能力。 四、有功能强大的定时器/计数器及通讯接口 定时/计数器T/C有8位和16位,可用作比较器。计数器外部中断和PWM(也可用作D/A)用于控制输出,某些型号的AVR单片机有3~4个PWM,是作电机无级调速的理想器件。 AVR单片机有串行异步通讯UART接口,不占用定时器和SPI同步传输功能,因其具有高速特性,故可以工作在一般标准整数频率下,而波特率可达576K。
上传时间: 2013-10-18
上传用户:二十八号
高速SOC单片机 基于半导体集成技术的突飞猛进的发展各种类型的单片机正日新月异的涌向市场为单片机技术的应用人员提供了极大的方便INTEL公司在MCS48系列的基础上推出高性能的MCS51系列八位单片机而今三十二位单片机又以其强大的片内功能提供给应用者无论是那一种位数的单片机也无论是那一种系列的单片机都为新产品的开发应用系统的研制智能控制器的研究高新技术的应用创造了极其有力的硬件环境当前可以说由于世界各生产厂家生产通用型以及衍生出的五花八门的系列及型号的单片机使其单片机技术的应用已达到了无孔不入的地步当初面向工业控制功能的单片机现已远远超出了原设计者的想像然而占全球单片机销量60%65%左右的八位单片机仍是当前应用的主流就国内应用实践而言使用单片机数量最大的是八位单片机应用范围最广的是八位单片机八位单片机仍具有时代的魅力.
上传时间: 2013-12-18
上传用户:642778338
单片机指令系统原理 51单片机的寻址方式 学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。在我们学习的8051单片机中,有6种寻址方法,下面我们将逐一进行分析。 立即寻址 在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。该操作数直接参与操作,所以又称立即数,有“#”号表示。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如:MOV A,#3AH这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。这里也特别说明一下:在80C51单片机的指令系统中,仅有一条指令的操作数是16位的立即数,其功能是向地址指针DPTR传送16位的地址,即把立即数的高8位送入DPH,低8位送入DPL。 直接寻址 直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。例如:MOV A,30H 这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。2、位寻址区。20H-2FH地址单元。3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 关于数据存储器RAM的内部情况,请查看我们课程的第十二课。 直接寻址是唯一能访问特殊功能寄存器的寻址方式! 大家来分析下面几条指令:MOV 65H,A ;将A的内容送入内部RAM的65H单元地址中MOV A,direct ;将直接地址单元的内容送入A中MOV direct,direct;将直接地址单元的内容送直接地址单元MOV IE,#85H ;将立即数85H送入中断允许寄存器IE 前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。 寄存器寻址 寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。2、部份专用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。 寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。INC R3这条指令的意思是把寄存器R3中的内容加1 从前面的学习中我产应可以理解到,其实寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。 寄存器间接寻址 寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。 MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例:MOV R0,#30H ;将值30H加载到R0中 MOV A,@R0 ;把内部RAM地址30H内的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H内的值放到累加器A中 大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。例:MOV DPTR,#1234H ;将DPTR值设为1234H(16位) MOVX A,@DPTR ;将外部RAM或I/O地址1234H内的值放到累加器A中 在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。例:PUSH 30H ;把内部RAM地址30H内的值放到堆栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。 那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP 寄存器间接寻址范围总结:1、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。 2、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。例如MOVX A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。 堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。 寄存器间接寻址方式不可以访问特殊功能寄存器!! 寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。 基址寄存器加变址寄存器的变址寻址 这种寻址方式以程序计数器PC或DPTR为基址寄存器,累加器A为变址寄存器,变址寻址时,把两者的内容相加,所得到的结果作为操作数的地址。这种方式常用于访问程序存储器ROM中的数据表格,即查表操作。变址寻址只能读出程序内存入的值,而不能写入,也就是说变址寻址这种方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。例:MOVC A,@A+DPTR这条指令的功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A假若指令执行前A=54H,DPTR=3F21H,则这条指令变址寻址形成的操作数地址就是54H+3F21H=3F75H。如果3F75H单元中的内容是7FH,则执行这条指令后,累加器A中的内容就是7FH。 变址寻址的指令只有三条,分别如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一条指令JMP @A+DPTR这是一条无条件转移指令,这条指令的意思就是DPTR加上累加器A的内容做为一个16位的地址,执行JMP这条指令是,程序就转移到A+DPTR指定的地址去执行。 第二、三条指令MOVC A,@A+DPTR和MOVC A,@A+PC指令这两条指令的通常用于查表操作,功能完全一样,但使用起来却有一定的差别,现详细说明如下。我们知道,PC是程序指针,是十六位的。DPTR是一个16位的数据指针寄存器,按理,它们的寻址范围都应是64K。我们在学习特殊功能寄存器时已知道,程序计数器PC是始终跟踪着程序的执行的。也就是说,PC的值是随程序的执行情况自动改变的,我们不可以随便的给PC赋值。而DPTR是一个数据指针,我们就可以给空上数据指针DPTR进行赋值。我们再看指令MOVC A,@A+PC这条指令的意思是将PC的值与累加器A的值相加作为一个地址,而PC是固定的,累加器A是一个8位的寄存器,它的寻址范围是256个地址单元。讲到这里,大家应可明白,MOVC A,@A+PC这条指令的寻址范围其实就是只能在当前指令下256个地址单元。所在,这在我们实际应用中,可能就会有一个问题,如果我们需要查询的数据表在256个地址单元之内,则可以用MOVC A,@A+PC这条指令进行查表操作,如果超过了256个单元,则不能用这条指令进行查表操作。刚才我们已说到,DPTR是一个数据指针,这个数据指针我们可以给它赋值操作的。通过赋值操作。我们可以使MOVC A,@A+DPTR这条指令的寻址范围达到64K。这就是这两条指令在实际应用当中要注意的问题。 变址寻址方式是MCS-51单片机所独有的一种寻址方式。 位寻址 80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在第十二课学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者叫单元地址),而在这里,这些数据都变成了位地址。我们在指令中,或者在程序中如何来区分它是一个单元地址还是一个位地址呢?这个问题,也就是我们现在正在研究的位寻址的一个重要问题。其实,区分这些数据是位地址还是单元地址,我们都有相应的指令形式的。这个问题我们在后面的指令系统学习中再加以论述。 2、对专用寄存器位寻址。这里要说明一下,不是所有的专用寄存器都可以位寻址的。具体哪些专用寄存器可以哪些专用寄存器不可以,请大家回头去看看我们前面关于专用寄存器的相关文章。一般来说,地址单元可以被8整除的专用寄存器,通常都可以进行位寻址,当然并不是全部,大家在应用当中应引起注意。 专用寄存器的位寻址表示方法: 下面我们以程序状态字PSW来进行说明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示为D5H MOV C,D5H 2、位名称表示:表示该位的名称,例如PSW的位5是F0,所以可以用F0表示 MOV C,F0 3、单元(字节)地址加位表示:D0H单元位5,表示为DOH.5 MOV C,D0H.5 4、专用寄存器符号加位表示:例如PSW.5 MOV C,PSW.5 这四种方法实现的功能都是相同的,只是表述的方式不同而已。 例题: 1. 说明下列指令中源操作数采用的寻址方式。 MOV R5,R7 答案:寄存器寻址方式 MOV A,55H 直接寻址方式 MOV A,#55H 立即寻址方式 JMP @A+DPTR 变址寻址方式 MOV 30H,C 位寻址方式 MOV A,@R0 间接寻址方式 MOVX A,@R0 间接寻址方式 改错题 请判断下列的MCS-51单片机指令的书写格式是否有错,若有,请说明错误原因。 MOV R0,@R3 答案:间址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 变址寻址方式中的间址寄存器不可使用R0,只可使用A。 ADD R0,R1 运算指令中目的操作数必须为累加器A,不可为R0。 MUL AR0 乘法指令中的乘数应在B寄存器中,即乘法指令只可使用AB寄存器组合。
上传时间: 2013-11-11
上传用户:caozhizhi