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
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)