标题:
学习51单片机流水灯程序经验分享
[打印本页]
作者:
jkla
时间:
2020-3-28 22:04
标题:
学习51单片机流水灯程序经验分享
这几天刚复习了下C51单片机,因为之前接触过(没怎么学)。分享给初学者一个流水的的三种写法:普通式、一般式、调用库函数的方法。代码中调用了左移函数_crol_(a,b)和 右移_cror_(a,b)函数,这两个函数在 intrins.h头文件中。函数中的形参a代表左移或右移的值,b代表左移或右移的位数。下面是代码。
单片机源程序如下:
#include "reg52.h"
#include "intrins.h"
#define led P0
typedef unsigned char u8;
typedef unsigned int u16;
/*
sbit led1 = P0^0;
sbit led2 = P0^1;
sbit led3 = P0^2;
*/
void delay(u16 i)
{
while(i--);
}
void main(void)
{
u8 i;
u8 j;
// led = ~0x01;
// delay(50000);
while(1)
{
/* 最简单的写法
led1 = 0;
delay(50000);
led1 = 1;
delay(50000);
led2 = 0;
delay(50000);
led2 = 1;
delay(50000);
led3 = 0;
delay(50000);
led3 = 1;
delay(50000);
*/
// 中级写法
for(i = 0; i < 8; i++)
{
P0 = ~(0x01<<i); //~的意思按位取反 <<的意思是右移。
delay(50000);
}
for(j = 0; j < 8; j++)
{
P0 = ~(0x80>>j);
delay(50000);
}
//调用库函数实现
/* for(i = 0; i < 7; i++)
{
led = _crol_(led,1);
delay(50000);
}
for(i = 0; i < 7; i++)
{
led = _cror_(led,1);
delay(50000);
} */
}
}
复制代码
所有资料51hei提供下载:
LEDl流水灯.zip
(15.9 KB, 下载次数: 8)
2020-3-28 22:03 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
jkla
时间:
2020-3-29 08:10
注释中的 << 是左移
作者:
jkla
时间:
2020-3-29 08:10
注释中的 << 是左移 >> 这个是右移
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1