/*******************************************************
程序功能:花样流水灯
开发环境:Keil4
硬件环境:eeskill多功能开发学习板/实验箱(2017版),STC12C5A60S2,11.092M晶振
 
接线说明:使用杜邦线连接P1口与底板单色流水灯模块的JP15 ,具体接法:P10-I1,P11-I2,P12-I3,P13-I4,P14-I5,P15-I6,P16-I7,P17-I8.
跳线说明:无
实验现象:8个流水灯采用查询法,从L1到L8依次点亮,然后由L1到L8依次熄灭;
 然后,采用循环法,分别从从L8到L1和L1到L8依次点亮,只亮一次。
 最后同时闪烁3次
 
 
技术支持:http://www.eeskill.com
淘宝店铺:http://cepark.taobao.com
作者:eeskill
时间:2017-07-01
*******************************************************/
#include "REG52.h"
/******************************************************
 查表表格
*******************************************************/
unsigned char code table[]={0xfe,0xfc,0xf8,0xf0,
 0xe0,0xc0,0x80,0x00,
 0x01,0x03,0x07,0x0f,
 0x1f,0x3f,0x7f,0xff,
 }; //rom允许情况可以无限添加
void Delay(unsigned int); //延时函数
void main(void)
{
 unsigned char i; //定义一个无符号字符型局部变量 i 取值范围 0~255
 while(1)
 {
 for(i=0;i<16;i++) //查询法依次点亮和熄灭8个LED
 {
 P1=table[i];
 Delay(1000);
 }
 P1=0x7f; //赋初始值 
 for(i=0;i<8;i++) //循环右移点亮LED
 {
 Delay(800);
 P1>>=1;
 P1=P1|0x80; //右移后,最左端自动赋值0,所以需要该语句赋值1
 } 
 
 
 P1=0xfe; //赋初始值 
 for(i=0;i<8;i++) //循环左移点亮LED
 {
 Delay(800);
 P1<<=1;
 P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1
 }
 for(i = 0;i<3;i++) // 8个LED同时闪烁
 {
 P1 = 0x00; // 八个灯全亮
 Delay(1000); // 延时一段时间
 P1 = 0xff; // 八个灯全灭
 Delay(1000); // 延时一段时间
 } 
 }
}
/******************************************************************************
函数名称:Delay
函数功能:延时函数
入口参数:uiCount-延时参数,每加1增加0.5ms
返回值:无
备注:无
*******************************************************************************/
void Delay(unsigned int uiCount)
{
 unsigned char j = 244;
 for(;uiCount > 0;uiCount--) while(--j); 
}