微机原理实践教程(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.下载测试


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

相关推荐
辰域电子7 小时前
STM32项目开源:智能安防与燃气监测系统(代码+原理图+仿真)
stm32·单片机·嵌入式硬件·开源·毕业设计·proteus
无忧.芙桃7 小时前
C++内存管理
c语言·开发语言·c++·青少年编程
Patrick在香港7 小时前
Python 分析香港 AQHI 归档 1644 天:同一天的空气,早上 8 点报 3,下午 5 点报 10
开发语言·python·数据分析·api·restful·数据可视化·开放数据
晴天167 小时前
JavaScript 与 Java 垃圾回收机制对比
java·开发语言·javascript
金金计较.7 小时前
Go语言-2
开发语言·算法·golang
服务器硬件项目经理7 小时前
第14篇_服务器主板上MOSFET的三大应用
运维·服务器·人工智能·单片机·硬件工程·硬件
SamChan907 小时前
Python批量处理PDF踩坑实录:中文编码、字体内嵌、多栏排版与内存占用
python·单片机·ai·pdf·机器翻译
3Q工具箱 - BraggTroy8 小时前
Python + PyInstaller 实战:从零打造 10 个 Windows 桌面小工具(附全部踩坑记录与核心代码)
开发语言·windows·python
计算机编程-吉哥8 小时前
基于机器学习的城市交通拥堵分析与预测平台【计算机毕业设计选题·机器学习·随机森林算法】
hadoop·算法·随机森林·机器学习·课程设计·计算机毕业设计选题·大数据毕业设计选题推荐
Wang's Blog8 小时前
Java框架快速入门: Spring Security+OAuth2之多因子认证逻辑与实体类改造
java·开发语言·spring