51单片机--实现跑马灯的两种办法

1.通过左移实现跑马灯

#include "reg52.h"
#define LED_PORT P0 //使用宏定义的方式将P0端口定义

typedef unsigned char u8;
typedef unsigned int u16;

void delay_10us(u16 ten_us) //当传入Ten_us=1时,大约延时10us
{
	while(ten_us--);
}

void main()
{
	u8 i=0;
	
	while(1)
	{
		for(i=0;i<8;i++)
		{
			LED_PORT=~(0x01<

关于0xef

51单片机--实现跑马灯的两种办法_第1张图片

 2.通过库函数实现跑马灯

#include "reg52.h"
#include "intrins.h"
#define LED_PORT	P0 //使用宏定义的方式将P0端口定义

typedef unsigned char u8;
typedef unsigned int u16;

void delay_10us(u16 ten_us) //当传入Ten_us=1时,大约延时10us
{
	while(ten_us--);
}

void main()
{
	u8 i=0;
	LED_PORT=~0x01; //写成 0xfe 也可以 保证最低位为0即可
	delay_10us(50000);
	while(1)
	{
		for(i=0;i<7;i++)
		{
				LED_PORT=_crol_(LED_PORT,1); //最后一位的0往前移一位时,第一位移到最后一位,转圈循环
				delay_10us(50000);			//i=0 1111 1101 
											//i=1 1111 1011
											//i=2 1111 0111
											//……
		}
		for(i=0;i<7;i++)
		{
			LED_PORT=_cror_(LED_PORT,1); //右移同理
			delay_10us(50000);
		}
	}
}

关于左移右移函数(在intrins.h文件里的第21、24行)

 

你可能感兴趣的:(stm51,51单片机,嵌入式硬件,单片机)