#include<reg52.h>
sbit D1=P0^0;
void main()
{
for(i=2;i>0;i--)
{
d1=0;
delay(500);
d1=1;
delay(500);
}
}
程序中的错误:
1、sbit D1=P0^0;和d1=0;要求大小写一致。即全部都用D1或全都用d1。
2、delay(500);程序中缺少子程序。
3、程序是需要一直循环执行的,或是在等待外部变化(引脚电平变化,外部中断等),或是内部定时等等。
如下完整程序:
#include<reg52.h>
unsigned char i;
sbit d1=P1^0;
void delay(unsigned int ms)//延时1毫秒(不够精确的)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<100;j++);
}
void main()
{
for(i=2;i>0;i--)
{
d1=0;
delay(500);
d1=1;
delay(500);
}
while(1); //D1变化两次后一直空闲,死循环。
}
但是仿真中和实际电路中要看,delay(500);的延时时间到底是多少,太少的话仿真程序或人在实验板上不能看到。
|