unsigned char d[10]; //用于显示的10位显示高速缓存
//=======================================================================================
//16进制to10进制输出子程序:显示数据、开头位、结束位、有无小数点
//=======================================================================================
voidoutput(unsignedlongDD,unsigned char s,unsigned char
e,unsigned char dip ) {
无符号龙珠;
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)空白;
tm[i]=nul;
}
tm[5]|=dip; //小数点控制请参阅“串行LED数字代码显示驱动程序”
j=7;
for(I=s; ie; I ) {
d[i]=tm[j];
j----;
}
}
//将显示位的5-9位的十进制数转换为十六进制数
unsignedintinput(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.8mS
voidint_T0(void ) interrupt 1 {
TH0=-100;
b_break=1;
}
voidwait(unsignedcharw
unsigned int t=w*184;
b_break=0;
wile(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;
wile(ri==0) if ) b_break==1)返回(0) 0; }
return(sbuf;
}
voidearsure(unsignedcharCPU ) {
交换机(CPU )。
case 1: //89C51
case 2:rst=p26=1; p27=p36=p37=0; nop (; vpp=1; nop (;
ale=0; 等待(110; ale=1; nop (;
布雷克;
case 3:
case 4:break;
case 5:
case 6:break;
}
}
语音程序(unsignedcharcpu ) )。
无符号int bdata adds=0;
无符号字符;
交换机(CPU )。
case 1: //89C51
case 2:
p36=p37=1; rst=1;
wile(1) {
TH0=-100; b_break=0;
wile(ri==0) if ) b_break==1)返回; }
d=SBUF;
//address
p27=1;
//data
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
TH0=-100; b_break=0;
while(d!=P1 ) if(b_break==1) return; } //data
轮询
SBUF=d;
adds;
}
布雷克;
case 3:
case 4:
case 5:
case 6:break;
}
}
voidlock(unsignedcharCPU ) {
无符号字符I;
交换机(CPU )。
case 1: //89c51
case 2:
//lock 1
vpp=1;
nop (;
ale=0;
//for(I=0; i6; I ) wait ) 100;
wait(1);
ale=1;
nop (;
vpp=0;
nop (;
//lock 2
vpp=1;
nop (;
ale=0;
//for(I=0; i6; I ) wait ) 100;
wait(1);
ale=1;
nop (;
vpp=0;
nop (;
//lock 3
vpp=1;
nop (;
ale=0;
//for(I=0; i6; I ) wait ) 100;
wait(1);
ale=1;
nop (;
vpp=0;
nop (;
布雷克;
case 3:
case 4:
case 5:
case 6:break;
}
}
voidmain(void ) {
unsigned char disp,flash,temp,cpu;
SCON=0xd8; PCON=0x80;
TH0=-100; ET0=TR0=1;
flash=0x80