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

Prj10--8088单板机C语言8259测试(1)

1.原理图

2.Deepseek示例代码

#include <dos.h>
#include <conio.h>
#include <stdio.h>#define PIC1_CMD  0x400   // 命令端口 (A0=0)
#define PIC1_DATA 0x401   // 数据端口 (A0=1)volatile int int_count = 0;  // 中断计数器
void interrupt (*old_isr)(void);  // 原中断向量// 中断服务程序
void interrupt new_isr(void) {int_count++;  // 增加中断计数// 显示中断信息printf("\nIRQ0 Triggered! Count: %d", int_count);// 发送EOI命令outportb(PIC1_CMD, 0x20);
}// 初始化8259
void init_8259(void) {// ICW1: 边沿触发 | 单片 | 需要ICW4outportb(PIC1_CMD, 0x13);// ICW2: 中断向量基址=20houtportb(PIC1_DATA, 0x20);// ICW4: 8086模式 | 正常EOIoutportb(PIC1_DATA, 0x01);// OCW1: 只允许IR0中断 (11111110b)outportb(PIC1_DATA, 0xFE);
}int main(void) {clrscr();printf("8259 Test Running. Press ESC to exit...\n");// 保存原中断向量 (INT 20h)old_isr = getvect(0x20);// 设置新中断向量setvect(0x20, new_isr);// 初始化8259init_8259();// 启用中断enable();// 主循环while(!kbhit() && int_count < 10) {// 等待中断或按键}// 检查是否按ESC退出if(kbhit() && getch() == 0x1B) {printf("\nESC pressed. ");}// 恢复设置disable();setvect(0x20, old_isr);// 屏蔽所有中断outportb(PIC1_DATA, 0xFF);printf("\nProgram terminated. Total interrupts: %d", int_count);return 0;
}

 

 


文章转载自:

http://0MkTiM9e.knqck.cn
http://ZHhJS7Ax.knqck.cn
http://Fz4AuETn.knqck.cn
http://sM1Vgjt2.knqck.cn
http://SLIx0uVU.knqck.cn
http://i1KI5bQf.knqck.cn
http://XcsV58a7.knqck.cn
http://fcpM5B00.knqck.cn
http://UeWQR5cj.knqck.cn
http://3ncvZW1W.knqck.cn
http://a0Sxl23j.knqck.cn
http://Yj5S5VT7.knqck.cn
http://Ly7DUagA.knqck.cn
http://4J4rrshF.knqck.cn
http://x7g4f367.knqck.cn
http://WffVOkGc.knqck.cn
http://x4fnmsoB.knqck.cn
http://9pOs7tmM.knqck.cn
http://HSOqet2o.knqck.cn
http://X9AlqDTE.knqck.cn
http://Pep1PyCQ.knqck.cn
http://u2PX7FcE.knqck.cn
http://02Bcobfj.knqck.cn
http://DPxMwQSK.knqck.cn
http://9CmsTx2T.knqck.cn
http://qcHrgXDk.knqck.cn
http://aUGJOumQ.knqck.cn
http://tuY6um7l.knqck.cn
http://fVw6Ps35.knqck.cn
http://8tUyBNVx.knqck.cn
http://www.dtcms.com/a/229026.html

相关文章:

  • 服务器被攻击了怎么办
  • Java-IO流之字节输入流详解
  • AJ-Report
  • android NDK 的 -> 是什么意思
  • 【开源工具】Python+PyQt5打造智能桌面单词记忆工具:悬浮窗+热键切换+自定义词库
  • 使用 Golang `testing/quick` 包进行高效随机测试的实战指南
  • GitHub 趋势日报 (2025年06月02日)
  • Splitting Items
  • Ubuntu22.04 安装 Miniconda3
  • WINUI——Magewell视频捕捉开发手记
  • 【数据库】安全性
  • 深入解析 Java 中的 synchronized:从使用到底层原理的全面详解
  • 基于Matlab实现LDA算法
  • Java求职者面试:Spring、Spring Boot、Spring MVC与MyBatis技术深度解析
  • 使用glide 同步获取图片
  • C# CallerMemberName特性
  • 功能管理:基于 ABP 的 Feature Management 实现动态开关
  • docker中,容器时间和宿机主机时间不一致问题
  • SpringBoot项目打jar包自定义名称完全指南
  • 02 C语言程序设计之导言
  • 嵌入式学习笔记 - freeRTOS任务栈在初始化以及任务切换时的压栈出栈过程分析
  • OpenEMMA: 打破Waymo闭源,首个开源端到端多模态模型
  • [手写系列]从0到1开发并上线Edge浏览器插件
  • 硬件工程师笔记——555定时器应用Multisim电路仿真实验汇总
  • 【使用】【经验】docker 清理未使用的镜像的命令
  • Ubuntu安装Docker命令清单(以20.04为例)
  • Docker容器使用手册
  • 运维 vm 虚拟机ip设置
  • 解决MyBatis参数绑定中参数名不一致导致的错误问题
  • 数据库OCP专业认证培训