用51如何写汇编程序写程序:多位BCD码(比如10个字节)转换成十六进制数

BCD码转换成十六进制码-博泰典藏网
典藏文档 篇篇精品
BCD码转换成十六进制码
导读:实验1BCD码转换成十六进制码1.实验目的,(1)熟悉编码转换程序,(2)掌握编写和运行子程序的技巧2实验设备计算机一台,操作系统:Windows98/2000/xp应用软件:KeilC513实验内容,将片内RAM20H单元中两位BCD码转换成相应的十六进制码,转换结果保存于22H单元4实验原理提示,将BCD码(表示十进制数92)转换成十六进制编码表示形式,其中YH为转换后的十实验1
BCD码转换成十六进制码 1. 实验目的 (1) 熟悉编码转换程序 (2) 掌握编写和运行子程序的技巧 2实验设备 计算机一台 硬件配置:pentium2及以上配置,内存为128MB,硬盘剩余空间100MB,配置有串口,并口,和USB口 操作系统:Windows98/2000/xp 应用软件:KeilC51 3实验内容 将片内RAM 20H单元中两位BCD码转换成相应的十六进制码,转换结果保存于22H单元 4实验原理提示 常用BCD码转十六进制码的方法为“乘十加数”法。例如,将BCD码(表示十进制数92)转换成十六进制编码表示形式,算法为:YH=(09*0A+02)H =5CH。其中YH为转换后的十六进制数。再二进制运算中乘法可以用移位(左移)实现,*0A可以写成*08+*02,其中*08是将被乘数左移3为,*02是将被乘数左移1为。则(09*0A+02)H=(09+08+09*02+02)D=(10)B=()B=5CH。
5.BCD码转换成十六进制码的实验程序流程图如图 6.实验参考程序 ORG 0000H
ORG 0030H MAIN:
MOV R0,#12H
MOV R1,#06H
MOV R2,#08H
MOV R3,#11H
ANL A,#0FH
ANL A,#0F0H
ANL A,#0FH
MOV R3,#0H
ANL A,#0F0H
END 7.实验要求 (1)掌握编码转换程序的编写方法 (2)根据实验任务要求,编制源程序 (3)上机调试程序,记录相关调试信息 (4)写出实验报告
排列程序 1. 实验目的 (1) 熟悉MCS-51指令系统,掌握程序设计方法。 (2) 掌握排序程序算法 (3) 掌握循环程序实现数据排序的基本方法。 2. 实验设备 计算机一台,配置同上 3. 实验内容 编写并调试一个通用排序子程序,其功能为将RAM的40H~4FH单元16个子字节无符号二进制整数按从小到大顺序排列,将排序后数据存储于RAM的50H~5FH单元中。 4.
实验原理提示 从40H单元的第一个数开始依次和相邻单元的另一个数比较,如果顺序对,则不作任何操作;如果顺序不对,则将这两个数交换位置。这样,在完成第1遍n-1次比较后,最大的数到了最后,所以第2遍比较只是比较n-2次,最多作n-1遍比较就可完成排序。在比较中设立一个标志位flag=1说明排序未完成,进入外循环;若flag=0,说明排序已完成,程序结束。 实验程序: ORG
0 LJMP MAIN ORG 40H MAIN:
MOV R5,#10H
MOV R0,#40H
MOV R1,#0H
MOV R2,#10H LOOP0: ACALL LOOP
DJNZ R5,LOOP0 LOOP1: MOV R0,#40H
MOV B,#0FH LOOP2:
MOV 11H,@R0 LOOP3:
CJNE A,11H,LOOP4 LOOP4:
MOV @R0,10H
INC R0 LOOP5:
DJNZ B,LOOP2
DJNZ R2,LOOP1
SJMP $ LOOP:
MOV DPTR,#TAB
MOVC A,@A+DPTR
RET TAB: DB
3,5,4,1,7,9,3,4,6,1,12,45,23,17,34,12 END 实验3
定时器 1. 实验目的 (1)、加深对MCS-51单片机定时器内部结构,工作原理和工作方式的理解 (2)、掌握定时器工作在定时器状态下的编程方法 (3)、掌握中断服务程序的设计方法 2.实验设备 计算机,单片机实仪,KeilC51和Proteus软件。 3、实验内容 定时器实验 在使用12MHz晶振的条件下,用T1产生50ms定时,两个7段LED数码管从“00”开始显示,每1s加1,到达“59”后,再从“00”开始,完成60s定时功能。 4、实验原理提示 定时/计数器实际上是加1计数器,当它对具有固定时间间隔的内部机器周期进行计数时,它是定时器;当它对外部事件进行计数时,它是计数器。MCS-51单片机内部包括T0和T1两个定时/计数器。每个定时/计数器有4种工作方式。 一、定时器计数初值的确定 在定时工作状态下,输入的时钟脉冲是由晶体振荡器的输出经12分频取得的,因此,定时器可看作是对单片机机器周期的计数器。若晶振频率为12MHz,则定时器的加1计数器每隔1?s加1。加1计数器满溢出时才申请中断,所以在给加1计数器赋计数初值时,输入的是加1计数器计数的最大值与这一计数的差值。设加1计数器计数的最大初值为M,计数值为N,计数初值为Count,则Count的计算方法如下。 定时状态:Count=M-定时时间/T,T=12/fosc 若单片机的时钟频率为12MHz,T1工作在定时方式1,定时时间为50ms,则其计数初值Count为:
Count=M-定时时间/T=2-36-=3CB0H 所以,定时器的计数初值为TH1=3CH,TL1=0B0H。 二、定时器初始化程序 定时器包括两个控制寄存器TMOD和TCON,向TMOD和TCON写入相应的值来设置各个定时器的操作模式和控制功能。 启动定时器的步骤如下: (1)、设定TMOD的值:TMOD=10H,设置T1工作于定时方式1(16位方式) (2)、设定IE的值:启动中断SETBET1。 (3)、设定TL1和TH1的值:TL1=0B0H,TH1=3CH。 (4)、启动T1定时:SETBTR1。 实验电路图 实验程序流程图 实验程序:
0030H START:
TMOD, #10H
TL1, #0B0H
A, #20, T_LP2
R1, #60, LP0
R1, #00H LP0:
R0,#00H T_LP2:
TL1, #0B0H
试验要求 (1) 画出实验程序流程图:编写汇编语言和C51程序。 (2) 上级调试该程序。 实验四-基本输入/输出 1.实验目的 (1) 掌握MCS-51单片机I/O口的基本输入/输出功能。 (2) 学习延时子程序的编写和使用。 2.实验设备 计算机一台;单片机试验仪一台;Keil C51和Proteus软件。 3.实验内容 (1)P0作为输出口,接8只发光二极管,编写程序使发光二极管实现“单灯左移”。 (2)P0作为输出口,接8只发光二极管,P2作为输入口,P2.0和P2.1接两个按键PB0和PB1;当按下PB0时P0口上连接的8只发光二极管全亮;当按下PB1时P0口上连接的8只发光二极管全灭。 4.实验原理提示 (1)P0口为双向I/O口,具有较大的负载能力,除作为地址、数据复用口外,还可以用作通用I/O口。P2口味准双向口,常作为通用I/O使用。当某一口线作为输入口线时,必须向锁存器相应位写入“1”,该位才能作为输入。 (2)常用延时方法 常用循环指令来实现延时,设晶振为12MHz,因此1个机器周期为1us。
DELAY: MOV
R5,#250T1=1个机器周期,设定外循环次数为250次
R6,200 T2=1个机器周期,设定内循环次数为250次
R6,$ T3=2个机器周期,本次执行200次
R5,D1 T4=2个机器周期,本次执行250次
RET T5=2个机器周期,返回子程序 包含总结汇报、自然科学、外语学习、出国留学、IT计算机、表格模板、医药卫生、资格考试、高中教育以及实验1
BCD码转换成十六进制码等内容。本文共2页
相关内容搜索双字节十六进制整数转换成三字节BCD码整数 - 单片机 - 电子工程世界-论坛
后使用快捷导航没有帐号?
请完成以下验证码
查看: 12241|回复: 1
双字节十六进制整数转换成三字节BCD码整数
在线时间1 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 20, 距离下一级还需 180 积分
一粒金砂(中级), 积分 20, 距离下一级还需 180 积分
功能:双字节十六进制整数转换成三字节BCD码整数
入口条件:待转换的双字节十六进制整数在R6、R7中。
出口信息:转换后的三字节BCD码整数在R3、R4、R5中。
影响资源:PSW、A、R2~R7 堆栈需求: 2字节
HB2: CLR A ;BCD码初始化
MOV R2,#10H ;转换双字节十六进制整数
HB3: MOV A,R7 ;从高端移出待转换数的一位到CY中
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
DA A ;十进制调整
MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整
DJNZ R2,HB3 ;处理完16bit
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
回复: 双字节十六进制整数转换成三字节BCD码整数
谁有子程序我想要
EEWORLD 官方微信
EE福利 唾手可得
Powered by十六进制数转BCD码显示 - 其他技术 - 电子工程世界网
十六进制数转BCD码显示
14:43:18来源: 51hei
在计算机中,数据是以0和1的二进制方式来表示的。比如一个8位的,就表示为 ,由于二进制数用起来比较不方便,所以人们通常以16进制的方式来表达,比如上述的进制表示为0x11。
我们知道16进制的0x11, 如果用十进制来表示的话,代表的数是16。
由于十进制数是人们在日常生活中常用的数据表示方式。所以,当我们想要显示某个数的话,一般会转化为十进制里显示。下面我们来看看如果把一个4位的十进制数以的形式显示出来。
void BS004_COM1_Send_4bits_BCD_Num(int number) &//圆点博士:发送一个字符
&unsigned char num_th[4];
&unsigned char i,bcd_code_
&num=fabs(number);
&if(number<0) BS004_COM1_Send_Char(&#39;-&#39;); & &//圆点博士:发送字符-
&if(num>9999) num=9999;
&if(num>999) bcd_code_len=4;
&else if(num>99) bcd_code_len=3;
&else if(num>9) bcd_code_len=2; &
&else bcd_code_len=1;
&if(num>999) {num_th[3]=num/1000; num-=num_th[3]*1000;}
&if(num>99) &{num_th[2]=num/100; &num-=num_th[2]*100; }
&if(num>9) & {num_th[1]=num/10; & num-=num_th[1]*10; }&
&num_th[0]=
&for(i=0;i
代码首次判别数据是否是负数 ,如果是的话,显示符号-。
然后我们看到,转换是以除法和减法的方式来实现的。
关键字:&&
编辑:什么鱼 引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

我要回帖

更多关于 汇编语言程序代码 的文章

 

随机推荐