1.1闪烁的LED 顺序结构
#include <REG51.H>
sbit LED=P1^0;
unsigned int i;
void main()
{
while(1)
{
P1=0XFE;//1111 1110
for(i=0;i<40000;i++);
P1=0XFD;//1111 1101
for(i=0;i<40000;i++);
P1=0XFB;//1111 1011
for(i=0;i<40000;i++);
P1=0XF7;//1111 0111
for(i=0;i<40000;i++);
P1=0XEF;//1110 1111
for(i=0;i<40000;i++);
P1=0XDF;//1101 1111
for(i=0;i<40000;i++);
P1=0XBF;//1011 1111
for(i=0;i<40000;i++);
P1=0X7F;//0111 1111
for(i=0;i<40000;i++);
}
}
1.2闪烁的LED 左移 右移 移位运算符
#include <REG51.H>
unsigned int i,j;
void main()
{
while(1)
{
// P1=~(0X01<<j); //流水灯左移
// j++;
// if(j>7)
// j=0;
// for(i=0;i<40000;i++);
P1=~(0X80>>j); //流水灯 右移
j++;
if(j>7)
j=0;
for(i=0;i<40000;i++);
}
}
1.3闪烁的LED 软件生成延时函数1ms
#include <REG51.H>
#include <INTRINS.H>
unsigned int i,j;
void delay1ms(int time);
void main()
{
while(1)
{
P1=~(0X80>>j); //流水灯 右移
j++;
if(j>7)
j=0;
delay1ms(1000);
}
}
void delay1ms(int time) //@11.0592MHz
{
unsigned char i, j;
while(time--)
{
_nop_();//需要包含头文件INTRINS.H
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
1.4闪烁的LED 软件生成延时函数1ms 函数封装
#include <REG51.H>
#include "delay.h"
unsigned int i,j;
void main()
{
while(1)
{
P1=~(0X80>>j++); //流水灯 右移
if(j>7)
j=0;
delay1ms(1000);
}
}
1.5闪烁的LED 库函数 循环右移 _cror_(temp,1) 循环左移 _crol_(temp,1)
#include <REG51.H>
#include "delay.h"
#include "INTRINS.H"
unsigned char temp=0X7F;
void main()
{
while(1)
{
P1=temp;
delay1ms(1000);
temp=_cror_(temp,1);
}
}
#include <REG51.H>
#include "delay.h"
#include "INTRINS.H"
unsigned char temp=0XFE;
void main()
{
while(1)
{
P1=temp;
delay1ms(1000);
temp=_crol_(temp,1);
}
}
1.6LED 流水灯 数组法
#include <REG51.H>
#include "delay.h"
#include "INTRINS.H"
unsigned char arr[]={0XFE,0XFD,0XFB,0XF7,0XEF,0XDF,0XBF,0X7F};
void main()
{
unsigned char i;
while(1)
{
for(i=0;i<8;i++)
{
P1=arr[i];
delay1ms(1000);
}
}
}