16进制转换算成10进制程序doc.docx
《16进制转换算成10进制程序doc.docx》由会员分享,可在线阅读,更多相关《16进制转换算成10进制程序doc.docx(24页珍藏版)》请在冰豆网上搜索。
![16进制转换算成10进制程序doc.docx](https://file1.bdocx.com/fileroot1/2022-10/28/b15fc8fe-96bc-4601-91f4-9d92ba5d6175/b15fc8fe-96bc-4601-91f4-9d92ba5d61751.gif)
16进制转换算成10进制程序doc
16进制转换算成10进制程序
STC单片机中的eeprom写入和读取6位的10进制数需要进行数据类型转换吗?
具体是怎样现的呢?
2013-06-0410:
24
满意回答
提问者采纳 2013-06-0410:
27
6位10进制数,转换为16进制,再写入EEPROM.
longx;
分4个字节写入
ucharc1;
c1=x>>24;//最高字节
c1=x>>16;//次高字节
c1=x>>8;//次低字节
c1=x&0xff;//最低字节
分别写入就可以了。
追问 我用的是stc12C5A60S2单片机,我将转化轩16进制的数保存在一个数组,然后整个数组写进去,当需要的时候再读出来还原成十进制数可否呢?
回答 当然可以。
追问 想了一下,不知应该如何用单片机C语言去实现啊,可以指导下不?
提问者评价 谢谢哈评论 | ningling_21 知道达人 | 来自团队 单片机学习 | 十级 采纳率26%擅长:
其他编程语言 汇编语言 C/C++
16进制转换算成10进制程序
来源:
本站整理作者:
佚名2009年01月14日23:
33
0
分享
QQ空间新浪微博腾讯微博人人网
[导读]16进制转换算成10进制程序 unsignedchard[10]; //用于显示的10位显示缓存 //======================
关键词:
进制
16进制转换算成10进制程序
unsignedchard[10]; //用于显示的10位显示缓存
//========================================================
//16进制to10进制输出子程序:
显示数据,起始位,结束位,有无小数点
//========================================================
voidoutput(unsignedlongdd,unsignedchars,unsignedchar
e,unsignedchardip){
unsignedlongdiv;
unsignedchartm[8],i,j;
div=10000000;
for(i=0;i<8;i++){
tm[i]=dd/div;
dd%=div;
div/=10;
}
for(i=0;i<6;i++){
if(tm[i]!
=0)break;
tm[i]=nul;
}
tm[5]|=dip; //小数点控制,请看“串行LED数码管显示驱动程序”
j=7;
for(i=s;i d[i]=tm[j];
j--;
}
}
//把显示位5-9位的10进制数转换成为16进制数
unsignedintinput(void){
unsignedintdd,dat;
dd=10000;dat=0;
for(i=5;i<10;i++){
dat+=dd*temp;
dd/=10;
}
return(dat);
}
/* 89C51系列CPU编程器接收CPU程序*/
#include
#include
#include
#definee8
#definep9
#definel10
sbitled=P3^2;
sbitp27=P2^7;
sbitp26=P2^6;
sbitp36=P3^6;
sbitp37=P3^7;
sbitrst=P3^3;
sbitale=P3^5;
sbitvpp=P3^4;
bitb_break;
unsignedintadds;
// 13.8mS
voidint_t0(void)interrupt1{
TH0=-100;
b_break=1;
}
voidwait(unsignedcharw){
unsignedintt=w*184;
b_break=0;
TL0=-t%256-1;TH0=-t/256;
while(b_break==0){}
}
voidnop(void){
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
unsignedcharcommand(void){
TH0=-100;b_break=0;
while(RI==0){if(b_break==1)return(0);}
RI=0;
return(SBUF);
}
voidearsure(unsignedcharcpu){
switch(cpu){
case1:
//89C51
case2:
rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop();
ale=0;wait(110);ale=1;nop();
break;
case3:
case4:
break;
case5:
case6:
break;
}
}
voidprogram(unsignedcharcpu){
unsignedintbdataadds=0;
unsignedchard;
switch(cpu){
case1:
//89C51
case2:
p36=p37=1;rst=1;
while
(1){
TH0=-100;b_break=0;
while(RI==0){if(b_break==1)return;}
RI=0;
d=SBUF;
//address
P0=adds%256;
P2=adds/256;
p27=1;
//data
P1=d;
nop(); //48clcl
//vpp
vpp=1;
nop(); //48clcl
//ale
ale=0;
wait
(1);//100uS
ale=1;
nop(); //10uS
vpp=0;
nop(); //48clcl
p27=0;
nop(); //48clcl
P1=0xff;
TH0=-100;b_break=0;
while(d!
=P1){if(b_break==1)return;} //data
polling
SBUF=d;
adds++;
}
break;
case3:
case4:
case5:
case6:
break;
}
}
voidlock(unsignedcharcpu){
unsignedchari;
switch(cpu){
case1:
//89c51
case2:
//lock1
rst=p26=p36=p27=p37=1;nop();
vpp=1;
nop();
ale=0;
// for(i=0;i<6;i++)wait(100);
wait
(1);
ale=1;
nop();
vpp=0;
nop();
//lock2
rst=p26=p27=1;p36=p37=0;nop();
vpp=1;
nop();
ale=0;
// for(i=0;i<6;i++)wait(100);
wait
(1);
ale=1;
nop();
vpp=0;
nop();
//lock3
rst=p26=p36=1;p27=p37=0;nop();
vpp=1;
nop();
ale=0;
// for(i=0;i<6;i++)wait(100);
wait
(1);
ale=1;
nop();
vpp=0;
nop();
break;
case3:
case4:
case5:
case6:
break;
}
}
voidmain(void){
unsignedchardisp,flash,temp,cpu;
EA=1;
SCON=0xd8;PCON=0x80;
TMOD=0x21;
TL1=TH1=0xff;TR1=1;
TH0=-100;ET0=TR0=1;
flash=0x80;
while
(1){
temp=command();