设被加数 NA 及加数 NB 均为三字节压缩BCD码,分别存放于内部 RAM 的 20H~22H 及 30H~32H 单元中,低位在前,高位在后。
要求计算两数之和,并将和存放到内部 RAM 中 3FH~42H 单元,仍然是低位在前,高位在后。
编写完整的汇编语言源程序。
;----------------------------------------------------------------------
最佳答案:
;这个程序当然是楼主要求的C51单片机程序。
;下面增加一些调试时使用的数据。
ORG 0000H
MOV 20H, #12H ;假设被加数NA是563412
MOV 21H, #34H
MOV 22H, #56H
MOV 30H, #77H ;假设加数NB是998877
MOV 31H, #88H
MOV 32H, #99H
LCALL ADD3B ;调用3字节加法子程序
SJMP $ ;相加结束,暂停,此时可以观察到和的数值:1562289
;-----------------------------------------------
; 3字节加法子程序如下:
;相加数字的字节数不多,地址且有三个,故不用循环结构
ADD3B:
MOV A, 20H
ADD A, 30H
DA A
MOV 3FH, A
MOV A, 21H
ADDC A, 31H
DA A
MOV 40H, A
MOV A, 22H
ADDC A, 32H
DA A
MOV 41H, A
MOV A, #0
ADDC A, #0
MOV 42H, A
RET
关键字:C51单片机 压缩BCD码 相加程序
引用地址:
C51单片机的压缩BCD码相加程序
推荐阅读最新更新时间:2024-03-16 16:02
基于AT89C51单片机和DTMF通信实现电话远程控制家用电器的设计
引言 随着计算机技术和电信业的发展,通过电话线进行的远程通信越来越常见。人们通常采用MODEM进行通信,但是在通信数据量不大,对通信速率要求不高的应用场合,我们可以考虑一种DTMF通信方式,它具有接口简单,成本低廉且可靠性高的特点。本文介绍了一种电话远程控制家用电器的实现方法。用户可通过任意一部双音频电话(包括手机、电话分机)对自己家庭安装的家用电器进行开机、停机、设定等操作。 1、系统结构 本系统主要包括电话振铃检测电路、电话自动摘挂机电路、DTMF信号解码电路、语音提示电路以及整个系统的控制心脏CPU电路。当有电话打入时,电话振铃检测电路检测到有振铃并等待至系统默认的振铃次数后,控制器自动摘机,并在语音电路的提示下依次输入
[单片机]
基于80C51单片机的电子储物柜系统
基于80C51单片机的电子储物柜系统 电路描述: 安全是我们日常的生活中最关心的问题。 每个人都觉得安全问题是非常至关重要的,在家里的门和安全,可以尽可能多的安全。 为了对于门访问安全 因此,我们打算通过引进一个电子密码锁系统,该系统包括一个人得到一个访问某些项目之前要输入密码的安全性,以及在家里,一个房间密码锁系统,不只是普通的单用户密码锁系统,需要用户插入已编程的代码来访问一个房间; 它是一个密码锁系统,有密码而且可以启用多个用户访问。 在基于51单片机的门储物柜,只允许授权人员进入限制区域的门禁系统。 该系统由8位微控制器AT89C2051具有ROM的2K字节的程序存储器完全控制。 该系统具有通过该密码,可以通过它来输入
[单片机]
C51单片机中断定义
C51函数声明对ANSI C作了扩展,具体包括: 1. 中断函数声明: 中断声明方法如下: void serial_ISR () interrupt 4 { /* ISR */ } 为提高代码的容错能力,在没用到的中断入口处生成iret语句,定义没用到的中断。 /* define not used interrupt, so generate IRET in their entrance */ void extern0_ISR() interrupt 0{} /* not used */ void timer0_ISR () interrupt 1{} /* not used */ void extern1_ISR()
[单片机]
C51单片机小程序(一)
好久没碰单片机了,有些生疏了。到现在还依稀记得自己独自坐在电脑屏幕前自学单片机,硬生生的去看了单片机的基础,现在想想还是挺有趣的。附上当初一点初学的单片机小程序,请大家多多指教! 用P1口作为输出口,接8位用作逻辑电平显示的发光二极管。设计程序使发光二极管间隔300ms先奇数亮再偶数亮,循环3次;一个发光二极管亮上下循环3次;两个分别从两边向中间流动3次;再从中间向两边流动3次;8个全部闪烁3次;关闭全部发光二极管,停止。 综合实验程序: #库定义 #include reg52.h #include intrins.h sbit led=P1^0; #位定义 int i,j,k,num,e,p,m;
[单片机]
80C51单片机的定时器/计数器介绍
定时器/计数器介绍 定时/计数器T0和T1分别是由两个8位的专用寄存器组成,即定时/计数器T0由TH0和TL0组成,T1由TH1和TL1组成。此外,其内部还有2个8位的特殊功能寄存器TMOD和TCON,TMOD负责控制和确定T0和T1的功能和工作模式,TCON用来控制T0和T1启动或停止计数,同时包含定时/计数器的状态。 TF1:定时器1溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除。或用软件清除。 TF0:定时器0溢出标志。定时/计数器溢出时由硬件置位。中断处理时由硬件清除,或用软件清除。 在现在很多新MCU中,不只有两个 定时/计数器,例如STC15系列就有四个定时/计数器,但是在使用上操作上是大同小异的。
[单片机]
80c51单片机的中断响应过程
中断响应 中断响应就是单片机CPU对中断源提出的中断请求的接受。中断请求被响应后,再经过一系列的操作,而后转向中断服务程序,完成中断所要求的处理任务。下面简要说明80c51的中断响应过程: 1.外中断采样和内中断置位 1.1外中断采样 要想知道外中断是否有请求发生,需要对外中断进行采样。 当通过软件将寄存器TCON的IT0(或IT1)位设置为0时,/INT0(或/INT1)为电平触发方式,CPU在每个机器周期的S5P2(第五个状态第2拍节)期间对/INT0(或/INT1)采样,一旦在P3.2(或P3.3)上检测到低电平时,则认为有外部中断申请,随即由硬件使TCON的IE0(或IE1)位置1,向CPU申请
[单片机]
MSC51单片机交通灯程序
/*************************************************************** * 程序名称:MSC51单片机交通灯 晶振:12.00 P1口 * 实验对象:HC6800单片机学习开发板 * 单 片 机:AT89S52或STC89C52 时间:红绿灯各亮10s * * 更多的资料和程序共享请关注51hei.com ****************************************************************/ /#include reg52.h #define uchar unsigned char /*宏定义 */ #defin
[单片机]
如何正确的使用C51单片机中的位域
定义这样的结构: typedef struct { uchar DC0_ALA:1; //电源0告警 uchar DC1_ALA:1; //电源1告警 uchar AC_ALA:1; //停电告警 uchar UN_H_ALA:1; //同频信道机失锁告警 uchar UN_L_ALA:1; //异频信道机失锁告警 uchar FAR_ALA:1; //远端通讯故障告警 uchar OPEN_ALA:1; //门襟告警 uchar x:1; }ALARM;//系统告警结构定义 定义变量并初始化: idata ALARM old_alarm={0,0,0,0,0,0,0,0}; 在main()函数中这样应用位域: if(ol
[单片机]