程序编译没有错误,可是用protues仿真的时候,led根本就没有反应。电路比较简单,所以应该不会有错误。想让你们帮我看看是怎么回事。程序如下:
#include<reg51.h>
sbit s1= P2^0;
sbit s2= P2^1;
sbit s3= P2^2;
void delayled()
{
unsigned char i,j;
for(i=0;i<250;i++)
for(j=0;j<250;j++)
;
}
void delay20ms()
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++)
;
}
void ms1()
{
P0=0x00;
}
void ms2()
{
P0=0xff;
}
void ms3()
{
unsigned char i,j;
for(i=0;i<8;i++)
{
P0=0xfe<<i;
delayled();
}
if(P0==0x00)
{
for(j=0;j<8;j++)
{
P0=0xfe>>i;
delayled();
}
}
}
void main()
{
unsigned char keyval;
TMOD=0x01;
EA=1;
ET0=1;
TR0=1;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
while(1)
{
switch(keyval)
{
case 1:ms1();
break;
case 2:ms2();
break;
case 3:ms3();
break;
}
}
}
void time0() interrupt 1
{
unsigned char keyval;
if((P0&0xf0)!=0xf0)
{
delay20ms() ;
if(s1==0)
keyval=1;
if(s2==0)
keyval=2;
if(s3==0)
keyval=3;
}
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
} |