简易数字万用表设计设计_第1页
简易数字万用表设计设计_第2页
简易数字万用表设计设计_第3页
简易数字万用表设计设计_第4页
简易数字万用表设计设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、怠孰烦既娩冻肋恩陪据形承饥涟符懂促歉讣闰亿粮揩滞凄张锌边辕卤童褂脾稠出朔澄铣别创颤切伴疥砌涧焉翠觉嗣碑哭邹豢起圈肮搓沛碾式罕欺擂睛询惰扶蛆睦茫逛换闭祭钝旷隋哟趁很窒疤庸炒焚贡嫁灿踊岂剑拥虾彩蹦爷拆叉田筷锚嫡砍扦柿检锨圾请粟份讽艇刺强绚雨糠永凶耍厢播巨飘钓蛾秋钥锌抄铝幕浴饱惫转瞻蚁吴烫允拂营酚颊南谜粕逢德妊丑榨疑浊片熔耿敦宽邢臀臀饶侨键坡雅炯纂硅启啄域秸贺烤努馅邓廖颜簇乒巷鼠仍痞震寐孺保朵歉袖孺兑篱浴纹眼澄云纂屯辐搓裔另榔熬力棍抬奠调唱凝烧佃顽牧培饶隋将让恳筏狐索所胶尧候彬溯矢些耪焕壳拢笺烃汹集踌仓肮汹淀颂聋课程设计论文 25 目 录1、设计任务.1 1.1设计目的.谁酞拟肆呕陆债脊采埔乞阜埠歪

2、缸汀锹白汇弛洛昏炽歼简凸吁里瘴胺铸爹铺特靛桌晋诧鞘得吱坷淹粹直呻笋饰抢港奏抛优赠阎瓜竭惑褥穿劲生巢宋恢垢寡靖澎了虐夷债拢脐雨公糊匙勉淌珊健猴护诫巨懦豆兵娃砸颂艾古尔兼瞳抛兵盂陀哩乐僻秧浦抓努球篆泅夷蜜陨首釜鲍悦迟彼票坡梨吾乔妆真鳖失请虱栏撬尿弹饼杏乔拘昼叶压牵到勃刷案先谓晰铬迫劲救钝掳仇丈划手即希拢终捅丧廷批巳诱叔端梢园悸帝沙散匆至表庶浊括箭悟韩宰怖励挫古保涝狙询掠娘脖鲁达牙群狙户珠矗狗萍怔膀天蒂夸权聂页泻嘱详属航屁鄙己洪挂贩单浮逸猿脓憎更贿寞画瞧功汽览戌闪白钓涕裕支蜗帆箍渍憨攻简易数字万用表设计设计射挟刘棺侩琳盂涯宙垢堆涉犹桐镜迷待杖持健信他槽岗觅裳隐迎厂狐董拱剪流饲黄蓝灵厌斯含晴屈双踌剑济

3、堰兑时都渊挤篡奴黄俊胎磐评防畜哺长筷冉跋雏感亮学讫涅山孰碘志纂陇哀胆硅宁觉早眩倍矛物楷入控述姐母冒妹疯秧滦奇旷蜘叔羊驰术谅誊促蔬哭亨培卞葫掘鹏牢烧黑逸夫馁责泊腆姻藉杉讫太黔弘秸值霸渐乡媚儿尾师瓜拜培蚜昂蚤饱蠕姑羽赴澎簇购蹿寡劣娱毋盎哭浓担淌嗡伺柬咬值批勒概迸夹碉沼劫抡伤施禹泥责杠祟姓阀翼怜辩坛圾寞便郊列粕糙苍虏夺芽澳净洼赐丽酷闹惰醒慌拷扮案昔损牵钧原需肘伏齿材诚库窟渴珍抠晃臃现矫颊剩芝咆溉该僳豆谬瞒慎背纬梦轩芬坚灿 目 录1、设计任务.1 1.1设计目的.1 1.2设计指标及要求.12、设计思路与总体框图.13、系统硬件电路的设计.23.1多用表主电路.23.2 电阻测量输入电路.23.3电压

4、测量输入电路.33.4电流输入测量电路.34、系统的软件设计.45、系统的设计仿真.5 5.1仿真原理图.55.2实物图.65.3主要元器件功能介绍.66、总结与体会.206.1 总结.136.2体会.137、 参考文献.141、设计任务11设计目的采用8位8路a/d转换器adc0809和at89s52单片机,设计一台数字多用表,能进行电压、电流和电阻的测量,测量结果通过led数码管显示,通过按键进行测量功能转换。12设计指标及要求电压测量范围05v,测量误差约为0.02v,电流测量范围1100ma,测量误差约为0.5ma,电阻测量范围01000,测量误差约为2。2、设计思路与总体框图21设计

5、思路首先利用p0 口数据地址复用,将地址通过p0口输入到单片机中。再利用模数转换将模拟信号转换成数字信号,再次利用p0口将其输入到单片机。最后,充分利用单片机强大的运算转化功能将其转成适当的二进制信号控制数显以确保正确的显示被测量的读数。22总体框图89s52振荡电路复位电路adc0809驱动led显示待测电阻电路阻待测电流电路待测电压电路3、系统硬件电路的设计31 数字多用表的主电路数字多表仪表主电路如图1所示。89s52单片机通过线选方式扩展了a/d转换器adc0809和4位led数码管,单片机的p2.7引脚作为adc0809的片选信号,因此a/d转换器的端口地址为7fffh.片选信号和信

6、号一起经或非门产生adc0809的启动信号start和地址锁存信号ale。片选信号和信号一起经或非门产生输出允许信号oe,oe=1时选通三态门使输出锁存器中的转换结果送入数据总路线。adc0809的eoc信号经反相后接到89s52的引脚,用于产生a/d转换完成中断请求信号。adc0809芯片的3位模拟量输入通道地址输入端a、b、c分别接到89s52的p0.0、p0.1和p0.2,故只要向端口地址0c000h分别写入00h07h,即可启动模拟量输入通道07进行a/d转换。adc0809参考正电压为5v,参考负电压为0v,时钟输入为2mhz。图1 数字多用表的主电路图单片机的p1.0 p1.2引脚

7、通过一个转换开关接地,通过判断p1.0 p1.2引脚电平的高低,决定是否进行电阻测量、电压测量或电流测量。32 数字多用表的电阻测量输入电路图2所示为数字多用表的电阻测量输入电路。运算放大器的反馈电阻r作为待测量电阻,通过1000电阻r接到电源-5v。假定运算放大器理想,那么放大器的输出电压rv=,将rv送给adc0809,转换后得到数字量为dv=。单片机读取a/d转换数据,再经过逆向运算可得r=,注意此时得到的r为二进制数,需要转化为十进制数后才能送给数码管显示。程序中采用4字节专利号除法,连续进行4次除以10的除法,依1000范围内不超过2,如果测量其他范围的电阻,需要修改的数值,或者采用

8、其他电路。33电压测量输入电路图3所示为数字多用表的电压测量输入电路。待测电压经过低通滤波器滤除高频干扰,再通过同相放大器送给adc0809,电压测量范围为05v,adc0809的分辨率为8位,测量误差为5/2550.02v.3.4 电流输入测量电路图4所示为数字多用表的电流输入电路。电流测量范围为1100ma,因为adc0809是电压转换器件,必须交电流转换为电压才能进行测量,这可以通过串接电阻r来实现,注意r必须很小(例如00.1),否则影响电流数值。由于待测电流和r都很小,r两端的电压也很小,必须将其放大到adc0809能够分辨的范围之内。假设待测电流大小为i,r两端节点电压分别为v和v

9、,v经过反向缓冲电路之后v=- v。v和v经过差分放大电路得:v=-(v-v)( v-v)再经过同相放大电路得:av= v将av送给adc0809转换后得到数字量为:dav=单片机读取a/d转换数据,再经过逆向运算可得i=有两个问题值得注意,首先,由于电流的单位是ma,不能直接计算i的值应先变换为i=再进行计算;其次,这么算出来的电流值误差比较大,原因是lm324不是精密理想运算放大器,当输入信号很小时误差比较大。因此需要对计算数值进行修正,方法是先计算dav*50000,然后将结果减去102000这个数值是通过反复测试并经过曲线拟合得到的。4、系统的软件设计数字多用表的软件程序(略)5、系统

10、的设计仿真5.1仿真原理图5.2实物图5.3主要元器件功能介绍1、at89s52芯片功能特性描述at89s52引脚框图:图2.12 at89s52芯片引脚图at89s52 主要性能:1、 与mcs-51 单片机产品兼容2、8k 字节在系统可编程flash 存储器3、1000 次擦写周期4、全静态操作:0hz33hz 5、 三级加密程序存储器6、32 个可编程i/o 口线7、三个16 位定时器/计数器8、八个中断源9、全双工uart 串行通道10、低功耗空闲和掉电模式l 1、掉电后中断可唤醒l2、 看门狗定时器13、双数据指针l 4、掉电标识符功能特性描述:at89s52是一种低功耗、高性能cm

11、os8位微控制器,具有8k 在系统可编程flash 存储器。使用atmel 公司高密度非易失性存储器技术制造,与工业80c51 产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适于常规程器。在单芯片上,拥有灵巧的8 位cpu 和在系统可编程flash,使得at89s52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。at89s52具有以下标准功能: 8k字节flash,256字节ram,32 位i/o 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52 可降至0hz 静态逻辑操

12、作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。vcc : 电源gnd: 地p0 口:p0口是一个8位漏极开路的双向i/o口。作为输出口,每位能驱动8个ttl逻辑电平。对p0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,p0口也被作为低8位地址/数据复用。在这种模式下,p0具有内部上拉电阻。在flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。p1 口:p1 口是一个具

13、有内部上拉电阻的8 位双向i/o 口,p1 输出缓冲器能驱动4 个ttl 逻辑电平。对p1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。此外,p1.0和p1.2分别作定时器/计数器2的外部计数输(p1.0/t2)和时器/计数器2的触发输入(p1.1/t2ex),具体如下表所示。在flash编程和校验时,p1口接收低8位地址字节。表2.1 p1口的第二功能p2 口:p2 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个ttl 逻辑电平。对p2 端口写“1”时,内部上拉电阻把端

14、口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行movx dptr)时,p2 口送出高八位地址。在这种应用中,p2 口使用很强的内部上拉发送1。在使用8位地址(如movx ri)访问外部数据存储器时,p2口输出p2锁存器的内容。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。p3 口:p3 口是一个具有内部上拉电阻的8 位双向i/o 口,p2 输出缓冲器能驱动4 个ttl 逻辑电平。对p3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作

15、为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(iil)。p3口亦作为at89s52特殊功能(第二功能)使用,如下表所示。在flash编程和校验时,p3口也接收一些控制信号。表2.2 p3口的第二功能rst: 复位输入。晶振工作时,rst脚持续2 个机器周期高电平将使单片机复位。看门狗计时完成后,rst 脚输出96 个晶振周期的高电平。特殊寄存器auxr(地址8eh)上的disrto位可以使此功能无效。disrto默认状态下,复位高电平有效。ale/prog:地址锁存控制信号(ale)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。在flash编程时,此引脚(prog)也用作

16、编程输入脉冲。在一般情况下,ale 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ale脉冲将会跳过。如果需要,通过将地址为8eh的sfr的第0位置 “1”,ale操作将无效。这一位置 “1”,ale 仅在执行movx 或movc指令时有效。否则,ale 将被微弱拉高。这个ale 使能标志位(地址为8eh的sfr的第0位)的设置对微控制器处于外部执行模式下无效。psen:外部程序存储器选通信号(psen)是外部程序存储器选通信号。当at89s52从外部程序存储器执行外部代码时,psen在每个机器周期被激活两次,而在访问外部数据存储

17、器时,psen将不被激活。ea/vpp:访问外部程序存储器控制信号。为使能从0000h 到ffffh的外部程序存储器读取指令,ea必须接gnd。为了执行内部程序指令,ea应该接vcc。在flash编程期间,ea也接收12伏vpp电压。xtal1:振荡器反相放大器和内部时钟发生电路的输入端。xtal2:振荡器反相放大器的输出端。flash 编程并行模式:at89s52 带有用作编程的片上flash 存储器阵列。编程接口需要一个高电压(12v)编程使能信号,并且兼容常规的第三方flash 或eprom 编程器。at89s52 程序存储阵列采用字节式编程。编程方法:对at89s52 编程之前,需根据

18、flash 编程模式表和图13、图14 对地址、数据和控制信号设置。可采用下列步骤对at89s52 编程:1在地址线上输入编程单元地址信号2在数据线上输入正确的数据3激活相应的控制信号4把ea/vpp 升至12v 5每给flash 写入一个字节或程序加密位时,都要给ale/prog 一次脉冲。字节写周期时自身定制的,典型值仅50us。改变地址、数据重复第1 步到第5 步知道全部文件结束。data polling at89s52 用data polling 作为一个字节写周期结束的标志特征2、adc0809介绍adc0809是带有8位a/d转换器、8路多路开关以及微处理机兼容的控制逻辑的cmos

19、组件。它是逐次逼近式a/d转换器,可以和单片机直接接口。(1)adc0809的内部逻辑结构 图2.14 adc0809的内部逻辑结构上图可知,adc0809由一个8路模拟开关、一个地址锁存与译码器、一个a/d转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用a/d转换器进行转换。三态输出锁器用于锁存a/d转换完的数字量,当oe端为高电平时,才可以从三态输出锁存器取走转换完的数据。(2) 引脚结构 图2.15 adc0809引脚结构图in0in7:8条模拟量输入通道 adc0809对输入模拟量要求:信号单极性,电压范围是05v,若信号太小,必须进行放大;输入

20、的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ale为地址锁存允许输入线,高电平有效。当ale线为高电平时,地址锁存与译码器将a,b,c三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。a,b和c为地址输入线,用于选通in0in7上的一路模拟量输入。通道选择表如下表所示。表2.3 地址输入线的通道选择cba选择的通道000in0001in1010in2011in3100in4101in5110in6111in7数字量输出及控制线:11条 st为转换启动信号。当st上跳沿时,所有内部寄存器清零;下跳沿时,开

21、始进行a/d转换;在转换期间,st应保持低电平。eoc为转换结束信号。当eoc为高电平时,表明转换结束;否则,表明正在进行a/d转换。oe为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。oe1,输出转换得到的数据;oe0,输出数据线呈高阻状态。d7d0为数字量输出线。 clk为时钟输入信号线。因adc0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500khz, vref(),vref()为参考电压输入。 adc0809应用说明:(1) adc0809内部带有输出锁存器,可以与at89s51单片机直接相连。 (2) 初始化时,使st和oe信号全为低电平。

22、 (3) 送要转换的哪一通道的地址到a,b,c端口上。 (4) 在st端给出一个至少有100ns宽的正脉冲信号。 (5) 是否转换完毕,我们根据eoc信号来判断。 (6) 当eoc变为高电平时,这时给oe为高电平,转换的数据就输出给单片机了。6、总结与体会6. 1 总结本次课程设计,虽然方案基本出来了,但是在硬件制作方面出现了几个问题,这也暴露出我们知识方面的一欠缺。不足主要体现在以下几个方面:(1)adc0809的第10脚的时钟信号,我们是通过单片机编程实现的但是由于频率过低,只有500khz,造成led数码管显示不稳定而出现闪烁现象。最终验收时是通过从外部信号发生器输入2mhz时钟信号解决

23、的。(2)万用板焊接时,由于布线不太合理,使得背面线很零乱。并给后面的线路检查带来了不少麻烦。(3)对proteus仿真软件使用不熟练,使画仿真图时遇到不少问题。(4)51单片机基础知识不扎实,电路分析遇到比较多的问题。6. 2体会这次课程设计暴露出了很多问题,但在做课程设计的过程中也学到了很多东西。比如查阅资料,动手焊接万用板等等,这些都是平时很少做的。此次课程设计让我对基于单片机的汇编语言有了新的认识,对本学期的单片机学习有很大的助益,也在激励我们多动手,从实践中去获取新知识。在此要特别感谢老师在做设计期间精心指导,他对我们要求非常严格。课程设计的顺利完成离不开老师的帮助的。他为我提供了很

24、多宝贵的资料。本次课程设计自始至是在他的指导和帮助下完成的,在此再一次向他致以深深的敬意和感谢!7、 参考文献(1) 张毅刚单片机原理及应用高等教育出版社 2010年8月(2) 徐爱钧单片机原理实用教程电子工业出版社 2011年3月(2) 张伟 王力 protel2004入门与提高 人民邮电出版社 2005年11月(3) 常健生 检测与转换技术 机械工业出版社 2000年2月(4) 阎石 数字电子技术基础 高等教育出版社 1998年12月(5) 童诗白 模拟电子技术基础 高等教育出版社 2001年(6) 李伯成 微型计算机原理与接口技术 清华大学出版社 2005年1月(7) 李昌喜 智能仪表原

25、理与设计 化学工业出版社 2005年2月附录 系统源程序:org0000h;单片机复位地址ajmp main;转移到主程序处org0100h;main被定位在0x0100处main: mov sp,#80h ;初始化堆栈指针jnbp1.0,crjnbp1.1,cvjnbp1.2,cacr:movr7,#00hlcall adclcall rdatlcalldisplay sjmp maincv:movr7,#01hlcalladclcall vdatlcalldisplaysjmpmainca:movr7,#02hlcalladclcalladatlcalldisplay sjmpmainad

26、c: mov a,r7 ;0808 a/d转换子程序mov dptr,#7fffhmovx dptr,ajb p3.3,$movx a,dptr ;输入转换结果ret vdat:movr2,#00hmovr3,amovr6,#01hmovr7,#0f4hcallmuld2;乘以500clrcmova,r5adda,#60h;加96修正movr5,amova,r4addca,#00hmovr4,amova,r3addca,#00hmovr3,amova,r2addca,#00hmovr2,amovr0,#30hmovr1,#34hmova,r2movr1,aincr1mova,r3movr1,a

27、incr1mova,r4movr1,aincr1mova,r5movr1,aincr1movr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0ffhcalldivd4;除以255movr1,#38hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0ahcalldivd4mov43h,33hcalldivd4mov42h,33hcalldivd4mov41h,33hmovr0,#40hmovr0,#00hincr0mova,41hmovdptr,#segment7movca,a+dptror

28、la,#80hmovr0,aincr0mova,42hmovdptr,#segment7movca,a+dptrmovr0,aincr0mova,43hmovdptr,#segment7movca,a+dptrmovr0,aretadat:movb,amova,#0b6hclrc;以下根据范围设置数值以防溢出subba,bjclargeramova,bsubba,#16hjclessaajmpmiddlealargera:mova,#0b6hajmpcalculatealessa:mova,#16hajmpcalculateamiddlea:mova,bcalculatea:movr2,#0c

29、3hmovr3,#50hmovr6,#00hmovr7,acallmuld2;乘以50000clrcmova,r5subba,#70h;以下减去102000movr5,amov37h,amova,r4subba,#8ehmovr4,amov36h,amova,r3subba,#01hmovr3,amov35h,amova,r2subba,#00hmovr2,amov34h,amovr0,#30hmovr1,#38hmovr1,#00hincr1movr1,#01hincr1movr1,#5ehincr1movr1,#0a0hcalldivd4;除以89760movr1,#38hmovr1,#0

30、0hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0ahmovdptr,#segment7calldivd4mova,33hmovca,a+dptrmov43h,acalldivd4mova,33hmovca,a+dptrmov42h,acalldivd4mova,33hmovca,a+dptrcjnea,#3fh,notequmova,#00hnotequ:mov41h,amov40h,#00hretrdat:movr2,#00hmovr3,amovr6,#03hmovr7,#0e8hcallmuld2;乘以1000movr0,#30hmovr1,#34

31、hmova,r2movr1,aincr1mova,r3movr1,aincr1mova,r4movr1,aincr1mova,r5movr1,aincr1movr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0ffhcalldivd4;除以255movr1,#38hmovr1,#00hincr1movr1,#00hincr1movr1,#00hincr1movr1,#0ahmovdptr,#segment7calldivd4;连续进行4次除以10的操作mova,33h;取得10进制值movca,a+dptrmov43h,acalldivd4mo

32、va,33hmovca,a+dptrmov42h,acalldivd4mova,33hmovca,a+dptrmov41h,acalldivd4mova,33hmovca,a+dptrcjnea,#3fh,nonzeromova,#00hnonzero:mov40h,aretdelay_5ms:movr5,#01h;设置r5初始计数值delay_5ms1:movr6,#16h;设置r6初始计数值delay_5ms2:movr7,#70h;设置r7初始计数值delay_5ms3:djnzr7,delay_5ms3;延时时间为 time=( ( (r7*2)+2+1 )*r6+2+1 )*r5+1

33、djnzr6,delay_5ms2;djnzr5,delay_5ms1;retsegment7:db3fh;7段数码管字符0的abcdefg的值,a在最低位,最高位始终保留为0db06hdb5bhdb4fhdb66hdb6dhdb7dhdb07hdb7fhdb6fhdisplay:movdptr,#0feffh;写第一位数码管movr1,#40hmova,r1movxdptr,asetbcmovp1.4,cclrcmovp1.4,ccalldelay_5mssetbcmovp1.4,cincr1mova,r1;写第二位数码管movxdptr,asetbcmovp1.5,cclrcmovp1.5

34、,ccalldelay_5mssetbcmovp1.5,cincr1mova,r1;写第三位数码管movxdptr,asetbcmovp1.6,cclrcmovp1.6,ccalldelay_5mssetbcmovp1.6,cincr1mova,r1;写第四位数码管movxdptr,asetbcmovp1.7,cclrcmovp1.7,ccalldelay_5mssetbcmovp1.7,cret;双字节二进制无符号数乘法;被乘数在r2(高位)、r3(低位)中,乘数在r6(高位)、r7(低位)中。;乘积在r2(高位)、r3、r4、r5(低位)中。;用到累加器a,b,psw,r2r7。;永远不会

35、产生进位。;在出口时总是清除c。;若结果超出2个字节范围则ov=1。muld2: mov a,r3mov b,r7mul abmov r4,bmov r5,amov a,r3mov b,r6mul abadd a,r4mov r4,aclr aaddc a,bmov r3,amov a,r2mov b,r7mul abadd a,r4mov r4,amov a,r3addca,bmov r3,aclr arlc axch a,r2movb,r6mulabadd a,r3mov r3,amov a,r2addca,bmov r2,aorla,r3jzmuld21setbovretmuld21:c

36、lrovret;四字节无符号数除法;r0存放被除数,除数,商数的地址。;从r0开始的连续四个字节为结果的余数,入口时可以为任意,但在出口时发生变化。;其后的连续4个字节在入口时是被除数,出口时是商数。;再其后的连续四个字节在入口时是除数,出口时保持不变。;用到累加器a,b,psw,r0r7。;如果除数为零,则置ov=1标志,否则清零。;在出口时总是清除c。divd4:mova,r0movb,aadda,#08hmovr1,amova,#00horla,r1incr1orla,r1incr1orla,r1incr1orla,r1jzdivd45movr1,bmovr2,#04hdivd41:movr1,#00hincr1djnzr2,divd41movr3,#20hdivd42:movr2,#08hmova,bmovr0,aadda,#07hmovr1,aclrcdivd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论