16進制與10進制轉(zhuǎn)化程序
16進制轉(zhuǎn)換算成10進制程序
本文引用地址:http://www.eepw.com.cn/article/171053.htmunsigned char d[10]; //用于顯示的10位顯示緩存
//======================================================== //16進制to10進制輸出子程序:顯示數(shù)據(jù),起始位,結束位,有無小數(shù)點//========================================================void output(unsigned long dd,unsigned char s,unsigned char e,unsigned char dip) { unsigned long div; unsigned char tm[8],i,j; div=10000000; for (i=0;i8;i++) { tm[i]=dd/div; dd%=div; div/=10; } for (i=0;i6;i++) { if (tm[i]!=0) break; tm[i]=nul; } tm[5]|=dip; //小數(shù)點控制,請看“串行LED數(shù)碼管顯示驅(qū)動程序” j=7; for (i=s;ie;i++) { d[i]=tm[j]; j--; }}
//把顯示位5-9位的10進制數(shù)轉(zhuǎn)換成為16進制數(shù)unsigned int input(void) { unsigned int dd,dat; dd=10000;dat=0; for (i=5;i10;i++) { dat+=dd*temp; dd/=10; } return(dat);}/* 89C51系列CPU編程器接收CPU程序*/
#i nclude reg51.h>#i nclude intrins.h>#i nclude absacc.h>
#define e 8#define p 9#define l 10
sbit led=P3^2;sbit p27=P2^7;sbit p26=P2^6;sbit p36=P3^6;sbit p37=P3^7;sbit rst=P3^3;sbit ale=P3^5;sbit vpp=P3^4;
bit b_break;unsigned int adds;
// 13.8mSvoid int_t0(void) interrupt 1 { TH0=-100; b_break=1;}
void wait(unsigned char w) { unsigned int t=w*184; b_break=0; TL0=-t%256-1;TH0=-t/256; while (b_break==0) {}}
void nop(void) { _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();}
unsigned char command(void) { TH0=-100;b_break=0; while (RI==0) {if (b_break==1) return(0);} RI=0; return(SBUF);}
void earsure(unsigned char cpu) { switch (cpu) { case 1: //89C51 case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop(); ale=0;wait(110);ale=1;nop(); break; case 3: case 4:break; case 5: case 6:break; }}
void program(unsigned char cpu) { unsigned int bdata adds=0; unsigned char d; switch (cpu) { case 1: //89C51 case 2: 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; case 3: case 4: case 5: case 6:break; }}
void lock(unsigned char cpu) { unsigned char i; switch (cpu) { case 1: //89c51 case 2: //lock 1 rst=p26=p36=p27=p37=1;nop(); vpp=1; nop(); ale=0; // for (i=0;i6;i++) wait(100); wait(1); ale=1; nop(); vpp=0; nop(); //lock 2 rst=p26=p27=1;p36=p37=0;nop(); vpp=1; nop(); ale=0; // for (i=0;i6;i++) wait(100); wait(1); ale=1; nop(); vpp=0; nop(); //lock 3 rst=p26=p36=1;p27=p37=0;nop(); vpp=1; nop(); ale=0; // for (i=0;i6;i++) wait(100); wait(1); ale=1; nop(); vpp=0; nop(); break; case 3: case 4: case 5: case 6:break; }}
void main(void) { unsigned char disp,flash,temp,cpu; EA=1; SCON=0xd8;PCON=0x80; TMOD=0x21; TL1=TH1=0xff;TR1=1; TH0=-100;ET0=TR0=1;
flash=0x80;