当前位置: 首页 > news >正文

Deepseek给出的8255显示例程

#include <stdio.h>
#include <conio.h>
#include <dos.h>// 定义8255端口地址 (根据原理图译码确定)
#define PORT_8255_A 0x8000  // PA端口地址
#define PORT_8255_B 0x8001  // PB端口地址
#define PORT_8255_C 0x8002  // PC端口地址
#define PORT_8255_CTRL 0x8003 // 控制寄存器地址// 数码管段码表 (共阴极)
unsigned char seg_codes[] = {0x3F, // 00x06, // 10x5B, // 20x4F, // 30x66, // 40x6D, // 50x7D, // 60x07, // 70x7F, // 80x6F  // 9
};// 延时函数
void delay(unsigned int ms) {for (unsigned int i = 0; i < ms; i++) {for (unsigned int j = 0; j < 1000; j++) {// 空循环延时}}
}// 初始化8255
void init_8255() {// 控制字: 10000001 (0x81)// A口输出, B口输出, C口输出outportb(PORT_8255_CTRL, 0x81);
}// 显示8位数字
void display_numbers() {unsigned char digits[] = {1, 2, 3, 4, 5, 6, 7, 8}; // 要显示的数字while (!kbhit()) {  // 按任意键退出for (int i = 0; i < 8; i++) {// 设置位选 (选中当前位)outportb(PORT_8255_B, ~(1 << i));// 设置段码outportb(PORT_8255_A, seg_codes[digits[i]]);// 延时保持显示delay(1);// 关闭当前位显示 (消除鬼影)outportb(PORT_8255_A, 0x00);}}
}int main() {init_8255();        // 初始化8255display_numbers();  // 显示数字// 程序结束前关闭所有显示outportb(PORT_8255_A, 0x00);  // 关闭段选outportb(PORT_8255_B, 0xFF);  // 关闭位选return 0;
}

相关文章:

  • 微服务常用日志追踪方案:Sleuth + Zipkin + ELK
  • 【Zephyr 系列 3】多线程与调度机制:让你的 MCU 同时干多件事
  • 【数学 逆序对 构造】P12386 [蓝桥杯 2023 省 Python B] 混乱的数组|普及+
  • 深度剖析:AI 建站的现状、局限与未来展望-AI编程建站实战系列预告优雅草卓伊凡
  • demo_win10配置WSL、DockerDesktop环境,本地部署Dify,ngrok公网测试
  • 什么是 CPU 缓存模型?
  • NVMe IP现状扫盲
  • azure devops 系列 - 常用的task
  • MPTCP 聚合吞吐
  • 图论刷题1
  • Qt OpenGL 实现交互功能(如鼠标、键盘操作)
  • 【Linux网络】传输层TCP协议
  • 设计模式——访问者设计模式(行为型)
  • docker运行程序Killed异常排查
  • AlmaLinux OS 10 正式发布:兼容 RHEL 10 带来多项技术革新
  • 页岩油开采的阶段
  • HealthBench医疗AI评估基准:技术路径与核心价值深度分析(下)
  • 计算机视觉---YOLOv6
  • 20250602在荣品的PRO-RK3566开发板的Android13下的uboot启动阶段配置BOOTDELAY为10s
  • neo4j 5.19.0两种基于向量进行相似度查询的方式
  • 黄骅做网站/免费关键词搜索工具
  • 韩国做美食网站有哪些/网站外链平台
  • 网站logo怎么做/百度收录技巧
  • 如何提高网站的收录/学会计哪个培训机构比较正规
  • 高端网站哪个比较好/硬件优化大师下载
  • 个人建站项目/网站生成