#include<reg52.h>
sbit LED = P1^0;
unsigned char i;
void main()
{
while(1)
{
LED = 0;
for(i=0;i<100;i++);
LED = 1;
for(i=0;i<100;i++);
}
}
RST是复位按钮,单击一下之后,程序就会跑到最开始的位置运行。
右侧的按钮是RUN按钮,单击下,程序就会全速跑起来。
这两个按钮是最常用的按钮。
学会设置断点。进入到debug模式之后,这段程序主要是查看C程序的运行时间。就是看sec项。
肉眼几乎看不到灯的闪烁,因为时间太短了。
更改程序二:
#include<reg52.h>
sbit LED = P1^0;
unsigned int i;
void main()
{
while(1)
{
LED = 0;
for(i=0;i<10000;i++);
LED = 1;
for(i=0;i<10000;i++);
}
}
闪烁的比较快。
更改程序三:
#include<reg52.h>
sbit LED = P1^0;
unsigned int i;
void main()
{
while(1)
{
LED = 0;
for(i=0;i<30000;i++);
LED = 1;
for(i=0;i<30000;i++);
}
}
这样,就可以看到放光LED闪烁得比较正常了。
补充:
使用for语句的嵌套,可以讲时间变的更长。
#include<reg52.h>
sbit LED = P1^0;
unsigned int i;
void main()
{
while(1)
{
LED = 0;
for(j=0;j<200;j++)
{
for(i=0;i<30000;i++);
}
LED = 1;
for(i=0;i<30000;i++);
}
}
8个发光二极管,分别对应单片机I/O口的P1.0到P1.7,8个单片机IO口组成一个字节,在编写程序的时候,直接使用P1来操作。
C语言的8位二进制数代表8个I/O口。
P1=0xFE,它是二进制11111110的简短表示形式。
#include<reg52.h>
sbit LED = P1^0;
unsigned int i;
void main()
{
while(1)
{
P1 = 0xFE; //led1 11111110
for(i=0;i<30000;i++);
P1 = 0xFD; //led2 11111101
for(i=0;i<30000;i++);
P1 = 0xFB; //led3 11111011
for(i=0;i<30000;i++);
P1 = 0xF7; //led4 11110111
for(i=0;i<30000;i++);
P1 = 0xEF; //led5 11101111
for(i=0;i<30000;i++);
P1 = 0xDF; //led6 11011111
for(i=0;i<30000;i++);
P1 = 0xBF; //led7 10111111
for(i=0;i<30000;i++);
P1 = 0x7F; //led8 01111111
for(i=0;i<30000;i++);
}
}
在使用位移的方法,对代码进行处理。
#include<reg52.h>
unsigned int i=0;
unsigned char j=0;
void main()
{
while(1)
{
P1=~(1<<j++);
if(8==j)
{
j=0
}
for(i=0;i<30000;i++);
}
}
流水灯反方向流动:
#include<reg52.h>
unsigned int i=0;
unsigned char j=0;
void main()
{
while(1)
{
P1=~(0x7F>>j++);
if(8==j)
{
j=0
}
for(i=0;i<30000;i++);
}
}
全部点亮到全部熄灭:
#include<reg52.h>
unsigned int i=0;
void main()
{
P1=0x00;
for(i=0;i<30000;i++);
P1=0xFF;
}