微机原理实践教程(C语言篇)---A002流水灯

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.下载测试


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

相关推荐
千里码aicood15 小时前
基于Python的电商数据采集系统(大数据+爬虫)
开发语言·python
_Narcissus_15 小时前
动态规划初探(含完整代码实现)
c语言·数据结构·c++·算法·动态规划·背包问题·最短路径
陈皮波比茶15 小时前
Python项目实战-网络机器人(爬虫)
开发语言·网络·爬虫·python·机器人
Cerman15 小时前
QEMU启动OVMF shell超时分析
c语言·windows·经验分享
NYFEA15 小时前
徕飞 FCA系列全面上新,一站式I/O扩展国产替代方案
单片机·嵌入式硬件
2601_9638701816 小时前
【计算机毕业设计】基于Vue+Spring Boot的助农电商系统的设计与实现
spring boot·后端·课程设计
法哥201216 小时前
用 C++ 控制 CMW100,到底在干什么?
开发语言·c++
QH1392923188016 小时前
NVIDIA H200 H300服务器
运维·服务器·开发语言·网络·信息与通信
XiHongShi201616 小时前
STM32H7 FLASH和SRAM标准例程
stm32·单片机·嵌入式硬件
OPEN-F17 小时前
Python进阶教程:单元测试与代码质量
开发语言·python·单元测试