在单片机 keil里编写一个8位二进制转换十进制的程序?

在单片机 keil里编写一个8位二进制转换十进制的程序?,第1张

定义三个变量 bai shi ge,要转换的变量是a

bai=a/100

shi=a/10%10

ge=a%10

送LCD显示时候在个 十 百上分别加0X30即可。

1、打开Keil,新建一个51工程,同时新建一个main.c文件,并加入到工程源代码当中。

2、再点击新建文件按钮,新建一个汇编语言源文件:test.asm,并将它保存到指定目录。

3、在test.asm当中输入下面的代码。

4、代码编写完成后,需要将test.asm加入到工程当中,即鼠标右键点击对应工程的源程序文件夹,选择“Add Files to Group……”,软件会d出“Add Files to Group……“对话框。

5、Keil默认的源文件是c,输入*.asm查找所有汇编语言源文件,确定后点击“Add”按钮,然后会显示该目录所有的asm文件,选择该文件再次点击“Add”即可完成添加。

6、添加完test.asm后,回到main.c,对test_fun进行声明调用,然后编译即可,正常情况是不会出现Error也不会出现Warning。

7、如果在汇编源程序的函数前没有添加RSEG语句则在编译时会出现下面的错误和警告。

数码管输入,要的是8位2进制数据,不是16进制。

我在做毕业设计,有写二进制到十进制的转换程序

算法是相似的,如果一个数比如127,要转换到二进制。我先除以最高位的权值----2的8次方(64),然后取整得到1,将其存储到一个单元后,左移一位。然后原先的余数除以次高位的权值----2的7次方(32),然后取整得1,左移一位存储的数据。依次类推,可将其转化为二进制。

这是我2进制转10进制的

void

BtoD()

{

uchar

a1=a0

float

An1=0,An2

uint

i=0,j=4

for(i<8i++)

//将2进制的数据转换到一个一维数组中

{

a1=a1&table2[i]

a1=_cror_(a1,i)

c[i]=a1

a1=a0

}

An1=c[7]*128+c[6]*64+c[5]*32+c[4]*16+c[3]*8+c[2]*4+c[1]*2+c[0]*1

An1=(An1/256)*5

//类型转换

for(jj>0j--)

{

An2=An1

table1[j-1]=(int)An2

//转换成四位模拟数字,存储在Table1中

An1-=(int)An2

An1*=10

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7929518.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存