MCS51单片机数制转换程序

发布者:本人在最新更新时间:2023-08-23 来源: elecfans关键字:MCS51  单片机  数制转换 手机看文章 扫描二维码
随时随地手机看文章

;BCD小数转换为二进制小数(2位)
;入口    :R0(低位首址),R7
;占用资源:ACC,B,R5
;堆栈需求:2字节
;出口    :R3,R4


PDTB     :CLR    A
          MOV    R3,A
          MOV    R4,A
PDB1     :MOV    A,R3
          MOV    B,#9AH
          MUL    AB
          MOV    R5,B
          XCH    A,R4
          MOV    B,#19H
          MUL    AB
          ADD    A,R4
          MOV    A,R5
          ADDC   A,B
          MOV    R5,A
          MOV    A,@R0
          MOV    B,#9AH
          MUL    AB
          ADD    A,R5
          MOV    R4,A
          CLR    A
          ADDC   A,B
          XCH    A,R3
          MOV    B,#19H
          MUL    AB
          ADD    A,R4
          MOV    R4,A
          MOV    A,B
          ADDC   A,R3
          MOV    R3,A
          MOV    A,@R0
          MOV    B,#19H
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          DEC    R0
          DJNZ   R7,PDB1
          RET

;BCD小数转换为二进制小数(N位)
;入口    :R1(低位首址),M,N
;占用资源:ACC,B,R2,R3,R7
;堆栈需求:2字节
;出口    :R0

PDTBMN   :MOV    A,R0
          MOV    R2,A
          MOV    A,R1
          MOV    R3,A
          MOV    B,N
          CLR    A
PDBMN1   :MOV    @R0,A
          INC    R0
          DJNZ   B,PDBMN1
          MOV    A,N
          SWAP   A
          RR     A
          MOV    R7,A
PDBMN2   :MOV    A,R2
          MOV    R0,A
          MOV    A,R3
          MOV    R1,A
          MOV    B,M
          CLR    C
PDBMN3   :MOV    A,@R1
          ADDC   A,@R1
          DA     A
          JNB    ACC.4,PDBMN4
          SETB   C
          CLR    ACC.4
PDBMN4   :MOV    @R1,A
          INC    R1
          DJNZ   B,PDBMN3
          MOV    B,N
PDBMN5   :MOV    A,@R0
          RLC    A
          MOV    @R0,A
          INC    R0
          DJNZ   B,PDBMN5
          DJNZ   R7,PDBMN2
          MOV    A,R2
          MOV    R0,A
          RET

;BCD整数转换为二进制整数(1位)
;入口    :R0(高位地址),R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口    :R4

IDTB1    :CLR    A
          MOV    R4,A
IDB11    :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          ADD    A,@R0
          INC    R0
          MOV    R4,A
          DJNZ   R7,IDB11
          RET

;BCD整数转换为二进制整数(2位)
;入口    :R0(高位地址),R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口    :R3,R4

IDTB2    :CLR    A
          MOV    R3,A
          MOV    R4,A
IDB21    :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          MOV    R4,A
          MOV    A,B
          XCH    A,R3
          MOV    B,#0AH
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          MOV    A,R4
          ADD    A,@R0
          INC    R0
          MOV    R4,A
          CLR    A
          ADDC   A,R3
          MOV    R3,A
          DJNZ   R7,IDB21
          RET

;BCD整数转换为二进制整数(3位)
;入口    :R0(高位地址),R7
;占用资源:ACC,B
;堆栈需求:2字节
;出口    :R2,R3,R4

IDTB3    :CLR    A
          MOV    R2,A
          MOV    R3,A
          MOV    R4,A
IDB31    :MOV    A,R4
          MOV    B,#0AH
          MUL    AB
          MOV    R4,A
          MOV    A,B
          XCH    A,R3
          MOV    B,#0AH
          MUL    AB
          ADD    A,R3
          MOV    R3,A
          CLR    A
          ADDC   A,B
          XCH    A,R2
          MOV    B,#0AH
          MUL    AB
          ADD    A,R2
          MOV    R2,A
          MOV    A,R4
          ADD    A,@R0
          INC    R0
          MOV    R4,A
          CLR    A
          ADDC   A,R3
          MOV    R3,A
          CLR    A
          ADDC   A,R2
          MOV    R2,A
          DJNZ   R7,IDB31
          RET

[1] [2] [3]
关键字:MCS51  单片机  数制转换 引用地址:MCS51单片机数制转换程序

上一篇:MCS51单片机的检索查找程序
下一篇:51单片机存储器的结构和原理解析

推荐阅读最新更新时间:2024-11-19 12:00

AVR单片机下载烧录快速入门
存储器 锁定位(2)保护类型LB模式LB2LB1 111没有使能存储器保护特性210在并行和SPI/JTAG串行编程模式中Flash和EEPROM的进 一步编程被禁止,熔丝位被锁定。(1)300在并行和SPI/JTAG串行编程模式中Flash和EEPROM的进 一步编程及验证被禁止,锁定位和熔丝位被锁定(1)BLB0模式BLBO2BLB01 111SPM 和LPM 对应用区的访问没有限制210不允许SPM 对应用区进行写操作300不允许SPM 指令对应用区进行写操作,也不允许运行于 Boot Loader 区的LPM指令从应用区读取数据。若中断向量 位于Boot Loader 区,那么执行应用区代码时中断是禁止 的。401不允许运
[单片机]
AVR<font color='red'>单片机</font>下载烧录快速入门
PIC单片机之数码管
大家好, 通过前一期的学习, 我们已经对ICD2 仿真烧写器和增强型PIC 实验板的使用方法及学习方式有所了解与熟悉,学会了如何用单片机来控制发光管、继电器、蜂鸣器、按键等资源,体会到了学习板的易用性与易学性,特别是当自己第一次动手编程点亮一个发光管时,相信对于初学者来说,一定很兴奋,很有成就感吧!现在我们就趁热打铁,再向上跨一步,一起来学习一下数码管的工作原理及使用方法,这一期实验将会更具生动性。 说到七段数码管,它在家电及工业控制中有着很广泛的应用, 例如用来显示温度、数量、重量、日期、时间等,具有显示醒目、直观的优点。在一般的人机对话中,输入器件一般都是以按键为主,但输出器件则以数码管或LCD 为主。数码管作为一种应用十
[单片机]
PIC<font color='red'>单片机</font>之数码管
AVR单片机中断实现 ATmega16 INT ISR(INT0_vect)
2.21实例功能 前面例子中分别介绍了按键控制发光二极管的亮灭,但是我们注意到,在程序中需要一直检测按键的状态,这样明显的浪费了单片机的资源,降低了单片机的工作效率,。那么有没有一种方法可以让单片机不用一直检测按键的状态,而只在有按键动作时才去响应呢? 当然有!单片机中除了具有基本输入输出功能的作用外,还有专门检测外界信号并作出响应的中断系统。在本例中,通过利用外部中断实现单片机对按键事件的响应和处理。 本例中三个功能模块描述如下: ● 单片机系统:对按键事件产生的中断时间作出响应,并在数码管上显示按键按下的次数。 ● 外围电路:通过将按键连接到单片机的外部中断检测端口,实现中断产生电路,数码管显示电路用于指示
[单片机]
微控制器单端口线驱动多个LED显示器
许多仪器设计中都需要七段显示器。在基于微控制器的常规设计中,一个七段显示器使用四输出端线。图1为常规四位七段LED显示器示意图。在该例中,四位七段LED需要两个8位输出口。图2为另一个通用显示器多路设计,1.5个8位端线驱动四个七段显示器。因为有视觉暂留,必须对显示器进行不断刷新,使其看起来稳定。 图3的电路不需要多个端口线,用一个端口线驱动四个显示器。(理论上,用这种方法,一个端口线可以驱动任意多个显示器)。一旦需要更新显示,端口线应输出软件产生的脉冲链。第一个脉冲应为长脉冲,后续脉冲为数量等于显示器个数的多个短脉冲。 IC1单稳态和与门用作长脉冲探测器。IC2到IC5(CD40110)为十进制升降计数/锁存/显示器驱动器。微
[应用]
PIC单片机和AVR单片机与51单片机的优缺点分析
1、51系列单片机的优缺点分析 51系列是应用最广泛的单片机,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。 51系列优点之一是它从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,或布尔处理器。它的处理对象不是字或字节而是位。它不光能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。虽然其他种类的单片机也具有位处理功能,但能进行位逻辑运算
[单片机]
PIC<font color='red'>单片机</font>和AVR<font color='red'>单片机</font>与51<font color='red'>单片机</font>的优缺点分析
11-基于51单片机的光照和温湿度检测报警
具体实现功能 由STC89C52单片机+LCD1602液晶显示屏+ADC0832模块+蜂鸣器+DHT11温湿度传感器 +光照传感器+LED+按键构成。 具体功能: 1、LCD1602液晶第一行显示当前的光照值,第二行显示当前的温度和湿度值; 2、可以设置光照、温湿度上下限报警值。共4个按键:复位按键、减键、加键、设置键;设定的参数具有掉电保存,保存在STC单片机的内部,上电无需重新设置; 3、当光照值高于设定的报警值或温度湿度超出上下限范围,蜂鸣器和指示灯会发出声光报警; 4、当温湿度值低于或高于设定的范围时,相应的指示灯亮,蜂鸣器报警。 单片机介绍 51单片是一种低功耗、高性能CMOS8位微控制器,具有
[单片机]
11-基于51<font color='red'>单片机</font>的光照和温湿度检测报警
STM8单片机无线315&433脉宽自适应_通用解码程序
单片机源程序如下: /* RFINT不能用PA1 要改板 改在PC6 */ /* Includes ------------------------------------------------------------------*/ #define MAIN_C #include ALL.h void Delay(u16 nCount) { /* Decrement nCount value */ while (nCount != 0) { nCount--; } } //10ms定时中断初始 在PWM时可更改 void TIME1_CONFIG(void) { /* Init TIMER 1 *
[单片机]
单片机系统中RAM的测试方法研究
在各种单片机应用系统中,存储器的正常与否直接关系到该系统的正常工作。为了提高系统的可靠性,对系统的可靠性进行测试是十分必要的。通过测试可以有效地发现并解决因存储器发生故障对系统带来的破坏问题。本文针对性地介绍了几种常用的单片机系统RAM测试方法,并在其基础上提出了一种基于种子和逐位倒转的RAM故障测试方法。 1 RAM测试方法回顾 (1)方法1 参考文献中给出了一种测试系统RAM的方法。该方法是分两步来检查,先后向整个数据区送入#00H和#FFH,再先后读出进行比较,若不一样,则说明出错。 (2)方法2 方法1并不能完全检查出RAM的错误,在参考文献中分析介绍了一种进行RAM检测的标准算法MARCH—G。MARCH一G算
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved