单片机简易计算器设计(汇编语言)_第1页
单片机简易计算器设计(汇编语言)_第2页
单片机简易计算器设计(汇编语言)_第3页
单片机简易计算器设计(汇编语言)_第4页
单片机简易计算器设计(汇编语言)_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、KEYBUF EQU 40H ; 键号存放单元ORG 0000HLJMP MAINORG 0030HMAIN: MOV KEYBUF,#0 ; 初始键号设位0,也可以为任意值MOV R0,#30H ; 显示首地址MOV R2,#0CH ; 计算数据存放单元个数CLR AQING: MOV R0,A ; 将数据存放单元清零INC R0DJNZ R2,QINGMOV P0,#8FH ; 关闭显示MOV R1,#30H ; 将显示首地址存放R1里;=; 五位无符号显示子程序DIS1: MOV R0,#30H ; 把显示数据第一位放在R0里MOV R2,#04H ; 把显示的位码放在R2里MOV R3

2、,#05H ; 把显示的长度放在R3里DIS2: MOV A,R0ANL A,#0FH ; 屏蔽显示数据的高四位MOV B,AMOV A,R2ANL A,#0FH ; 屏蔽位码的高四位SW AP AORL A,BMOV P0,A ; 送总显示数据到P0显示 LCALL DELY4ms ; 调用延时4msINC R0 ; 取下一个显示数据DEC R2DJNZ R3,DIS2 ; 四位显示晚后重新开始显示;=; 键盘扫描子程序WAIT: MOV P1,#0FFH ;P1口送高电平CLR P1.0 ; 第一行清零MOV A,P1 ; 读P1口ANL A,#0F0H ; 低位屏蔽XRL A,#0F0H

3、 ; 判断低位是否有低电平 , 即判断是否有按键按下 JZ NOKEY1 ; 地位有低电平继续扫描, 否者跳到第而行去扫描 LCALL DELY10ms ; 延时10ms 去抖在进行判断是否有按键按下 MOV A,P1 ; 继续读P1口ANL A,#0F0H ; 判断低位是否有低电平CJNE A,#0E0H,NK1 ; 如果扫描数据不为0E0H 就转到NK1MOV KEYBUF,#0 ; 否者判断为0号键AJMP DK ; 转DK1查表程序NK1: CJNE A,#0D0H,NK2 ; 如果扫描数据不为0D0H 就转到NK2MOV KEYBUF,#1 ; 否者判断为1号键AJMP DK ; 转

4、DK2查表程序NK2: CJNE A,#0B0H,NK3 ; 如果扫描数据不为0B0H 就转到NK3MOV KEYBUF,#2 ; 否者判断为2号键AJMP DK ; 转DK3查表程序NK3: CJNE A,#70H,NK4 ; 如果扫描数据不为70H 就转到NK4LJMP SAN_CHUNK4: NOPNOKEY1: MOV P1,#0FFH; 和上面相同 CLR P1.1MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY2LCALL DELY10MSMOV A,p1ANL A,#0F0HXRL A,#0F0HJZ NOKEY2MOV A,P1ANL A,#0F0H

5、CJNE A,#0E0H,NK5MOV KEYBUF,#3AJMP DKNK5: CJNE A,#0D0H,NK6MOV KEYBUF,#4AJMP DKNK6: CJNE A,#0B0H,NK7MOV KEYBUF,#5AJMP DKNK7: CJNE A,#70H,NK8MOV KEYBUF,#10; 否者判断为3号键 AJMP DK; 转DK4查表程序 NK8: NOPNOKEY2: MOV P1,#0FFHCLR P1.2MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY3LCALL DELY10MSANL A,#0F0HXRL A,#0F0HJZ NOKEY

6、3MOV A,P1ANL A,#0F0HCJNE A,#0E0H,NK9MOV KEYBUF,#6AJMP DKNK9: CJNE A,#0D0H,NK10MOV KEYBUF,#7AJMP DKNK10: CJNE A,#0B0H,NK11MOV KEYBUF,#8AJMP DKNK11: CJNE A,#70H,NK12LJMP DENG_HAONK12: NOPNOKEY3: MOV P1,#0FFHCLR P1.3MOV A,P1ANL A,#0F0HXRL A,#0F0HJZ NOKEY4LCALL DELY10MSMOV A,P1ANL A,#0F0HXRL A,#0F0HJZ N

7、OKEY4MOV A,P1ANL A,#0F0HCJNE A,#0E0H,NK13LJMP CHUNK13: CJNE A,#0D0H,NK14LJMP CHENGNK14: CJNE A,#0B0H,NK15LJMP JIANNK15: CJNE A,#70H,NK16LJMP JIANK16: NOP;=; 查表求键值程序MOV A,KEYBUF ; 查表程序 查对应的键号数据MOV DPTR,#TABLE ; 把表头地址放入DPTRMOVC A,A+DPTR ;A 里面存放的为键号, 利用A 和表头地址找到对应的键号数据MOV B,A ; 把查到的数据送往显示单元INC R1 ; 取下一

8、个显示单元MOV A,R1CJNE A,#36H,DKA1 ; 判断显示单元是否已满MOV R1,#35H ;35H,36H 单元用于更好的控制五位显示AJMP DKADKA1: MOV 34H,33H ; 按键代码按左移显示,先按先显示MOV 33H,32HMOV 32H,31HMOV 31H,30HMOV 30H,BDKA: MOV A,P1 ; 读P1口ANL A,#0F0H ; 屏蔽高四位XRL A,#0F0H ; 地位是有低电平JNZ DKA ; 如果有低电平继续读P1口, 否者向下执行, 查找第二行 NOKEY4: LJMP DIS1;=; 功能按键功能设定DENG_HAO:MOV

9、 DPTR,#JI_SUAN ; 等号键功能通过加、减、乘、除设定的偏移量来调用子程序MOV A,3CH ;3CH 存放的为功能程序入口地址偏移量JMP A+DPTR ; 转移到按键功能程序JI_SUAN: AJMP JIA1 ; 加计算子程序AJMP JIAN1 ; 减计算子程序AJMP CHENG1 ; 乘计算子程序AJMP CHU ; 除计算子程序;=删除键功能SAN_CHU: ACALL QING_DISAJMP DKA;=加键功能JIA: MOV 3CH,#00HACALL CUN_SHUACALL QING_DISAJMP DKA;=减键功能JIAN: MOV 3CH,#02HAC

10、ALL CUN_SHUACALL QING_DISAJMP DKA;=乘键功能CHENG: MOV 3CH,#04HACALL CUN_SHUACALL QING_DISAJMP DKA;=除键功能CHU: MOV 3DH,#06HACALL CUN_SHUACALL QING_DISAJMP DKA;=; 存被加(减、乘、除)数,存放在37H3BH里 CUN_SHU: MOV 37H,30H ;36H 存放的为最低位 MOV 38H,31HMOV 39H,32HMOV 3AH,33HMOV 3BH,34H ;3AH 存放的为最高位 RET;=; 清除显示单元QING_DIS: MOV R1,

11、#30HQING1: MOV R1,#00HINC R1MOV A,R1CJNE A,#36H,QING1MOV R1,#30HLOP1: RET;=; 十进制加法子程序JIA1:MOV A,37H ; 个位被加数ADD A,30H ; 个位被加数+加数MOV B,#10 ; 十六进制除10转换成BCD 码 DIV ABMOV 30H,B ; 余数即个位存放在30H MOV 37H,A ; 商存放在37HMOV A,38H ; 十位被加数ADD A,31H ; 十位被加数+加数ADD A,37H ; 加上个位之和的进位MOV 37H,#00H MOV B,#10 DIV AB MOV 31H,

12、B MOV 38H,A MOV A,39H ADD A,32H ADD A,38H MOV 38H,#00H MOV B,#10 DIV AB MOV 32H,B MOV 39H,A MOV A,3AH ADD A,33H ADD A,39H MOV 39H,#00H MOV B,#10 DIV AB MOV 33H,B MOV 3AH,A ;清除 37H ;十六进制除 10 转换成 BCD 码 ;余数即十位存放在 31H ;商存放在 38H ;百位计算同十位 ;千位计算同十位 MOV A,3BH ;万位计算同十位 ADD A,34H ADD A,3AH MOV 3AH,#00H MOV B,#10 DIV AB MOV 34H,B MOV 3BH,#00H AJMP DKA ;= JIAN1: AJMP DKA CHENG1: AJMP DKA CHU1: AJMP DKA ;= ;延时程序和查表表格 DELY4ms: MOV R6,#8 ;延时 4 毫秒 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET DEL

温馨提示

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

评论

0/150

提交评论