目录
原理图
程序代码
库函数实现
#include <reg51.h>
#include "delay.h"
#include <intrins.h>
void main()
{ unsigned int i = 0;
unsigned int temp = 0x7f;//0x7f
while(1)
{
// P1=_crol_(0xfe,i);
// i++;
// if(i>7)i=0;
// Delay_ms(500);
P1 = temp;
temp = _crol_(temp,1);
Delay_ms(200);
}
}
移位实现
main.c
#include <reg51.h>
#include "delay.h"
#include <intrins.h>
void main()
{
unsigned int i = 0;
unsigned int temp = 0x01;//0000 0001
while(1) //0000 0010
{
P1=~temp;// 1111 1110
Delay_ms(500);
temp=temp<<1;
i++;
if(i>7)
{
temp=0x01;
i=0;
}
}
}
delay.c
#include"delay.h"
void Delay_ms(unsigned int ms)
{
unsigned int i, j;
for(i=ms;i>0;i--)
{
for(j=124;j>0;j--)
{
}
}
}
数组实现
#include <reg51.h>
#include "delay.h"
#include <intrins.h>
unsigned char LEDBUF[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
void main()
{
unsigned int i = 0;
unsigned int temp = 0x01;//0000 0001
while(1) //0000 0010
{
for(i=0;i<8;i++)
{
P1=LEDBUF[i];
Delay_ms(100);
}
}
}
现象