给以下代码写注释,每行一句#include <reg51.h> #define uchar unsigned char #define uint unsigned int #define LED P0 sbit AN1=P3^0; //实现功能1,循环点亮。 sbit AN2=P3^1; //实现功能2,有规律的闪烁。 sbit AN3=P3^2; //实现功能3,模拟交通灯。 sbit AN4=P3^3; //实现功能4,模拟售货机。 sbit AN5=P3^7; //实现上述四种功能的循环显示 sbit AN6=P3^5; //步进键,实现0.5s -> 1s -> 1.5s ->2s ->0.5s……的步进 uchar code ScanCode[] = //LED灯的位扫描码 {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //亮流水灯 uchar code ScanCode1[] = //LED灯的位扫描码 {0x81,0x82,0x84,0x88,0x90,0xA0,0xC0}; //亮流水灯 void DelayMs(uint n) { uchar j; while(n--) { for(j=0;j<123;j++); } } void function1(uint x) { uint i; for(i=0;i<8;i++) { LED=ScanCode[i]; DelayMs(x); } for(i=0;i<8;i++) { LED=ScanCode[7-i]; DelayMs(x); } } void function2(uint y) { LED=0x05; DelayMs(y); LED=0x0a; DelayMs(y); LED=0xa0; DelayMs(y); LED=0x50; DelayMs(y); } void function3(uint x) { LED=0x7F; DelayMs(x); LED=0x80; DelayMs(x); LED=0x00; DelayMs(x); } void function4(uint x) { uint i; LED=0x80; for(i=0;i<7;i++) { LED=ScanCode1[i]; DelayMs(x); } for(i=0;i<7;i++) { LED=ScanCode1[6-i]; DelayMs(x); } } void main() { while(1) { if(AN1==0) { DelayMs(10); if(AN1==0) function1(100); } else if(AN2==0) { DelayMs(10); if(AN2==0) function2(100); } else if(AN3==0) { DelayMs(10); if(AN3==0) function3(500); } else if(AN4==0) { DelayMs(10); if(AN4==0) function4(100); } else if(AN6==0&&AN1==0) { DelayMs(10); if(AN6==0&&AN1==0) { function1(500); function1(1000); function1(1500); function1(2000); function1(500); } } else if(AN6==0&&AN2==0) { DelayMs(10); if(AN6==0&&AN2==0) { function2(500); function2(1000); function2(1500); function2(2000); function2(500); } } else if(AN6==0&&AN3==0) { DelayMs(10); if(AN6==0&&AN3==0) { function3(500); function3(1000); function3(1500); function3(2000); function3(500); } } else if(AN6==0&&AN4==0) { DelayMs(10); if(AN6==0&&AN4==0) { function4(500); function4(1000); function4(1500); function4(2000); function4(500); } } else if(AN5==0) { DelayMs(10); if(AN5==0) { while(1) { function1(100); function2(100); function3(500); function4(100); } } } } }
时间: 2023-12-02 08:03:25 浏览: 32
// 引入头文件 reg51.h
#include <reg51.h>
// 定义 uchar 为无符号字符类型,uint 为无符号整型
#define uchar unsigned char
#define uint unsigned int
// 定义 LED 为 P0 引脚
#define LED P0
// 定义 AN1 ~ AN6 为 P3 引脚的第 0 ~ 5 位
sbit AN1=P3^0; //实现功能1,循环点亮。
sbit AN2=P3^1; //实现功能2,有规律的闪烁。
sbit AN3=P3^2; //实现功能3,模拟交通灯。
sbit AN4=P3^3; //实现功能4,模拟售货机。
sbit AN5=P3^7; //实现上述四种功能的循环显示
sbit AN6=P3^5; //步进键,实现0.5s -> 1s -> 1.5s ->2s ->0.5s……的步进
// 定义 LED 灯的位扫描码
uchar code ScanCode[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //亮流水灯
uchar code ScanCode1[] = {0x81,0x82,0x84,0x88,0x90,0xA0,0xC0}; //亮流水灯
// 定义延时函数 DelayMs,n 为延时时间(毫秒)
void DelayMs(uint n) {
uchar j;
while(n--) {
for(j=0;j<123;j++);
}
}
// 实现功能1,循环点亮 LED 灯,x 为延时时间
void function1(uint x) {
uint i;
for(i=0;i<8;i++) {
LED=ScanCode[i];
DelayMs(x);
}
for(i=0;i<8;i++) {
LED=ScanCode[7-i];
DelayMs(x);
}
}
// 实现功能2,有规律的闪烁,y 为延时时间
void function2(uint y) {
LED=0x05;
DelayMs(y);
LED=0x0a;
DelayMs(y);
LED=0xa0;
DelayMs(y);
LED=0x50;
DelayMs(y);
}
// 实现功能3,模拟交通灯,x 为延时时间
void function3(uint x) {
LED=0x7F;
DelayMs(x);
LED=0x80;
DelayMs(x);
LED=0x00;
DelayMs(x);
}
// 实现功能4,模拟售货机,x 为延时时间
void function4(uint x) {
uint i;
LED=0x80;
for(i=0;i<7;i++) {
LED=ScanCode1[i];
DelayMs(x);
}
for(i=0;i<7;i++) {
LED=ScanCode1[6-i];
DelayMs(x);
}
}
void main() {
while(1) {
// 实现功能1,循环点亮
if(AN1==0) {
DelayMs(10);
if(AN1==0)
function1(100);
}
// 实现功能2,有规律的闪烁
else if(AN2==0) {
DelayMs(10);
if(AN2==0)
function2(100);
}
// 实现功能3,模拟交通灯
else if(AN3==0) {
DelayMs(10);
if(AN3==0)
function3(500);
}
// 实现功能4,模拟售货机
else if(AN4==0) {
DelayMs(10);
if(AN4==0)
function4(100);
}
// 实现四种功能的循环显示
else if(AN6==0&&AN1==0) {
DelayMs(10);
if(AN6==0&&AN1==0) {
function1(500);
function1(1000);
function1(1500);
function1(2000);
function1(500);
}
}
else if(AN6==0&&AN2==0) {
DelayMs(10);
if(AN6==0&&AN2==0) {
function2(500);
function2(1000);
function2(1500);
function2(2000);
function2(500);
}
}
else if(AN6==0&&AN3==0) {
DelayMs(10);
if(AN6==0&&AN3==0) {
function3(500);
function3(1000);
function3(1500);
function3(2000);
function3(500);
}
}
else if(AN6==0&&AN4==0) {
DelayMs(10);
if(AN6==0&&AN4==0) {
function4(500);
function4(1000);
function4(1500);
function4(2000);
function4(500);
}
}
// 实现四种功能的循环显示
else if(AN5==0) {
DelayMs(10);
if(AN5==0) {
while(1) {
function1(100);
function2(100);
function3(500);
function4(100);
}
}
}
}
}