1.硬件



2.C程序
cpp
#define ADR_273 0x0200
#define ADR_244 0x0400
#define LED_PORT 0x800
void outp(unsigned int addr, char data)
// 输出一字节到I/O端口
{ __asm
{ mov dx, addr
mov al, data
out dx, al
}
}
char inp(unsigned int addr)
// 从I/O端口输入一字节
{ char result;
__asm
{ mov dx, addr
in al, dx
mov result, al
}
return result;
}
char end_flag[5]={0x55,0x55,0x55,0x55,0x55};
void delay(void)
// 延时函数,使用原有的双重循环延时方式
{
int i;
for(i=0; i<5000; i++);
for(i=0; i<5000; i++);
}
void main(void)
/* 流水灯程序:8位LED轮流点亮,形成流水效果
采用共阳LED,输出0点亮,输出1熄灭 */
{
int i;
unsigned char led_pattern;
// 初始值:1111 1110 (最低位D0=0,点亮第1个LED)
led_pattern = 0xFE;
while (1)
{
// 输出当前模式到LED端口
outp(LED_PORT, led_pattern);
// 延时控制流水速度
delay();
// 循环左移:让点亮的LED向左移动
// 例如: 1111 1110 -> 1111 1101 -> 1111 1011 -> ...
led_pattern = (led_pattern << 1) | (led_pattern >> 7);
// 可选:检测按键退出(如果按下任意键则退出循环)
// if (inp(ADR_244) != 0xFF) break;
}
// 退出时关闭所有LED(输出全1)
// outp(LED_PORT, 0xFF);
}
3.编译

4.下载测试




保存图片
编辑图片
移除物体
提取文字
图片翻译