/****************************************************************************** * 实验名 : 左右流水灯实验 * 使用的IO : P2 * 实验效果 : 点亮的LED从右边往左边移动,到达左边再往右边移动,依此循环。 * 注意 : ******************************************************************************/ #include<reg51.h> #include<intrins.h> //因为要用到左右移函数,所以加入这个头文件 #define GPIO_LED P2 //将P2口另外取名为GPIO_LED void Delay10ms(unsigned int); //误差 0us /****************************************************************************** * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 ******************************************************************************/ void main(void) { unsigned char n; GPIO_LED=0xfe; while(1) { for(n=0;n<7;n++) //左移7次,这样子就会到达最左边 { GPIO_LED=_crol_(GPIO_LED,1); //将GPIO_LED左移一位 Delay10ms(50); //延时 } for(n=0;n<7;n++) //右移7次,这样子就会到达最右边 { GPIO_LED=_cror_(GPIO_LED,1); //将GPIO_LED右移一位 Delay10ms(50); //延时 } } } /****************************************************************************** * 函数名 : Delay10ms * 函数功能 : 延时函数,延时10ms * 输入 : 无 * 输出 : 无 ******************************************************************************/ void Delay10ms(unsigned int c) //误差 0us { unsigned char a,b; for(;c>0;c--) for(b=38;b>0;b--) for(a=130;a>0;a--); }
|