|
回复:需要AT89C2051的C语言
#include<Reg51.h>
#define uchar unsigned char
sbit OUT=P3^0;
sbit in1=P3^1;
sbit in2=P3^2;
sbit in3=P3^3;
sbit in4=P3^4;
uchar c1=0,c2=0,c3=0,c4=0;
void wait(int c)
{
int a2=0,c1=0;
while(c!=0){
for(;a2<100;a2++){
c1++;}
c--;
c1=0;
a2=0;
}
}
chang()
{
if(in1==0){
switch(c1)
{
case 0: OUT=in1;break;
case 1: OUT=in1;break;
case 2: OUT=in1;break;
}
do{}while(in1==0);
c1++;
}
if(in2==0){
switch(c2)
{
case 0:OUT=in2;break;
case 1:OUT=in2;break;
case 2:OUT=in2;break;
case 3:OUT=in2;break;
}
do{}while(in2==0);
c2++;
}
if(in3==0){
switch(c2)
{
case 0: OUT=in3;break;
case 1: OUT=in3;break;
case 2: OUT=in3;break;
case 3: OUT=in3;break;
case 4: OUT=in3;break;
}
do{}while(in3==0);
c3++;
}
if(in4==0){
switch(c2)
{
case 0: OUT=in3;break;
case 1: OUT=in3;break;
case 2: OUT=in3;break;
case 3: OUT=in3;break;
case 4: OUT=in3;break;
case 5: OUT=in3;break;
}
do{}while(in4==0);
c3++;
}
return(OUT);
}
SHA()
{
if(c1==2){c1=0;
wait(50);//最后一个计数脉冲时间;
OUT=!OUT;
wait(50);//最后一个计数脉冲时间;
}
if(c2==3){c2=0;
wait(50);//最后一个计数脉冲时间;
OUT=!OUT;
wait(50);//最后一个计数脉冲时间;
}
if(c3==4){c3=0;
wait(50);//最后一个计数脉冲时间;
OUT=!OUT;
wait(50);//最后一个计数脉冲时间;
}
if(c4==5){c4=0;
wait(50);//最后一个计数脉冲时间;
OUT=!OUT;
wait(50);//最后一个计数脉冲时间;
}
OUT=1;
}
void main(void)
{
while(1)
{
chang();
OUT=1;
SHA();
}
}
能否在这个基础上改进呢, |
|