89C2051单片机8流水灯的C语言源程序
单片机编程,可以从最简单的语句和语法开始。下面的流水灯程序简洁明了,物理意义清晰,初学者可以一试。
#include <reg51.h> // 2022-01-28 VER 1.0
sbit D1=P1^0; // P1.0 TO LED1
sbit D2=P1^1; // P1.1 TO LED2
sbit D3=P1^2; // P1.2 TO LED3
sbit D4=P1^3; // P1.3 TO LED4
sbit D5=P1^4; // P1.4 TO LED5
sbit D6=P1^5; // P1.5 TO LED6
sbit D7=P1^6; // P1.6 TO LED7
sbit D8=P1^7; // P1.7 TO LED8
main()
{
int data j=0; // J < 32767
D1=D2=D3=D4=D5=D6=D7=D8=0; // LED off
while(1);
{
for (j=0;j<5000;j++) // RUN TIME = 0.1 S(j<5000)
{D8=0; D1=1;} // RUN TIME = 0.5 S(j<30000)
for (j=0;j<5000;j++)
{D1=0; D2=1;}
for (j=0;j<5000;j++)
{D2=0; D3=1;}
for (j=0;j<5000;j++)
{D3=0; D4=1;}
for (j=0;j<5000;j++)
{D4=0; D5=1;}
for (j=0;j<5000;j++)
{D5=0; D6=1;}
for (j=0;j<5000;j++)
{D6=0; D7=1;}
for (j=0;j<5000;j++)
{D7=0; D8=1;}
}
}
流水灯程序说明:第1行为头文件;第2-9行定义单片机P1.0-P1.7口分别对应8个LED;第10行开始为主程序;第12行定义变量j,注意变量j最大只能取32767;第13行初始化8个LED为0即不点亮;第14行实际上令下面大括号内的程序进入死循环;第16-31行是利用for语句延时,位操作8个灯依次亮灭,首先D1亮,然后D1灭D2亮,直至第8个灯亮后再返回第16行循环。改变for语句j的大小,可以调整流水灯的转动速度。