#include <reg51.h>
// 定义 I/O 引脚
sbit P0_0 = P0^0;
sbit P0_1 = P0^1;
sbit P0_2 = P0^2;
// 延时函数
void delay(unsigned int time) {
unsigned int i, j;
for (i = 0; i < time; i++) {
for (j = 0; j < 1275; j++);
}
}
// 点亮指定的 LED
void charlieplex_led(unsigned char led_num) {
switch (led_num) {
case 0: // 点亮第一个 LED
P0_0 = 1; P0_1 = 0; P0_2 = 1; // 设置引脚电平
break;
case 1: // 点亮第二个 LED
P0_0 = 0; P0_1 = 1; P0_2 = 1;
break;
// 其他 LED 的控制代码...
default:
break;
}
delay(1); // 延时
P0_0 = 0; P0_1 = 0; P0_2 = 0; // 关闭所有 LED
}
void main() {
unsigned char i;
while (1) {
for (i = 0; i < 6; i++) {
charlieplex_led(i);
}
}
} |