本例子中,用库函数实现简单的流水灯操作。
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章 延时例程