|
内容:是12个LED发光二极管左循环闪亮,然后右循环闪亮- #include "reg52.h"
- #define LEDPORT1 (P1) //定义LED灯的端口
- #define LEDPORT2 (P2)
- #define MOVESPEED (500) //定义流水的速度
- #define ALLLEDOFF (0xff) //使所有灯熄灭的值
- //初始化函数
- void Init(void)
- {
- LEDPORT1=ALLLEDOFF; //熄灭所有灯
- LEDPORT2=ALLLEDOFF;
- }
- //延时函数
- //x为延时时间,范围1~65535
- void xDelay(unsigned int x)
- {
- unsigned char y;
- for(;x>0;x--)
- for(y=110;y>0;y--);
- }
- //流水效果1函数
- void Effect1(void)
- {
- unsigned char TempOut1,TempOut2,xIndex;
- TempOut1=0xfe; //输出值赋初值
- TempOut2=0xfe;
- for(xIndex=8;xIndex>0;xIndex--) //循环处理8个灯
- {
- LEDPORT1=TempOut1; //输出值刷新到端口线
- TempOut1<<=1; //计算下一个输出值
- xDelay(MOVESPEED); //延时一会
- }
- LEDPORT1=ALLLEDOFF;
- for(xIndex=4;xIndex>0;xIndex--) //循环处理8个灯
- {
- LEDPORT2=TempOut2; //输出值刷新到端口线
- TempOut2<<=1; //计算下一个输出值
- xDelay(MOVESPEED); //延时一会
- }
- }
- //流水效果2函数
- void Effect2(void)
- {
- unsigned char TempOut1,TempOut2,xIndex;
- TempOut1=0xfe;
- TempOut2=0xfe;
- for(xIndex=8;xIndex>0;xIndex--)
- {
- LEDPORT1=TempOut1;
- TempOut1<<=1;
- TempOut1|=1;
- xDelay(MOVESPEED);
- }
- for(xIndex=4;xIndex>0;xIndex--)
- {
- LEDPORT2=TempOut2;
- TempOut2<<=1;
- TempOut2|=1;
- xDelay(MOVESPEED);
- }
- }
- void main(void)
- {
- Init(); //调用初始化函数
- while(1){ //无限循环
- Init();
- Effect1(); //调用效果1函数
- Init();
- Effect2(); //调用效果2函数
- }
- }
复制代码
|
|