一.实验准备
1.Proteus 7 Professional
2.Kevil
二.电路图
三.代码讲解
修改端口
#include<reg51.h>
#define n 100 //设置延迟时间
void delay(unsigned int);
void main() // LED灯只有在 底电平 工作
{
P0 = 0xFE; // P0 = 0xFE --> 1111 1110
// 在单片机中 --> P0.0 端口为 0 其余端口 为 1
while(1)
{
P0 = 0xFE;delay(n);
P0= 0xFD;delay(n);
P0 = 0xff; // P0 = 0xff --> 1111 1111 所有端口 均为1 关闭 LED 灯
P1 = 0xFE;delay(n);
P1 = 0xFD;delay(n);
P0 = 0xff;
P2 = 0xFE;delay(n);
P2 = 0xFD;delay(n);
P0 = 0xff;
P3 = 0xFE;delay(n);
P3 = 0xFD;delay(n);
P0 = 0xff;
}
}
void delay(unsigned int t)
{
unsigned int i;
while(--t)
for(i = 0; i <= 256; i++ );
}
位操作
#include<reg51.h>
#define n 100
sbit LED0 = P0^0; // 给每个端口命名 P0^0 代表端口 P0.0
sbit LED1 = P0^1;
sbit LED2 = P1^0;
sbit LED3 = P1^1;
sbit LED4 = P2^0;
sbit LED5 = P2^1;
sbit LED6 = P3^0;
sbit LED7 = P3^1;
void delay(unsigned int);
void main()
{
LED0 = 0; // 给LED灯一个低电平 点亮LED灯
while(1)
{
LED0 = 0;
delay(n);
LED0 = 1; // 给LED灯一个高电平 关闭LED灯
LED1 = 0;
delay(n);
LED1 = 1;
LED2 = 0;
delay(n);
LED2 = 1;
LED3 = 0;
delay(n);
LED3 = 1;
LED4 = 0;
delay(n);
LED4 = 1;
LED5 = 0;
delay(n);
LED5 = 1;
LED6 = 0;
delay(n);
LED6 = 1;
LED7 = 0;
delay(n);
LED7 = 1;
}
}
void delay(unsigned int t)
{
unsigned int i;
while(--t)
for(i = 0; i <= 256; i++ );
}