本例子中,用库函数实现简单的流水灯操作。
1.可以在protues里面仿真,如下图:
P0口接8个LED,外接上拉电阻到电源。
2.在keil建立工程,编写led_flash.c,程序如下:
/*****************************************************************************
实现从左到右的流水灯
应用_crol_库函数实现,该函数实现字符左旋,包含于intrins.h
***************************************************************************/
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
/***************************************************
延时函数
功能:晶振为12MHz时,延时count个毫秒
参数:count
返回值:void
***************************************************/
void delay1Xms( uint count)
{
uint i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
/*************************************
主函数
无限循环,并实现P0值的左旋
*************************************/
void main(void)
{
P0 = 0xFE;
while(1)
{
delay1Xms(1000); /*延时1秒*/
P0 = _crol_(P0,1); /*用左旋函数实现*/
}
}
3.关于库函数_crol_
函数原型: #include<intrins.h>
unsigned char _crol_(unsigned char c, unsigned char b)
功能说明: 将字符c左旋b位
参数: c 字符
b 旋转位数
返回值: 旋转后的c
--------------------------
参考:
《8051单片机C语言彻底应用》科学出版社 第4章 延时例程