说明
此实验实现接在P0口的8个LED从左到右循环依次点亮,产生走马灯效果
Proteus仿真
注意:D2-D9的LED分别连接的引脚顺序是P0.0-P0.7
使用到的元器件:
单片机:AT89C51
电容:CAP
极性电容:CAP-ELEC
电阻:RES
LED:LED-GREEN
晶振:CRYSTAL
C51代码
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//延时
void DelayMs(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void main()
{
P0 = 0xfe;//0xfe二进制表示1111 1110,低电平(0)点亮LED
while(1)
{
//_crol_()是#include<intrins.h>中的函数,作用是循环左移,参数1是要左移的值,参数2是要左移的位数
//例如_crol_(0xfe,1),结果就是0xfd(1111 1101),和左移(<<)是不同的
//_cror_()是循环右移
P0 = _crol_(P0,1);//将P0引脚的值循环左移1位
//P0 = _cror_(P0,1);//将P0引脚的值循环右移1位
DelayMs(150);
}
}