




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、目录一.设计任务和要求11.1概要11. 3设计要求1二硬件设计22. 1总设计思路22.2总原理图22. 3最小系统3三. 软件设计43. 1主程序43.2显示程序设计(程序见附录)63. 3键盘识别程序设计(程序见附录)73. 4运算程序设计(程序见附录)10四. Keil调试与仿真124. 1 keil的使用方法12五总电路图13六. 总结14七. 参考文献15附录A16程序清单16附录B27元器件清单26专业整理.一.设计任务和要求1. 1概要简易计算器的原理与设计是单片机课程设计课题中的一个。在完成理论学习 和必要的实验后,我们掌握了单片机的基本原理以及编程和各种基本功能的应 用,但
2、对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实 际动手能力不够,因此对该课程进行一次课程设计是有必要的。1.2设计任务本次课程设计,我们选择的课题是单片机数字计算器硬软件设计,设计任 务为:1. 扩展4*4键盘,其中10个数字,5个功能键,1个清零2. 强化对于电路的焊接3. 使用五位数码管接口电路4. 完成十进制的四则运算(加、减、乘、除);5. 实现结果低于五位的连续运算;6. 使用keil软件编写程序,使用汇编语言;7. 最后用ptoteus模拟仿真;8. 学会对电路的调试1. 3设计要求单片机课程设计既要让我们巩固课本学到的理论,还要学习单片机硬件电路 设计和用户程序
3、设计,使所学的知识更深一层的理解,数字计算器原理与硬软件 的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编 写和调试,最后仿真用户程序,來加深对单片机的认识,充分发挥学生的个人创 新能力,并提高对单片机的兴趣,同时学习查阅资料、参考资料的方法。通过实践更好的了解单片机,巩固了键盘扫描,数码管,等一系列单片机的 知识。本次设计我们需要AT89C51芯片,要充分理解各个管脚的用途;还是用了 两个四位一体的共阳极的数码管,要知道其位控和字控的引脚位置;还用了4*4 的键盘;采用手电复位。而我的设计任务是计算器的软件部分,硬件部分参见 同组的人。学习帮手.专业整理.二硬件设计2.
4、 1总设计思路本设计是一个实现加、减、乘、除的计算器,它的硬件主要由四部分组成, 一个AT89C51单片机芯片,两个四位一体的共阳极的数码管,一个4*4的键盘,一 个排阻(10K)做P0口的上拉电阻(接线图再总电路图),它可以实现结果低于65535 的加、减、乘、除运算。首先.显示部分,让P2口做位扫描,P0口做段码输出,设置一个单元用來记 录输入数字的位数,这样可以不用循环扫描每一位,而是根据输出位数判断扫描 哪些位。如当显示1234时,不用在向高四位送入11H,也不需要熄灭的代码了。调 用显示程序时先选通第一位(最低位),送出代码1,然后判断是否显示完毕,(通过记录数字个数单元的容减一是否
5、得0來判断),如没显示完则显示下一位, 如显不完则跳出。其次是设计键盘扫描程序,这里釆用4*4矩阵键盘,通过软件识别,行和列 可接在同个端口上,也可接在不同端口上,本设计行接在P3口的高四位,列接在 P1 口的低四位,通过循环扫描行,读取列的数据判断是否有键按下,如果有则调 用按键识别程序识别是哪个键,执行相应的操作,按键识别是根据按键时得到的 列代码与行代码组合,来判断是哪个键的。按键识别后,如果是数字键则直接放 入数码管显示缓冲区,如果再次有数字键按下,则应将缓存区的数字向高位移一 位,将刚输入的数放入最低位,并且记录按键次数,每输入一个键值都调用显示 程序显示出來,如果是运算符,则执行相
6、应的运算,然后在调用显示程序显示结 果。最后是运算程序的加入,运算程序很简单,只要把+、-、沢/分别做成模 块,用到时即可调用,本设计的难点是键盘识别和数值显示,因为这里边涉及到 键盘输入的数值在部要转换成10进制运算,运算结果要转换成各个位的显示数字 输出。2. 2总原理图P0.0初始化,络 位显0根据按键P0.7AT89C51卜P2.0P0=FEH左移进两个 四位数码通过三级管通过P0 口进行位控专业整理.图212. 3最小系统 手动复位:由电容串联电阻构成,系统一上电,RST脚将会出现高电平,并乱这个高电平 持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机 器
7、周期以上就将复位。晶振电路:典型的晶振取11. 0592MHz (因为可以准确地得到9600波特率和19200波特率, 用于有串口通讯的场合)/12MHz (产生精确的uS级时歇,方便定时操作) 单片机:一片AT89S51/52或其他51系列兼容单片机特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从部ROM的0000H开 始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行。学习帮手.专业整理.C2X118U11nF AR1C310u33uf29301XTAL1XTAL2RSTPSEN ALE EAPO.O/ADOP0.1/AD1P0.2/AD2P0.3/AD3
8、P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15图2 -2最小系统R233uflrGND.711111111PPPPPPPPP3.0/RXDP3.1/TXDP3.2/INT0P3.3/iNTTP3.4/T0P3.5/T1P3.6ARP3.7/RD3938373635343332212223242526272810111213141516仃AT89C51三.软件设计3. 1主程序30H、37H存储数码管从低位到高位的所显示的数,38-3FH
9、结果缓冲区。40H 输入数据个数,41H加减乘除标志位50-53行地址。42单元放运算符次数标志位。一上电复位后,程序开始运行,跳转到主程序进行初始化,然后调用用显示 子程序显示初始状态个位上为零。然后调用键盘扫描子程序,不断循环判断是否 有键按下,如有键按下时,延时防抖和判断按键是否松开,松开说明确定有键按 下,开始分析按下的是功能键还是数字键,按不同键进行处理;若是数字键, 则输入该数字,再调用显示子程序显示;若是功能键中的清除键,则相当于复位, 清除状态,个位保持显示零,直到有键再次输入;若是+,/功能键时,要根据上次功能键计算的结果或输入的数据进行计算同时保存结果和功能,同时 也要等再
10、次输入数据,也要调用显示子程序显示结果。学习帮手.专业整理.主程序主要是用來进行初始化的,调用其他子程序,清空各个标志位,清空+工9住騒;工9反仃反I斤仃土從甘& :寺刊7确ML*ll 断丁+1 台匕A:T PD 后山 InlRt;MOV 3BH, #00HMOV 3CH, #00HMOV 3DH, #00HMOV 3EH,#00H学习帮手.专业整理.MOV 3FH, #00HMOV 40H, #00H;输入数据个数;MOV 41H, #00H;功能键标志位;MOV 42H, #00H;功能键按键次数MOV 43H, #00H;输入的数据暂存区MOV 44H, #00HMOV 50H, #OE
11、OH;行定义MOV 51H, #ODOHMOV 52H, #OBOHMOV 53H,#70HACALL DISPLAY;调用显示子程序,显示初始状态ACALL KEY;判断是否有键按下MOV R4, #0A0HACALL DELAY-lms:防抖,延时10msACALL SS;判断键是否松开3.2显示程序设计(程序见附录)显示程序流程图如图3-2。我的显示程序是这样设计的,因为考虑到显示程 应具有通用性,在不进行输入时显示0,输入时显示输入的数字或运算结果,而 且要使8个数码管同时显示不同的数字,选用动态显示应是最佳的。将30H-37H单元设置成数码管显示缓冲区,分别存放数码管各个位要显示的
12、数据,40H单元作为输入数据的计数单元。因为运算结果超出围时应报错,使数 码管显示“Error”即可,将数码管的0 9的代码和Error”代码存于LABLE1 列表中。当调用显示程序时,显示程序根据40H单元的记录的个数决定数码管显 示的位数。如果输入错误将在数码管上显示“Error”。当计算结果超出65536 时,数码管上也同样显示Erroro在调用显示子程序时,要设定数据缓冲区指针,和循环次数存入R5中,R1二 ttFEH位控制,然后根据缓冲区的数用查表指令在表中找出该数字的段码,并将该 段码送入P0D,再通过对R1中的位控进行移位选择,使要显示的位数显示,同时 根据40H中的数据个数控制
13、循环次数。这样就得到了显示程序的入口: 30H-37H,依次存放个位一千万位。40H,存 放输出的数字位数。显示程序的出口:数码管,通过查表指令P0输出字段码,P2输出位选码。学习帮手.专业整理.3. 3键盘识别程序设计(程序见附录)键盘识别是这样设计的,首先将P3口送OEOH,将P1 口先送FFH在读P1 口的数据 当P1 口低四位全一时说明没有键按下,在扫描下一行,如果P1 口不全一,则有键 按下,将P3口高四位与P1 口低四位组合成一个字节,放入R5寄存器中,按键去抖, 判键是否松开,如松开则将得到的键值判别是哪个键,如果是数字键则首先将其 对应的数字(按键代码对应如下表1)放入缓冲区3
14、0H,同时将键值放入结果缓冲 区,并调用显示程序,显示键值,在调用扫描键盘程序,如果在有键值输入则将 原来的数值在数码管显示缓冲区向高位依次移一位,将刚键入的数值放入最低 位,并将原來的数值乘十加上刚键入的数放人结果缓冲区,然后调用显示程序, 如果是运算符,则记录运算符标志,加法用01H表示,减法用02H表示,乘法用03H 表示,除法用04H表示,并将结果缓冲区的数转移到中间结果缓冲区,将结果缓 冲区清零,等待输入运算数据,当按等号时,根据记录的运算符标志,判断是那 种运算,执行运算将结果依次除10取余数放入结果显示缓冲区,调用显示程序。 依次循环执行。(流程图如下)键码键值键码键值学习帮手.
15、专业整理.EE7BE1ED8BD2EB9BB3E7/B7DE47ECLDD57D0DB67B=D7*77+学习帮手.专业整理.学习帮手.专业整理.3. 4运算程序设计(程序见附录)运算程序分四个模块,即加减乘除。分别采用两字节运算,因此运算结果不 能超出两字节,否则会溢出。溢出时显示ERRORo加法程序:入口: R0被加数低位字节地址指针,R1加数低位字节地址指针, R3字节数。出口: R0和值的字节地址指针,R3和值字节数。运算时用RO,R1间接寻址,从低字节算起,高字节釆用带进位加(ADDC), 计算结果回送到R0所指的单元中,并将和字节数放入R3单元中,如果R3大于等于 3说明溢出。减法
16、同加法类似,入口: R0被减数低位字节地址指针,R1减数低位字节地址 指针,R3字节数。出口: R0和值地位字节地址指针,R3和值字节数。只是判断溢出是通过CY 位,如果运算后CY位有借位,则将07H位置1,否则置0。乘法程序:入口: R3,被乘数低位地址字节,R2,被乘数高位地址字节,R7, 乘数低位地址字节,R6,乘数高位地址字节。出口: R4,R5,R6,R7结果字节由高到低。通过判断R5是否为零就可以知道运算结果是否溢出,如果溢出调用溢出程 序。除法程序:入口:被除数放在R4R5R6R7, R4R5,容为零,R4高R5低,除数放在 R2R3, R2高R3低。出口:商放在R6R7, R6
17、高R7低,余数放在R4R5, R4高R5低。运算程序运行时,首先得到的键值是否是第一个,若是则将该键值直接转存 到结果缓冲区中,即38H开始的4个单元中;若不是则将上次的数字乘以10再加上 本次输入放入结果缓冲区(38H开始的),然后再判断是否有按下运算符,若没 有,则继续等待键值的再次输入;若有按下运算符,则要将结果缓冲区的值放入 中间结果缓冲区中(3CH开始的单元),同时要判断按下的运算符是什么运算符 (+: 01H;-: 02H;*:03H;/:04H),然后判断是否有第二个值输入,若没则继续等 待,若有则放入结果缓冲区中,当扫描到等于号时,则根据输入的运算符计算, 并把运算结果放入缓冲
18、区,并调用显示子程序显示结果学习帮手.专业整理.学习帮手.专业整理.四.Ke订调试与仿真4. 1 keil的使用方法KEIL C51标准C编译器是众多单片机应用开发的优秀软件之一,它集编辑、 编译、仿真于一体,支持汇编、PLM语言和C语言的程序设计。1. 启动KEIL C51进入编辑界面建立一个新工程:单击Project菜单,在 弹出的下拉菜单中选中New Project选项。选择保存路径,输入工程文件需。2. 工程文件保存完毕之后,提示选择单片机的型号。KEIL支持近乎所有51 核的单片机。单击File菜单,选择New。3. 文件保存:使用汇编编写,文件后缀名为.asm或a51o完成后,单击
19、“保 存”按钮保存文件。4. 在Source Group上单击右键,找到刚才保存的源文件,然后添加ADD5. 在编辑完成之后,需要进行程序的编译。点开Project选项,单击Build target;或是利用快捷键F7。6. 在程序调试的时候,点击Debug选项,选择Start/Stop Debug Sessiono7. 以上是使用KEIL建立一个完整工程文件的过程。下载到单片机之中, 则需要生成HEX文件。单击“Project”菜单,再在下拉菜单 中单击出现选项对话框。在选项对话框的“Output”页面对话框中,单击 “Create HEX File” 选项,使程序编译后产生HEX代码,供下
20、载器软件使用。4. 2.调试过程在Debug调试下,如有错误时,下面窗口将有提示说明错误个数和具体 哪一行有错,还有对于错误的说明,大多数格式使用不当,此时在那一行前后仔 细检查,要考虑格式,语法等基本性错误。即使调试没错时,程序也不是代表完全正确,需要结合硬件來确定改 程序的功能是否完全实现了。:Project Workspace豹 EJ Target 1F Cj Source Group 1;因 l.asm415417418419420421422X2342542?428429430X31434435436437438X39440 “1FT:ORO. Arwc ro rwc a MHZ R
21、5,E7 RETDI SPLAY: MOV DPTRlABLEl R0,30H nov RJ, 80H TTOV R5, *4 OHNEX7F:H0V P乙 RlKOVKOVC &A+DPTRMOV F0,A丄 CALL DELAYlaSHOV A,P2RK AHOV Rl, A INC RO KOV A,K5 JZ AADJKZ R5. JJHXrF RE7DELArin5:nOY R7,tT02UDL: MOV R6,OFFH DL0:DJNZ R6, DL6 DTNZ RQDLKE70C0H. OF 9乩 UA4H, 0B0H. 99H 92H, 82H, 0F8K 80K 90H OC
22、EH. UC01L OCEH, OCEH, 86H.;.DELAY1S;.;MSPLAY;.;.;442TABLEI: DB443DB444DB445EWD447图4-1keil调试图学习帮手.2ss FA2 5乩LHbBK 肪.崔曲漠gs|g8iUd is pff End Ead is Gm.cd so-2 is is P3.2 二就d is ?.s is is 務d wd 2:d 書& L*:d ucdOS m:*nT叶o8 3TO-El匝卷凉同孝4专业整理.六总结课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际 问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和
23、考察过程。 作为电子信息工程专业的学生來说掌握单片机的开发技术是十分重要的。这次我们的课程设计容是一个简易的计算器。对于我们这些工科学生来说, 这是一次考验。怎么才能找到课堂所学与实际应用的最佳结合点?怎样让自己的 业余更接近专业?怎样让自己的计划更具有序性,而不会忙无一用?这都是我们 所要考虑和努力的。这次课程设计我学到很多很多的东西,学会了怎么样去制定 计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不 良情绪。不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过 的知识,掌握了一种系统的研究方法,可以进行一些简单的编程。通过这次课程 设计使我懂得了理论与实际
24、相结合是很重要的,只有理论知识是远远不够的,只 有把所学的理论知识与实践相结合起來,从理论中得出结论,才能真正为社会服 务,从而提高自己的实际动手能力和独立思考的能力。然而我们也有许多不足之处。在软件编程时一定要考虑周到,要有耐心要仔 细。还要与硬件相联系起来,脱离了实物一切都是假的。在理论上往往是可行的, 然而当把程序烧入芯片,进行调试时就会遇到这样那样的的问题。最糟的是当我 们辛苦把实物完成,而那电路有完全没反应,与我们的设想完全不同,而我们乂 不知道是软件问题还是硬件问题时,就要静下心來,一步一步來,从硬件的的芯 片开始检查是否短路等等,而软件乂要不断地进行仿真调试。然而我们遇到的问 题
25、除了焊接时可能导致的短路外,还应电压不稳定或过大而导致芯片被烧毁,总 而言之,我们还是缺少对芯片和各种器件的了解,无法准确的判断出什么样的现 象将是由原因引起的。就拿我们來讲吧,当我们把电路焊接好后,加入程序进行调试时发现数码管 不显示,此时我们要检查电路时我们才发现焊接时电路线的排版不是很好,线一 多就无法判断到底哪里有错,简直让人眼花,最后我们不得不宣布放弃这块,重 新买齐器件进行再次焊接,这次我们吸取了上次教训,釆用排针排线的方法方便 与检查和调试,可结果仍不理想,数码管全显,好像程序根本没运行,然而由于 我们进行仿真过,所以唯一认为的是电路有问题,我们花了一天时间检查是否把 那里短路了
26、,或接了不该接的,最后还是不成功,只好在第二天进行简单的程序 來检査时,才发现芯片坏了,也只好换芯片,很快变成功了,当我们会宿舍再次 接通电源时,乂发现程序好像没走,不得乂去实验室检查发现有坏了,才知道我 们用的电源有问题。哎!真是多磨难啊!但结果还是令人兴奋的。学习帮手.专业整理.七.参考文献1. http:/iask. sina. . /b/12725134. htm2. . doc88. /p-39990954517, html3. . docin. /p-50647459, html4. . kjOOS. /web2/mj09b22392. html5. 华.MCS-51系列单片机实用
27、接口计数M.北京:北京行天航空工业大学出 版社,1993. 148-158.6. 单片机应用技术(汇编语言),中国劳动社会保障出版社,2006. 67. 单片机原理及应用技术主编:力旻 出版社:电子工业出版社8. 51单片机应用程序开发与实践 编著:常敏、汪涵、方江波等 出版社:电子工业出版社9. PIC单片机典型模块设计实例导航出版社:人民邮电出版社10单片机接口技术实用子程序 编著:小忠、黄宁、小侠出版社:人民邮电出版社学习帮手.专业整理.附录A程序清单设30H-37H单元为八个数码管从地位到高位所显示的容.38-3FH结果缓冲 go 40H输入数据个数,41H加减乘除标志位50-53行地
28、址。42单元放运算符次数 扌小志彳也。ORG 0000HLJMP STARTORG 0030HSTART:MOV 30H,#00H;初始化定义MOV 38H, #00H:38-3FH结果缓冲区;MOV 39H, #00HMOV 3AH, #00HMOV 3BH, #00HMOV 3CH, #00HMOV 3DH, #00HMOV 3EH, #00HMOV 3FH, #00HMOV 40H, #00H:输入数据个数;MOV 41H, #00H:功能键标志位;MOV 42H, #00H:功能键按键次数MOV 43H, #00H:输入的数据暂存区MOV 44H, #00HMOV 50H, #OEOH
29、;行定义MOV 51H, #ODOHMOV 52H, #OBOHMOV 53H, #70HL00P3:ACALL DISPLAYKEY: MOV RO,#50HMOV R7, #04HLOOP1:MOV A,ROMOV P3, AMOV A, ttOFFHMOV Pl, AMOV A,PlANL A, tiOFHMOV R5,ACJNE A,#OFH, L00P2;INC RODJNZ R7, L00P1;R01表示启用,RO寻键值;R7循环4次;R0行号;给戸3口的高四位轮流送0,低四位为0给P1 口送1读P1 口A的高四位为0,保存第四位,即保;存按键状态将P3 口和P1 口结合暂存R5判
30、断有无按键,如不等则该行有键按下,;跳转到L00P2进行防抖,;若相等则该行无键,继续判断下一行。;指针下移,继续给下一行送0要判断四行,R7-1不等于0时四行判断完 仍无键按下时,继续循环扫描是否学习帮手.专业整理.有键按下。JMP L00P3 L00P2:MOV R4,#OAOH DELAY:ACALL DELAYImSDJNZ R4, TFF:等于0时,跳转到LOOP3开始分析;延迟Ims* 10二 10msSS: MOV A, #OFFHMOV A, PlMOV Pl, A;判键是否松开;:松开,该键按下有效:判断是否按+ X/号:显示区低字节地址指针;等于01H时是+,继续向下运行,
31、不等;于时跳转到NEXT1:设定数据个数;运算符标识数;R0行号与第一行比较,判断是;否是第一行有键按下,如ANL A, #OFHCJNE A, ttOFH, SSMOV A, 42HMOV Rl, tt30HCJNE A, #O1H,NEXT1MOV 40H, #00HMOV 42H, #00HNEXT1: CJNE R0, #OEOH, R0W2KEY不等,进行MOV A, R5下ORL A, R0CJNE A, ftOEEH, KEY2MOV A, 40HCJNE A, #08H, TW1 输JMP L00P3TW1:INC 40HMOV A, ft07HMOV 43H, AACALL
32、MOVEACALL CHANGE11JMP L00P3KEY2:CJNE A, #OEDH, KEY3MOV A, 40HCJNE A, #08H, TW2JMP L00P3;判断是否己满8位,不满时转TW2;显不判断是按下8键吗,不是转下一个学习帮手.;则转第二行判断,如是则; 列判断;R5列号,判断是该行的具体哪一个键按;表示停用R0,生成按键的键值存入A;判断该按下的是7吗,若不是跳转继续判断;数据个数给A;判断数据个数是否等于8,不等于时可继续;入当满8位时保持不变;调用显不程序显不;有数据输入时,数据个数增加;首先输入的7暂存于43H;调用交换程序,即将依次输入的数往后推移专业整理.
33、TW2: INC 40HMOV A, #08HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY3:CJNE A, #OEBH, KEY4MOV A, 40HCJNE A, #08H, TW3JMP LOOP3TW3:MOV A,#09HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY4:ACALL JUDEGACALL CHANGEMOV 42H, ttOlHMOV 41H, ttO4HJMP LOOP3ROW2KEY:CJNE R0,#ODOH, ROW3KEYMOV A, R5ORL A, R
34、OCJNE A, #ODEH, KEY5MOV A, 40HCJNE A, #08H, TW4JMP LOOP3TW4:INC 40HMOV A, #04HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY5: CJNE A, #ODDH, KEY6MOV A, 40HCJNE A, #08H, TW5JMP LOOP3TW5: MOV A, #05H:数据个数增加;输入值是8;显示数据;判断是9吗,不是继续判断下一个;是否满8位;计算结果放入3CH起始的单元;;将结果放入显示缓冲区;;04表示除法;第二行;判断是否是4;判断是否是5学习帮手.INC 4
35、0HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3专业整理.KEY6: CJNE A, ftODBH, KEY7MOV A, 40HCJNE A, #08H, TW6JMP LOOP3TW6:MOV A, ttO6HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY7: ACALL JUDEGACALL CHANGEMOV 42H, #O1HMOV 41H, #03HJMP LOOP3ROW3KEY:CJNE R0,#OBOH, ROW4KEYMOV A, R5ORL A, ROCJNE A, #OBE
36、H, KEYSMOV A, 40HCJNE A, #08H, TW7JMP LOOP3TW7:MOV A,tt01HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEYS:CJNE A, #OBDH, KEY9MOV A, 40HCJNE A, #08H, TW8JMP LOOP3TW8:MOV A, #02HINC 40HMOV 43H,AACALL MOVEACALL CHANGE11JMP LOOP3KEY9:CJNE A, #OBBH, KEY10MOV A, 40HCJNE A, #08H, TW9JMP L00P3TW9: MOV
37、 A, ttO3HINC 40H:判断是杏是6:计算结果放入3CH起始的单元; ;将结果放入显示缓冲区;03表示乘法;第三行;判断是否是1;判断是2;判断是3学习帮手.专业整理.MOV 43H,AACALL MOVEACALL CHANGE11 JMP LOOP3KEY1O:ACALL JUDEGACALL CHANGEMOV 42H, ttOlHMOV 41H, #02HJMP LOOP3R0W4KEY:MOV A, R5ORL A, RO CJNE A,#7EH, KEY11 JMP START始KEY11:CJNE A, #7DH, KEY12 MOV A, 40HJZ QQCJNE A
38、,#08H, TW1O JMP LOOP3TW1O:MOV A, #OOHINC 40HMOV 43H,AACALL MOVE ACALL CHANGE11QQ: JMP LOOP3 KEY12:CJNE A, #O7BH, KEY13 ACALL JUDEGACALL CHANGE JMP LOOP3KEY13:ACALL JUDEGACALL CHANGEMOV 42H, #O1HMOV 41H, #O1H JMP LOOP3MOVE:MOV Rl,#30HMOV R6, 40HDDD: XCH A, R1NOPNOPNOPNOPINC R1DJNZ R6, DDDRET;放入3 CH起始
39、的单元;将结果放入显示缓冲区;;02表示减法;clear,相当于复位,程序从头开;判断是0;显Z5;显不;EQUEL:;计算结果放入3CH起始的单元;将结果放入显示缓冲区:计算结果放入3CH起始的单元;将结果放入显示缓冲区;01表示加法;交换指令,是高位的数后移;R1二30H,开始下移学习帮手.专业整理.加法程序:人口: R0被加数低位字节地址指针,R1加数低位字节地址指针, R3字节数出口:R0和值的位字节地址指针,R3和值字节数。MAKEADD: MOV A, RO;保存地址MOV R2,AMOV A, R3MOV R7,ACLR CLOP: MOV A, R0ADDC A, R1MOV
40、RO,AINC ROINC R1:由字节数决定循环次数;判断是否溢出:若大于3则溢出;回复地址DJNZ R7, LOPJNC NEXTINC R3MOV R0, #01HNEXT: MOV A, R2MOV RO,ARET减法程序:入口: R0,被减数低位字节地址指针,R1,减数低位字节地址指针, R3,字节数出口: R0,差值地位字节地址指针,R3,差值字节数。MAKESUB:CLR 07HMOV A, ROMOV R2, AMOV A, R3MOV R7, ACLR CLOP1:MOV A, R0SUBB A, R1MOV R0, AINC ROINC R1DJNZ R7, LOP1JNC
41、 LOP2;判断是否溢处SETB 07H;溢出时07H置1LOP2:MOV A, R2MOV RO, A RET乘法程序:入口: R3被乘数低位地址字节,R2被乘数高位地址字节,R7乘 数低位地址字节,R6乘数高位地址字节,出口: R4,R5,R6,R7结果字节由高到低MAKEMUL:MOV A, R3学习帮手.专业整理.MOV B, R7MUL ABXCH A, R7MOV R5, BMOV B, R2MUL ABADD A, R5MOV R4,ACLR AADDC A, BMOV R5,AMOV A, R6MOV B, R3MUL ABADD A, R4XCH A, R6XCH A, BA
42、DDC A, R5MOV R5,AMOV FO, CMOV A, R2MUL ABADD A, R5MOV R5,ACLR AMOV ACC. 0, CMOV C, FOADDC A, BMOV R4,ARET除法程序:入口 :被除数放在R4R5R6R7、R4R5容为零,R4高R5低,除数放在R2R3, R2高R3低,出口:商放在R6R7, R6高R7低,余数放在R4R5, R4高R5低MAKEDIV :MOV A, R5CLR CSUBB A, R3MOV A, R4SUBB A, R2JNC DIV11MOV B, #16DIV22:CLR CMOV A, R7RLC AMOV R7,AM
43、OV A, R6学习帮手.专业整理.RLC AMOV R6,AMOV A, R5RLC AMOV R5,AXCH A, R4RLC AXCH A, R4MOV FO, CCLR CSUBB A, R3MOV R1,AMOV A, R4SUBB A, R2JB FO, DIV33JC DIV44DIV33:MOV R4,AMOV A, R1MOV R5,AINC R7DIV44:DJNZ B, DIV22CLR FORETDIV11:SETB FORETCHANGE11:;CHANGEMOV RO, tt40H CJNE RO, #O1H, TAIMOV 38H, 43HJMP TA2TAI:M
44、OV R3, 38HMOV R2, 39HMOV R6, ttOOHMOV R7, ttOAHACALL MAKEMULMOV 39H, R6MOV 38H, R7MOV 3AH, R5MOV 3BH, R4MOV RO, tt38HMOV Rl, #43HMOV R3, ttO2HACALL MAKEADDTA2: RET学习帮手.专业整理.CHANGE:MOV 40H, #00HMOV RO, ti30HMOV R7, 3CH;3BH单元值;LJMP LOOP3JUD1:MOV Rl, #38HMOV A,41HCJNE A, #OOH, TBMOV 3CH,R1INC R1MOV 3DH,R1JMP TBBTB: CJNE A, #O1H, TB1MOV RO, #3CHMOV R3, #02HACALL MAKEADDMOV R6, 3DHTD1: MOV R5, #00HMOV R4, #00HMOV R2, #00HMOV R3, #OAHINC 40HACALL MAKEDIVMOV A, R5MOV RO,AINC ROMOV A, R6CJNE A, #OOH, TD1MOV A, R7CJNE A, #OOH, TD1RETJUDEG:MOV A, 3AH JZ JUD1 ACALL ERROR:计算中间结果;;有运算符时转移判断加法:41H标志位,1表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第二章药物工艺路线的设计资料
- 2025年氢能行业上市公司项目风险控制与投资策略报告
- 2025年光伏电站土地流转与农业现代化推进策略报告
- 种业创新驱动:2025年农业生物技术在种子基因编辑育种中的应用前景报告
- 新能源行业协同创新机制研究报告:新能源汽车电池材料技术创新
- 酒店安全处理培训课件
- 2025数字孪生在城市绿地系统规划中的生态修复与应用报告
- 参观禁毒馆观后感
- 电商主播面试题及答案要点
- 急救护理学期末题库及答案解析
- 便利店陈列培训
- 学校食堂餐厅投诉处理制度
- SolidWorks-全套基础培训教程
- 安吉汽车物流运输优化方案全套
- 软式棒垒球-上手传接球教案高一上学期体育与健康人教版
- 变更董事股东会决议
- 中国功夫介绍英文
- 驾驶员管理台帐
- 部编版五年级道德与法治上册第3课《主动拒绝烟酒与毒品》优秀课件【最新】
- 拆房协议书模板
- 制造企业物料试用单
评论
0/150
提交评论