如题,希望各位大神帮我看看有木有错误。。。
#include<reg51.h>
#define unchar unsigned char
unchar mum,a,b,eec;
sbit C1=P0^0;
sbit C2=P0^1;
sbit C3=P0^2;
sbit C4=P0^3;
sbit C5=P0^4;
sbit C6=P0^5;
sbit C7=P0^6;
sbit C8=P0^7;
sbit S1=P1^0;
void main()
{
while(1)//大循环
{
mum=0;
eec=0;
while(S1); //触发按键检测开始
for(a=10;a>0;a--) //延时10ms
for(b=120;b>0;b--);
while(S1); //触发按键检测结束
TMOD=0x01; //开始初始化定时计数器
TH0=(65536-1)/256; //赋初值(注:1不是工作值,填填上去而已)
TL0=(65536-1)%256;
EA=1;
ET0=1; //初始化完毕
TR0=1; //定时计数器开始运行
mum++; //进入定时计数器中断的次数+1
while(eec!=1);//限制程序执行步数,方便控制中断
mum++;
while(eec!=2);
mum++;
while(eec!=3);
mum++;
while(eec!=4);
mum++;
while(eec!=5);
mum++;
while(eec!=6);
mum++;
while(eec!=7);
mum++;
while(eec!=8);
mum++;
while(eec!=9);
mum++;
while(eec!=10);
mum++;
while(eec!=11);
mum++;
while(eec!=12);
mum++;
while(eec!=13);
mum++;
while(eec!=14);
mum++;
while(eec!=15);
mum++;
while(eec!=16);
TR0=0;//把定时器计数器关掉,准备又一次循环(发射)
}
}
void DCP()interrupt 1
{
while(mum==1) //每一次定时计数器溢出后进入中断程序,都可根据进入次数即mum的值来选择执行那一部分程序
{
TH0=(65536-1)/256; //这里的1还是填填上去的。。。。具体要看模拟器出来的数值
TL0=(65536-1)%256;
C1=0;
eec++;
}
while(mum==2)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C1=1;
eec++;
}
while(mum==3)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C2=0;
eec++;
}
while(mum==4)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C2=1;
eec++;
}
while(mum==5)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C3=0;
eec++;
}
while(mum==6)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C3=1;
eec++;
}
while(mum==7)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C4=0;
eec++;
}
while(mum==8)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C4=1;
eec++;
}
while(mum==9)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C5=0;
eec++;
}
while(mum==10)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C5=1;
eec++;
}
while(mum==11)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C6=0;
eec++;
}
while(mum==12)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C6=1;
eec++;
}
while(mum==13)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C7=0;
eec++;
}
while(mum==14)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C7=1;
eec++;
}
while(mum==15)
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
C8=0;
eec++;
}
while(mum==16)
{
C8=1;//最后一次执行中断程序,不赋定时器初值
eec++;
}
200字以内,仅用于支线交流,主线讨论请采用回复功能。