十六进制旋转十进制gxdjm
unsigned char d[10]; //用于显示的10位显示高速缓存
//=======================================================================================
//十六进制to10进制输出端子gxdjm:显示数据、起始位、结束位、有无小数点
//=======================================================================================
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数码管显示驱动gxdjm”
j=7;
for(I=s; 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可编程控制器为CPUgxdjm*/
#i nclude
#i nclude
#i nclude
#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;
}
}
void program (未注册c )
har 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;}
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
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
vpp=1;
nop();
ale=0;
// for (i=0;i<6;i++) wait(100);
wait(1);
ale=1;
nop();
vpp=0;
nop();
//lock 2
vpp=1;
nop();
ale=0;
// for (i=0;i<6;i++) wait(100);
wait(1);
ale=1;
nop();
vpp=0;
nop();
//lock 3
vpp=1;
nop();
ale=0;
// for (i=0;i<6;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;
SCON=0xd8;PCON=0x80;
TH0=-100;ET0=TR0=1;
flash=0x80;
while (1) {
switch (temp) {
case 0:
case 1: //89c51
case 2: //89C52
case 3: //80f51
case 4: //80F52
case 5: //87F51
case 6:cpu=temp;SBUF=temp;break;//87f52
case e:SBUF=temp;earsure(cpu);break; //erasure
case p:SBUF=temp;program(cpu);break; //program
case l:lock(cpu);SBUF=temp;break; //lock
default:SBUF=temp;break;
}
b_break=0;
if ((++disp)>flash) {disp=0;led=!led;}
}
}
//HT1380实时时钟驱动gxdjm
sbit clock_dat=P0^1;
sbit clock_clk=P0^2;
sbit clock_rst=P0^3;
sbit a0=ACC^0;
sbit a1=ACC^1;
sbit a2=ACC^2;
sbit a3=ACC^3;
sbit a4=ACC^4;
sbit a5=ACC^5;
sbit a6=ACC^6;
sbit a7=ACC^7;
void clock_out(unsigned char dd) {
ACC=dd;
clock_dat=a0;clock_clk=1;clock_clk=0;
clock_dat=a1;clock_clk=1;clock_clk=0;
clock_dat=a2;clock_clk=1;clock_clk=0;
clock_dat=a3;clock_clk=1;clock_clk=0;
clock_dat=a4;clock_clk=1;clock_clk=0;
clock_dat=a5;clock_clk=1;clock_clk=0;
clock_dat=a6;clock_clk=1;clock_clk=0;
clock_dat=a7;clock_clk=1;clock_clk=0;
}
unsigned char clock_in(void) {
clock_dat=1;
a0=clock_dat;www.dgzj.com
clock_clk=1;clock_clk=0;a1=clock_dat;
clock_clk=1;clock_clk=0;a2=clock_dat;
clock_clk=1;clock_clk=0;a3=clock_dat;
clock_clk=1;clock_clk=0;a4=clock_dat;
clock_clk=1;clock_clk=0;a5=clock_dat;
clock_clk=1;clock_clk=0;a6=clock_dat;
clock_clk=1;clock_clk=0;a7=clock_dat;
return(ACC);
}
unsigned char read_clock(unsigned char ord) {
unsigned char dd=0;
clock_clk=0;
clock_rst=0;
clock_rst=1;
clock_out(ord);
dd=clock_in();
clock_rst=0;
clock_clk=1;
return(dd);
}
void write_clock(unsigned char ord,unsigned char dd) {
clock_clk=0;
clock_rst=0;
clock_rst=1;