經(jīng)典常用的單片機(jī)c程序
//16進(jìn)制->10進(jìn)制互換程序
本文引用地址:http://m.butianyuan.cn/article/150798.htm//======================================================== //把顯示位5-9位的10進(jìn)制數(shù)轉(zhuǎn)換成為16進(jìn)制數(shù) #i nclude reg51.h> #define e 8 sbit led=P3^2; bit b_break; void wait(unsigned char w) { void nop(void) { unsigned char command(void) { void earsure(unsigned char cpu) { void program(unsigned char cpu) { void lock(unsigned char cpu) {
unsigned char d[10]; //用于顯示的10位顯示緩存
//16進(jìn)制to10進(jìn)制輸出子程序:顯示數(shù)據(jù),起始位,結(jié)束位,有無(wú)小數(shù)點(diǎn)
//========================================================
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ù)點(diǎn)控制,請(qǐng)看“串行LED數(shù)碼管顯示驅(qū)動(dòng)程序”
j=7;
for (i=s;ie;i++) {
d[i]=tm[j];
j--;
}
}
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 intrins.h>
#i nclude absacc.h>
#define p 9
#define l 10
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;
unsigned int adds;
// 13.8mS
void int_t0(void) interrupt 1 {
TH0=-100;
b_break=1;
}
unsigned int t=w*184;
b_break=0;
TL0=-t%256-1;TH0=-t/256;
while (b_break==0) {}
}
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
TH0=-100;b_break=0;
while (RI==0) {if (b_break==1) return(0);}
RI=0;
return(SBUF);
}
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;
}
}
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;
}
}
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;
}
}
評(píng)論