'单片机课程设计 简易计算器的设计',_type,_第1页
'单片机课程设计 简易计算器的设计',_type,_第2页
'单片机课程设计 简易计算器的设计',_type,_第3页
'单片机课程设计 简易计算器的设计',_type,_第4页
'单片机课程设计 简易计算器的设计',_type,_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、目录目录目录目录 摘要1 绪论1 1.1 设计要求1 1.2 根本功能2 2 2.1 硬件局部设计方案2 2.1.1 单片机局部2 2.1.2 按键局部2 2.1.3 显示局部2 2.2 软件局部设计方案2 4 3.1 系统的总体硬件设计4 3.2 键盘连接电路4 3.3 显示屏连接电路5 3.4 单片 机芯片AT89C516 3.5 外接电路7 8 4.1 键盘识别程序设计8 4.2 显示程序11 4.3 运算程序11 12 5.1 元器件清单12 5.2 程序清单12 18 6.1 仿真验证18 6.2 性能分析20 6.3 出现故障及其原因20 6.4 解决方法20 结论20 参考文献2

2、1 致谢21 附录PCB图22 耍?苉7雮bhw:dv>袏g皐;豽? 1简易计算器的设计 学生:李飞 马鹏超 舒宏超 指导老师:王孝俭 摘 要:单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大局部功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大局部部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机内部也用和电脑功能类似的模块,比方CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对

3、我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可,用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制局部的核心部件。它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的本钱,这也是和离线式计算机的比方家用PC的主要区别。单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。 、 、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部

4、单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。 关键词:单片机、计算器、控制电路、仿真。 绪论 设计要求掌握数码管移位动态扫描显示的编程方法,掌握矩阵扫描的编程方法,掌握数据在内部运算的编程方法。设计任务实现最大8位正整数加、减、乘、除,具备清零、等于功能,16个按键功能依次为: 数字0、数字1、数字2、数字3、数字4、数字5、数字6、数字7、数字8、数字9、清零、等于、加、减、乘、除。 1设计要求及功能分析 1.1设计要求: 本次单片微

5、型计算机与接口技术课程设计做的是利用C51单片机为主体的计算器,实现了简单的加、减、乘、除功能。采取的是键盘输入和液晶显示屏的输出结果显示。主要硬件构成局部由四个,一个AT89C51单片机芯片,一个液晶显示屏,一个4*4键盘和一个排阻10K做P0口的上拉电阻,可以实现16位的数值操作计算。 1.2根本功能: 首先,计算器可现实8位数字,开机运行时,只有数码管最低位显示为“0,其他位全部不显示; 翩_?臣( 2其次,可以对计算结果在16位以内的;两个无符号数进行加、减、乘、除运算,并显示计算结果,如果输入操作数和输出结果超过16位,那么会显示“error,以提示使用者输入错误,应清零后重新输入。

6、 最后,运算时,如果按错了可以使用清零键直接清零,重新输入数据,运算过程中,如果运算表达式是加、减、乘、除混合运算,可以进行连续运算,不需要按等号键,运算规那么那么是从左到右,不区分运算等级。即认为加减乘除是同等级的运算。 2.设计方案 2.1硬件局部设计方案 2.1.1 单片机局部 单片机以AT89C51来作为核心元器件。 2.1.2 按键局部 方案一:采用4*4行列式键盘,分别设定数字键和功能键,采用查询方式,每次有键按下时,先判断是实数字键还是功能键,但是这种方式采用了大量的I/O口线。 方案二:采用独立式按键,独立式按键借口电路配置灵活,软件结构简单。 虽然采用独立式按键时每个按键必须

7、占用一根I/O口线,但是在本实验中根据实际的需要采用通过四个按键即只占用四个I/O口线,而如果采用4*4行列式键盘时占用8个I/O口线,所以我们采用一方案。 2.1.3 显示局部 在单片机应用系统中,使用的显示器主要有LED发光二极管显示器、LCD液晶显示亲以及CRT接口。 方案一:使用8位LED数码管来显示,LED显示器是由发光二极管显示字段组成的显示器件,在单片机应用系统中通常使用的是七段LED,这种显示器有共阴极和共阳极两种,它具有本钱低廉、配置灵活和单片机接口方便等特点。 方案二:使用液晶显示器来显示。液晶是介于固态和液态间的有机化合物,将其加热会变成透明液态,冷却后变成结晶的浑浊固态

8、。在电机的作用下,产生冷热变化,从而影响它的透光性,来到达显示的目的。LCD还具有以下优点:1低压、微功耗;2显示信息量大;3长寿命;4无辐射、无污染。 2.2软件局部设计方案 软件局部的设计思路时将整个程序划分为键盘扫描局部、显示局部、运算程序局部、清屏显示局部。 对于其中的键盘扫描局部在编写时又分为动态扫描和静态扫描;运算程序局部包括加、减、乘、除四个子程序。 软件流程大致如下:开始,然后是系统的初始化,进行键盘扫描,对扫描的键值进行判断分为数字键和功能键,如果是数字键,执行数字处理子程序,即显示数字并将数值存储;如果是命令键,即先判断是否为清屏,如为清屏键,那么执行清屏子程序,假设为加减

9、乘除运算键那么显示相应的符号并存储结果,假设都不是那么为=键,即要先判断上个符号位,然后调用对应的运算子程序运算,就可以得到需要的结果。 ,其他位全部不显示; 翩_?臣( 3 图1 系统原理框图 8位LCD显示 局部 51系列单片机 时钟电路和复位控制电路 4*4键盘 P 43. 系统的硬件总体设计 3.1 系统的总体硬件设计 硬件系统是指构成微机系统的实际装置,通常是由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种拓展接口电路、外部设备等才能构成一个单片机应用系统。 单

10、片机芯片选择AT89C51,显示区域使用显示屏,键盘是4*4普通矩阵键盘,P0口接上拉电阻,芯片的P0口和P3口的前5脚接入数字显示屏,键盘横行AD接入单片机芯片AT89C51的后四个接口,键盘的竖行14那么分别接入单片机芯片AT89C51的P2口的前四个接口。另外12M Hz晶振接入单片机芯片AT89C51的XTAL1接口。 系统总接线图如下: 图2 系统硬件总接线图 3.2 键盘连接电路 本设计之中使用的是4*4的普通键盘,我们可以使用其行列号来识别被按下的按键以此来获知被按键的信息,因此将行输出信号和列输出信号分别接入单片机芯片C51的P2口,通过循环扫描,读取行列的数据来判断是否有按键

11、被按下,如果有那么调用按键识别程序来识别具体按键,并执行相应的操作,按键识别是根据按键时得到的列代码与行代码的结合,在汇编语言中进行查表来判断是哪个键。 5键盘如图: 图3 数字输入键盘 3.3 显示屏连接电路 如上所述,当数字输入键盘有键按下的时候,经过程序识别,那么会有相应结果被送入显示屏得到显示。如果是数字键那么直接放入液晶显示缓冲区,如果再次有数字键按下,那么应将缓冲区的数字向高位移动一位,以构成两位数,之前输入的置之高位,并记录按键次数,每输入一个键值都调用显示程序出来;如果是运算符,那么执行相应的运算,送入单片机芯片C51内进行计算后将结果调用显示程序显示结果。 该设计中选取的是L

12、M0202型号液晶显示屏,如下列图: 6 图4 液晶显示屏 3.4 单片机芯片AT89C51 应本次课程设计的要求,此设计之中选取的是C51芯片,取代了之前设计之中的pic芯片。芯片包含有一个8位CPU;一个片内振荡器及时钟电路;4KB ROM程序存储器;128B RAM数据存储器;可寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O线4个8位并行I/O端口;两个16位的定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套终端结构。 芯片如下列图: 6 7 图5 单片机芯片AT89C51 3.5 外接电路 为了进一步强化该设计的功能,所以在单片机芯

13、片C51外围添加了时钟脉冲芯片和复位电路,这样就可以对其电路频率进行调节。这个电路当中,是选取的是12M的晶振,对其两头电容接地,并一端接入芯片XALT1端口输入,调节芯片内部频率。另外一端,高电平通过按钮接入单片机芯片RST端口,并接一个电容和一个电阻,降低电流冲击对芯片的影响。 时钟脉冲电路和复位电路如下列图: 构。 芯片0賤殔 8 图6 时钟脉冲电路和复位电路 由此,就是由以上的键盘连接电路、显示屏连接电路、外部电路和芯片共同构成了整个设计的硬件结构局部。 4.系统的软件总体设计 编程语言当中,汇编语言比拟接近底层,编程效率高;C语言那么语言灵活,在编写算法中会比拟方便。但是我们在学习中

14、是学习的汇编语言,我们还是对于单片机的编程更加熟悉,尽管汇编语言在计算器中涉及到算法之中会比拟繁琐,但是我们还是选择汇编语言。 4.1 键盘识别程序设计 首先将P2口送0E0H,将P1口弦送1在读P1口的数据当P1口低四位全1时说明没有键按下;再扫描下一行,如果P1口不是全1,那么说明有键按下,将P2口高四位和低四位组合成一个字节,放入R5存放器中,通过延迟技术来进行按键去抖,判断按键是否松开,如松开那么将得到的键值进行判断是哪一个键。如果是数字键那么首先将其对应的数字放入缓冲区30H,同时将键值放入结果缓冲区,并调用显示程序,显示键值。在调用扫描键盘程序,如果再有键值输入那么将原来的数值在显

15、示屏高位依次移一位,将刚键入的数值放入最低位,并将原来的数值乘十加上刚键入的键值的数放入结果缓冲区,然后调用显示程序;如果是运算符,那么记录运算符标志,加法用01H表示,剑法使用02H表示,乘法使用03H表示,除法使用04H表示,并将结果缓冲区的数转移到中间结果红区,将结果缓冲区清零,等待输入运算数据,当按下等号时,根据记录的运算符标志,判断运算类型,执行运算将结果依次除以10取余数放入结果显示缓冲区,调用显示程序。依次循环执行。 键盘识别程序流程图如下: q愜7-阑p屋_7M缷!0賁? 10 图8 键盘扫描程序流程图 扫描第一行 是否有键按下 扫描第四行 扫描第三行 扫描第二行 是否有键按下

16、 是否有键按下 是否有键按下 开始 结束 械鹘凇飧龅缏返敝+0資繀 11 4.2 显示程序 显示程序是将30H37H单元设置成液晶显示屏显示缓冲区,分别存放各个位置的数据,40H单元作为输入数据的计数单元。因为运算结果超出范围时应采取报错,使之显示“error即可,将数字09和“error存入列表中,当调用显示程序时,显示程序根据40H单元记录的个数决定显示位数。如果输入错误将在数码管上显示“error。 这样就得到了显示程序的入口:30H37H,依次存放各位到千万位;40H,存放输出的数字位数。出口:数码管,P0输出字段码P2输出位选码。 图9 显示程序流程图 4.3 运算程序 运算程序分四

17、个模块,即加减乘除。分别采用两字节运算,因此运算结果不能超出亮开始 初始化R0缓冲区指针,R1位控制,RS循环控制次数,R0=30H, R1=#80H, R5=40H 数码管显示 判断显示是否完毕? 完成 Y N 一起查找并改正错误,同时,教我们正确,0賌鰠 12字节,否那么会溢出。溢出时显示“error。 加法程序:入口是R0被加数低位字节地址指针,R1加数低位字节地址指针,R3字节数。出口R0和值地址指针,R3和值字节数。 运算时用R0、R1间接寻址,从低字节算起,高字节采用带进位加ADDC,计算结果回送到R0所指的单元中,并将和字节数放入R3单元中,如果R3大于3说明溢出。 减法程序同加

18、法类似,入口R0被减数低位字节地址指针,R1减数低位字节地址指针,R3字节数。出口R0差值低位字节地址指针,R3差值字节数。只是判断溢出时通过CY位,如果运算后CY位有借位,那么将07H位置1,否那么置0. 乘法程序入口R3被乘数低位地址字节,R2被乘数高位地址字节,R7乘数低位地址字节,R6乘数高位地址字节。出口R3,R5,R6,R7结果字节由高到低。通过判断R5是否为零就可以知道运算结果是否溢出,如果溢出就显示“error。 除法程序入口被除数放在R4R5R6R7,R4R5内容为0,R4高R5低,除数放在R2R3,R2高R3低。出口商放在R6R7,R6高R7低,余数放在R4R5,R4高R5

19、低。 5.元器件清单及程序清单 5.1元器件清单 序号 名称 型号 数量 1 滑动变阻器 3214G-1-100E 1 2 51系列单片机 AT89C51 1 3 按钮 BUTTON 1 4 电容 CAP 22pF 2 5 电容 CAP-ELEC 20uF 1 6 晶振 CRYSTAL 12MHz 1 7 4*4键盘 KEYPAD-SMALLCALC 1 8 液晶显示器 LM020L 1 9 电阻 RES 1k 1 10 上拉电阻 RESPACK-8 1 5.2程序清单 rs equ p1.5 ;确定具体硬件的连接方式 rw equ p1.6 ;确定具体硬件的连接方式 e equ p1.7 ;

20、lcd1602引脚 org 0h main: acall start mov p0,#8fh ;写入显示起始地址第一行第一个位置 acall enable ;调用写入命令子程序 mov r0,#2fh 0R 13 mov 2fh,#30h mov r6,#1 acall write1 mov 55h,#0 ;运算方式标志 main1: mov r0,#20h d: mov r0,#0 inc r0 cjne r0,#50h,d ;清理系统内存 mov 50h,#0 ;被操作数的位数 mov 51h,#0 ;操作数的位数 mov 52h,#0 ;结果的位数 mov 53h,#0 ; mov 58

21、h,#0 ;符号标志位 d0: mov 56h,#0 mov r1,#50h mov 54h,#2fh sjmp test ;接收被操作数 d1: mov a,50h cjne a,#0,d2 mov 50h,#1 acall start mov p0,#8fh acall enable mov r0,#2fh mov 2fh,#30h mov r6,#1 acall write1 d2: mov r1,#51h mov 54h,#3fh sjmp test test: mov p2,#0f0h mov a,p2 anl a,#0f0h ;anl :与 cjne a,#0f0h,have ;a

22、!=f0, sjmp have sjmp test have: mov a,#0feh next: mov b,a mov p2,a read: mov a,p2 anl a,#0f0h ;a=f0 cjne a,#0f0h,yes mov a,b rl a cjne a,#0efh,next yes:acall day mov a,p2 anl a,#0f0h cjne a,#0f0h,yes1 sjmp test yes1: mov r2,a mov a,b anl a,#0fh orl a,r2 ;orl 或 y0: cjne a,#0e7h,y1 ajmp main y1: cjne

23、a,#0d7h,y2 mov b,#31h ajmp cha y2: cjne a,#0b7h,y3 mov b,#34h ajmp cha y3: cjne a,#77h,y4 mov b,#37h ajmp cha y4: cjne a,#0ebh,y5 mov b,#30h ajmp cha y5: cjne a,#0dbh,y6 mov b,#32h ajmp cha y6: cjne a,#0bbh,y7 mov b,#35h ajmp cha y7: cjne a,#7bh,y8 mov b,#38h ajmp cha y8: cjne a,#0edh,y9 cjne r1,#50

24、h,y81 cjne r1,#0,y81 ajmp d0 y81:mov a,55h cjne a,#0,y82 ajmp d0 y82:mov a,5ah cjne a,#0,y87 mov a,51h cjne a,#0,y88 mov 51h,50h mov r0,#2fh mov r1,#3fh mov r2,#10h y83:mov a,r0 mov r1,a dec r0 dec r1 djnz r2,y83 mov a,55h cjne a,#1,y84 mov a,58h cjne a,#0ffh,y87 mov 55h,#2 sjmp y87 y84:cjne a,#2,y8

25、8 mov a,58h cjne a,#0ffh,y87 mov 55h,#1 sjmp y87 y88:mov a,55h cjne a,#3,y89 sjmp y85 y89:cjne a,#4,y87 y85:mov a,58h cjne a,#0ffh,y86 mov 59h,#0ffh y86:xrl a,59h mov 58h,a y87:acall suan ajmp d0 y9: cjne a,#0ddh,ya 骷扑恪?1.2根本功能: 首先,计算器可现实8位数字,开机运行时,只有数码管最低位显示为“0,其他位全部不显示; 翩_?臣( 14 mov b,#33h ajmp ch

26、a ya: cjne a,#0bdh,yb mov b,#36h ajmp cha yb: cjne a,#7dh,yc mov b,#39h ajmp cha yc: cjne a,#0eeh,yd mov a,#1 mov 59h,#0 push acc acall f sjmp yg yd: cjne a,#0deh,ye mov a,#2 mov 59h,#0 push acc acall f sjmp yg ye: cjne a,#0beh,yf mov a,#3 mov 59h,#0 push acc acall f sjmp yg yf: mov a,#4 mov 59h,#0

27、push acc acall f yg: pop 55h mov 51h,#0 mov r0,#30h yg0:mov r0,#0 inc r0 cjne r0,#40h,yg0 ajmp d1 cha:mov a,56h cjne a,#0,cha6 sjmp cha0 cha6: cjne r1,#10,cha0 ajmp test cha0: mov 59h,#0 ;乘法和除法中用 cjne r1,#50h,cha2 mov 55h,#0 mov 58h,#0 mov a,56h cjne a,#0,cha2 mov 56h,#1 mov 50h,#0 mov r0,#20h cha1:

28、 mov r0,#0 inc r0 cjne r0,#30h,cha1 cha2: cjne r1,#1,cha3 mov r0,54h cjne r0,#30h,cha3 mov r0,#0 mov r1,#0 cha3: cjne r1,#51h,cha4 mov 5ah,#2 cha4: mov r2,#8 ;重要语句 cha5: mov a,54h subb a,r2 mov r0,a mov a,r0 dec r0 mov r0,a dec r2 inc r0 mov a,r0 cjne a,54h,cha5 mov r0,54h mov r0,b acall show ajmp t

29、est ; f: mov 5ah,#0 cjne r1,#50h,f3 mov 51h,#0 mov r0,#30h ff: mov r0,#0 inc r0 cjne r0,#40h,ff f2: pop dpl pop dpl mov dptr,#yg push dpl push dph ret f3: mov a,51h cjne a,#0,f4 sjmp f2 f4: acall suan ret show: acall start mov a,#8fh subb a,r1 mov p0,a ;写入显示起始地址第一行第一个位置 acall enable ;调用写入命令子程序 mov a

30、,54h subb a,r1 mov r0,a inc r1 mov a,r1 mov r6,a acall write1 ret ;lcd1602局部 start: mov p0,#1h ;清屏并光标复位 acall enable ;调用写入命令子程序 mov p0,#8h ;设置显示模式:8位2行5x7点阵 acall enable ;调用写入命令子程序 mov p0,#0ch ;显示器开、光标关 acall enable ;调瀃E枿RKb齹汻孴靣藌剉齹汻0T鰁(W緥剉菑z-N裇皊哊陙馷剉N硩KN 15用写入命令子程序 mov p0,#6h ;文字不动,光标自动右移 acall enabl

31、e ;调用写入命令子程序 ret enable: clr rs ;写入控制命令的子程序 clr rw clr e acall delay setb e ret write1: mov a,r0 lcall write2 ;调用写入数据存放器子程序 inc r0 ;取码指针加1 djnz r6,write1 ret write2: mov p0,a setb rs ;rs=1 clr rw ;rw=0准备写入数据 clr e ;e=0执行显示命令 acall delay ;判断液晶模块是否忙?(用延时代替) setb e ;e=1 ret delay: mov r2,#2fh dl1:mov r

32、3,#0fh djnz r3,$ djnz r2,dl1 ret day:mov r2,#100 ;按键延时0.1s dl3:mov r3,#250 dl2:nop nop djnz r3,dl2 djnz r2,dl3 ret ;计算局部 suan: mov a,55h cjne a,#1,su0 mov a,58h cjne a,#0,su acall jiafa sjmp suan0 su: acall jianfa sjmp suan0 su0:cjne a,#2,su4 mov a,58h cjne a,#0,su1 acall jianfa sjmp suan0 su1:acall

33、 jiafa sjmp suan0 su4:cjne a,#3,su5 acall chengfa sjmp suan0 su5:acall chufa suan0: mov r0,50h cjne r0,#16,suan1 suan1: jc suan2 su6:mov r0,#20h su7:mov r0,#0 inc r0 cjne r0,#30h,su7 mov 2ah,#'E' mov 2bh,#'r' mov 2ch,#'r' mov 2dh,#'o' mov 2eh,#'r' mov 2fh,#

34、9;!' acall start mov p0,#80h mov r0,#20h mov r6,#10h acall write1 pop dpl pop dpl mov dptr,#main1 push dpl push dph ret suan2: mov 53h,#1 mov a,50h cjne a,#1,suan3 mov a,2fh cjne a,#30h,suan3 sjmp suan4 suan3: mov a,58h cjne a,#0ffh,suan4 mov a,#2fh subb a,50h mov r1,a mov r1,#'-' suan4:

35、 acall start mov p0,#80h mov r0,#20h mov r6,#16 acall write1 mov r1,#0 ret ;加法局部 jiafa: mov a,50h cjne a,51h,jia1 jia1: jc jia2 mov r2,50h mov 52h,50h sjmp jia3 jia2: mov r2,51h mov 52h,51h jia3: mov 54h,#2fh mov 57h,#3fh mov r1,#4fh e ;调瀃E枿RKb齹汻孴靣藌剉齹汻0T鰁(W緥剉菑z-N裇皊哊陙馷剉N硩KN 16jia4: mov r0,54h mov a,r

36、0 anl a,#0fh push acc mov r0,57h mov a,r0 anl a,#0fh pop b add a,b push acc mov a,r1 pop b add a,b acall bcd mov r1,b dec r1 mov r1,a dec 54h dec 57h djnz r2,jia4 mov a,#4fh subb a,52h mov r0,a cjne r0,#0,jia5 sjmp jia6 jia5: inc 52h jia6: acall jieguo ret jianfa: mov a,50h cjne a,51h,j3 j0: mov r2,

37、50h mov a,#2fh subb a,50h inc a mov r0,a add a,#10h mov r1,a j1: mov a,r0 subb a,r1 cjne a,#0,j2 inc r0 inc r1 djnz r2,j1 mov r0,#20h j5: mov r0,#0 inc r0 cjne r0,#2fh,j5 mov 58h,#0 mov 2fh,#30h mov 50h,#1 ret j2: mov a,r0 subb a,r1 j3: jnc j4 mov 54h,#3fh mov 57h,#2fh mov r1,#4fh mov r2,51h mov 52h

38、,51h mov a,58h cpl a mov 58h,a sjmp jian j4: mov 54h,#2fh mov 57h,#3fh mov r1,#4fh mov r2,50h mov 52h,50h jian: mov r0,57h mov a,r0 anl a,#0fh push acc pop b mov r0,54h mov a,r0 anl a,#0fh clr c push acc push b subb a,b push acc jnc jian3 pop b pop b pop acc add a,#10 subb a,b mov r1,a mov a,r2 mov

39、r3,a dec r3 mov r0,54h dec r0 jian1: clr c mov a,r0 anl a,#0fh push acc subb a,#1 push acc jnc jian2 clr c pop b pop acc add a,#10 subb a,#1 orl a,#30h mov r0,a dec r0 djnz r3,jian1 jian2: pop acc orl a,#30h mov r0,a pop b sjmp jian4 jian3: pop acc mov r1,a pop b pop b jian4: dec 54h dec 57h dec r1

40、djnz r2,jian lcall jieguo mov a,#2fh subb a,50h inc a ll start mov p0,#80h mov r0,#20h mov r6,#16 acall write1 mov r1,#0 ret ;加法局部 jiafa: mov a,50h cjne a,51h,jia1 jia1:'0賃? 17 mov r0,a jian5: cjne r0,#30h,jian6 mov r0,#0 dec 50h inc r0 cjne r0,#30h,jian5 jian6: ret ;乘法局部 chengfa: mov a,50h cjne

41、 a,#1,cheng4 mov a,2fh cjne a,#30h,cheng4 ret cheng4: mov a,51h cjne a,#1,cheng5 mov a,3fh cjne a,#30h,cheng5 mov 52h,#1 sjmp cheng cheng5: mov 57h,#3fh mov r2,#0 mov a,50h add a,51h mov 52h,a mov r3,51h cjne a,#17,cheng3 cheng3: jc cheng mov 50h,#16 ret cheng: mov 54h,#2fh mov r1,#4fh mov a,r1 clr

42、c subb a,r2 mov r1,a mov r4,50h cheng0: mov r0,54h mov a,r0 anl a,#0fh push acc mov r0,57h mov a,r0 anl a,#0fh pop b mul ab push acc mov a,r1 pop b add a,b lcall bcd mov r1,b dec r1 push acc mov a,r1 pop b add a,b mov r1,a dec 54h djnz r4,cheng0 dec 57h inc r2 djnz r3,cheng dec 52h mov a,#4fh subb a

43、,52h mov r0,a cjne r0,#0,cheng1 sjmp cheng2 cheng1: inc 52h cheng2: lcall jieguo ret ;除法局部 chufa: mov a,51h cjne a,#1,chuf mov a,3fh cjne a,#30h,chuf mov 50h,#16 ret chuf: mov a,50h cjne a,#1,chu mov a,2fh cjne a,#30h,chu mov 2fh,#30h mov 58h,#0 sjmp chu2 chu:mov a,50h cjne a,51h,chu5 mov a,#2fh sub

44、b a,50h inc a mov r0,a add a,#10h mov r1,a mov r2,50h chu0: mov a,r0 mov 5bh,r1 cjne a,5bh,chu5 inc r0 inc r1 djnz r2,chu0 mov 2fh,#31h chu2: mov r0,#20h chu3: mov r0,#0 inc r0 cjne r0,#2fh,chu3 mov 50h,#1 ret chu5: jnc chu6 mov 2fh,#30h mov 58h,#0 sjmp chu2 chu6: mov a,50h subb a,51h inc a mov r4,a

45、 mov 5ch,a chu7: mov a,r4 ite1 mov r1,#0 ret ;加法局部 jiafa: mov a,50h cjne a,51h,jia1 jia1:* 18 dec a mov r5,a cjne r5,#0,chu9 sjmp chu11 chu9: mov r0,#31h chu10: mov a,r0 dec r0 mov r0,a inc r0 inc r0 cjne r0,#40h,chu10 mov 3fh,#30h djnz r5,chu9 sjmp chu11 chu19: mov r0,#3fh chu20: dec r0 mov a,r0 in

46、c r0 mov r0,a dec r0 cjne r0,#2fh,chu20 mov 30h,#0 chu11: mov r0,#21h mov r1,#31h chu12: mov a,r0 mov 5bh,r1 cjne a,5bh,chu13 inc r0 inc r1 cjne r0,#30h,chu12 mov a,#70h subb a,r4 mov r0,a inc r0 sjmp chu15 chu13: jc chu14 mov a,#70h subb a,r4 mov r0,a inc r0 lcall j4 sjmp chu11 chu14: djnz r4,chu19 chu15: mov r0,#4fh mov r1,#6fh chu16: mov a,r1 mov r0,a mov r1,#0 dec r0 dec r1 cjne r0,#40h,chu16 mov 52h,5ch dec 52h mov a,#4fh subb a,52h mov r0,a cjne r0,#0,chu17 sjmp chu18 chu17: inc 52h chu18: mov r0,#2fh chu21: mov r0,#0 dec r0 cjne r0,#1fh,chu

温馨提示

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

评论

0/150

提交评论